X
Xiaoxy510/speaker-diarization-3.1-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

speaker-diarization-3.1 on Ascend NPU

1. 简介

本文档记录 speaker-diarization-3.1 在 Ascend NPU 环境的适配与验证结果。

speaker-diarization-3.1 是 pyannote.audio 官方发布的说话人分离流水线模型,由以下组件构成:

  • segmentation: pyannote/segmentation-3.0 - 语音活动检测与说话人边界分割
  • embedding: pyannote/wespeaker-voxceleb-resnet34-LM - 说话人 embedding 提取

本适配重点验证 segmentation 模型在 NPU 上的推理能力。由于 pyannote.audio 依赖 torchaudio 进行音频加载,而 torchaudio CUDA 版本与 NPU 存在兼容性问题,完整流水线暂无法在 NPU 上端到端运行。

相关获取地址:

  • 模型下载地址(HuggingFace):https://huggingface.co/pyannote/speaker-diarization-3.1
  • 模型下载地址(ModelScope):https://modelscope.cn/models/pyannote/speaker-diarization-3.1
  • pyannote.audio 官方仓库:https://github.com/pyannote/pyannote-audio

2. 验证环境

组件版本
pyannote.audio3.1.1
pyannote-core5.1.0
torch2.9.0
torch-npu2.9.0.post1+gitee7ba04
torchaudio2.9.0
  • NPU:1 逻辑卡
  • 模型路径:${MODEL_DIR} 或 pyannote/speaker-diarization-3.1
  • Python:3.10

3. 环境配置

3.1 创建 Conda 环境

conda create -n pyannote-npu python=3.10
conda activate pyannote-npu

3.2 安装依赖(华为源)

pip install torch==2.9.0 torchvision==0.20.0 torchaudio==2.9.0 --index-url https://repo.huaweicloud.com/pytorch-wheels/torch_npu

pip install torch-npu==2.9.0.post1+gitee7ba04 --index-url https://repo.huaweicloud.com/pypi/simple

pip install pyannote.audio==3.1.1 pyannote-core==5.1.0 --index-url https://repo.huaweicloud.com/pypi/simple

4. 适配方法

4.1 核心适配点

  1. 设备迁移:将模型发送至 NPU 设备

    pipeline.to(torch.device("npu:0"))
  2. Segmentation 模型独立推理:验证 segmentation 组件可在 NPU 独立运行

  3. 限制说明:完整流水线依赖 torchaudio 进行音频加载与处理,当前 torchaudio CUDA 依赖可能导致部分功能不可用

4.2 适配代码示例

from pyannote.audio import Pipeline, Model
import torch

pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization-3.1")

if torch.npu.is_available():
    pipeline.to(torch.device("npu:0"))

diarization = pipeline("audio.wav")

5. 使用方式

5.1 推理脚本

python inference.py \
    --model-dir ${MODEL_DIR} \
    --device npu:0 \
    --warmup 3 \
    --benchmark

参数说明:

参数说明默认值
--model-dir模型路径${MODEL_DIR}
--device运行设备npu:0
--warmup预热次数0
--benchmark启用性能测试False

5.2 评测脚本

python eval.py

精度测试内容:

  • Segmentation 模型加载测试
  • Segmentation 前向传播测试
  • NPU 性能基准测试

6. 评测结果

6.1 精度评测

指标数值
评测工具eval.py
评测内容Segmentation 模型加载与前向传播
状态PASS

说明:完整流水线精度评测受限于 torchaudio CUDA 依赖,暂无法在 NPU 上端到端运行。当前仅验证 segmentation 组件在 NPU 上的正确性。

6.2 性能参考

指标数值
测试场景Segmentation 模型推理
输入1 x 16000 tensor
预热3 次
评测次数20 次平均
NPU 单次推理时间~xx ms

说明:性能数据因 NPU 型号和环境配置而异,实际部署时建议进行针对性压测。

6.3 官方 Benchmark(参考)

数据集DER%FA%Miss%Conf%
AISHELL-412.23.84.44.0
AliMeeting24.44.410.010.0
AMI (headset)18.83.69.55.7
AMI (array)22.43.811.27.5
AVA-AVD50.010.815.723.4
DIHARD 321.76.28.17.3
MSDWild25.35.88.011.5
REPERE7.81.82.63.5
VoxConverse11.34.13.43.8

7. 注意事项

  1. torchaudio CUDA 依赖限制:pyannote.audio 依赖 torchaudio 进行音频加载,torchaudio 的 CUDA 版本与 NPU 存在兼容性问题。如需完整流水线功能,建议在 CPU 模式下加载音频后手动传递 waveform 至 NPU。

  2. Pipeline 分组件使用:可将 segmentation 和 embedding 组件分别加载,单独验证各组件在 NPU 上的运行状态。

  3. 音频格式要求:输入音频需为 16kHz 采样率、单声道格式,模型会自动进行重采样和下混。

  4. 内存占用:完整流水线模型占用内存较大,部署时需注意 NPU 显存容量。