本文档记录 ERes2NetV2 中文说话人验证模型在昇腾 NPU (Ascend 910B3) 上的迁移适配与精度验证结果。
ERes2NetV2 是达摩院提出的高效说话人识别网络,在 ERes2Net 基础上改进,通过多尺度残差连接增强特征表达能力。模型输入 Fbank 声学特征,输出 192 维说话人嵌入向量,可用于说话人确认、说话人日志等任务。
相关获取地址:
参考文档:
| 组件 | 版本 |
|---|---|
CANN | 8.5.1 |
torch | 2.8.0 |
torch_npu | 2.8.0.post4 |
torchaudio | 2.8.0 |
modelscope | 1.37.0 |
soundfile | latest |
Ascend 910B3,单卡推理[B, T, 80] Fbank 特征[B, 192] L2 归一化嵌入向量conda create -n iic_speech_eres2netv2 python=3.10 -y
conda activate iic_speech_eres2netv2
pip install torch==2.8.0 torch_npu==2.8.0.post4 torchaudio==2.8.0 \
-i https://mirrors.huaweicloud.com/repository/pypi/simple \
--trusted-host mirrors.huaweicloud.com
pip install modelscope soundfile numpy \
sortedcontainers simplejson addict datasets pyarrow Pillow \
-i https://mirrors.huaweicloud.com/repository/pypi/simple \
--trusted-host mirrors.huaweicloud.commodelscope download --model damo/iic_speech_eres2netv2_sv_zh-cn_16k-common \
--local_dir ./iic_speech_eres2netv2_sv_zh-cn_16k-commonpython inference.py --wav1 speaker1.wav --wav2 speaker2.wav --device npufrom inference import run_verification
result = run_verification("speaker1.wav", "speaker2.wav", device="npu")
print(f"相似度: {result['similarity']:.4f}")
print(f"同一说话人: {result['is_same_speaker']}")python evaluate.py验证结果:
测试条件:Fbank 特征 [1, 100, 80]。
| 指标 | CPU | NPU (Ascend 910B3) |
|---|---|---|
| embedding_model 耗时 | 2651 ms | 24 ms |
| 加速比 | — | 110x |
对比 CPU (PyTorch) 与 NPU (torch_npu) 在相同 Fbank 特征输入下 ERes2NetV2 嵌入模型的输出向量。
| 指标 | 数值 |
|---|---|
| 嵌入维度 | [1, 192] |
| 鲁棒平均相对误差 | 0.351% |
| Cosine 相似度 | 0.999999 |
| 精度要求 | 平均相对误差 < 1% |
| 精度评测 | 通过 |
pipeline.model.embedding_model 获取 ERes2NetV2 模型