d
dingdang666/WeSpeaker-ResNet34-LM-MLX-NPU
模型介绍文件和版本Pull Requests讨论分析

WeSpeaker-ResNet34-LM on Ascend NPU

1. 简介

本文档记录 WeSpeaker-ResNet34-LM 在昇腾 NPU(Ascend 910B3)环境的适配部署与精度验证结果。

WeSpeaker ResNet34-LM 是说话人嵌入提取模型(~6.6M 参数),基于 ResNet34 架构,输入 80 维 log-mel 声学特征,输出 256 维 L2 归一化的说话人嵌入向量,可用于说话人识别和验证。

相关地址:

  • 权重下载地址(HuggingFace):https://huggingface.co/pyannote/wespeaker-voxceleb-resnet34-LM
  • 适配代码仓库:https://gitcode.com/dingdang666/WeSpeaker-ResNet34-LM-MLX-NPU

参考文档:

  • https://github.com/wenet-e2e/wespeaker

2. 验证环境

组件版本
python3.11.x
torch2.10.0+cpu
torch_npu2.10.0
safetensors0.7.0
CANN8.5.1
  • NPU:Ascend 910B3
  • 模型路径:/path/to/model
  • 框架:PyTorch + 自定义模型代码

3. 模型信息

项目值
模型架构ResNet34 + Statistics Pooling
参数量~6.6M
嵌入维度256(L2 归一化)
输入特征80-dim log-mel 频谱
输入尺寸(1, 1, 80, 80)
权重格式safetensors
原始框架PyTorch (MLX 转换)
预训练数据VoxCeleb

4. Conda 环境安装

conda create -n wespeaker python=3.11 -y
conda activate wespeaker
pip install torch==2.10.0 torchvision==0.25.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install torch_npu==2.10.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install safetensors --index-url https://repo.huaweicloud.com/repository/pypi/simple/

5. 推理执行

# NPU 推理(默认)
python3 inference.py --model_path /path/to/WeSpeaker-ResNet34-LM-MLX

# CPU 推理
python3 inference.py --model_path /path/to/WeSpeaker-ResNet34-LM-MLX --device cpu

# 精度与性能评测
python3 benchmark.py --model_path /path/to/WeSpeaker-ResNet34-LM-MLX

评测结果日志将输出到 log.txt。

6. 参数说明

脚本参数说明默认值
inference.py--model_path模型路径必需
--device运行设备 (npu:0 / cpu)npu:0
benchmark.py--model_path模型路径必需
--npu_deviceNPU 设备 IDnpu:0
--num_warmup预热轮数3

7. 精度评测

评测方法

随机 mel 频谱输入(80×80),对比 CPU(FP32)和 NPU(FP32)输出的 256 维嵌入向量。

精度数据

指标数值
向量级相对误差0.083373%
余弦相似度0.9999997020
SNR61.42 dB
最大绝对误差1.41e-04
平均绝对误差4.14e-05

判定结论

指标实测值阈值状态
向量级相对误差0.08%< 1%PASS

8. 性能数据

操作耗时
CPU 推理时间(FP32)0.23 s
NPU 推理时间(FP32,3轮预热后)0.36 s
加速比 (CPU / NPU)0.65 x(小模型,NPU 调度开销占比大)

9. 注意事项

  1. 模型权重从 MLX 格式转换,4D 卷积权重为 channels-last 格式,需转置为 channels-first。
  2. 输入为 (batch, 1, n_mels=80, n_frames=80) 的 mel 频谱张量。
  3. 输出为 L2 归一化的 256 维说话人嵌入向量。
  4. 自定义模型架构已内嵌在脚本中(ResNet34 + Statistics Pooling),无需额外依赖。
  5. 权重文件(.safetensors)不包含在适配仓库中,需单独下载。
下载使用量0