本文档记录 WeSpeaker-ResNet34-LM 在昇腾 NPU(Ascend 910B3)环境的适配部署与精度验证结果。
WeSpeaker ResNet34-LM 是说话人嵌入提取模型(~6.6M 参数),基于 ResNet34 架构,输入 80 维 log-mel 声学特征,输出 256 维 L2 归一化的说话人嵌入向量,可用于说话人识别和验证。
相关地址:
参考文档:
| 组件 | 版本 |
|---|---|
python | 3.11.x |
torch | 2.10.0+cpu |
torch_npu | 2.10.0 |
safetensors | 0.7.0 |
CANN | 8.5.1 |
Ascend 910B3/path/to/modelPyTorch + 自定义模型代码| 项目 | 值 |
|---|---|
| 模型架构 | ResNet34 + Statistics Pooling |
| 参数量 | ~6.6M |
| 嵌入维度 | 256(L2 归一化) |
| 输入特征 | 80-dim log-mel 频谱 |
| 输入尺寸 | (1, 1, 80, 80) |
| 权重格式 | safetensors |
| 原始框架 | PyTorch (MLX 转换) |
| 预训练数据 | VoxCeleb |
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/# 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。
| 脚本 | 参数 | 说明 | 默认值 |
|---|---|---|---|
inference.py | --model_path | 模型路径 | 必需 |
--device | 运行设备 (npu:0 / cpu) | npu:0 | |
benchmark.py | --model_path | 模型路径 | 必需 |
--npu_device | NPU 设备 ID | npu:0 | |
--num_warmup | 预热轮数 | 3 |
随机 mel 频谱输入(80×80),对比 CPU(FP32)和 NPU(FP32)输出的 256 维嵌入向量。
| 指标 | 数值 |
|---|---|
| 向量级相对误差 | 0.083373% |
| 余弦相似度 | 0.9999997020 |
| SNR | 61.42 dB |
| 最大绝对误差 | 1.41e-04 |
| 平均绝对误差 | 4.14e-05 |
| 指标 | 实测值 | 阈值 | 状态 |
|---|---|---|---|
| 向量级相对误差 | 0.08% | < 1% | PASS |
| 操作 | 耗时 |
|---|---|
| CPU 推理时间(FP32) | 0.23 s |
| NPU 推理时间(FP32,3轮预热后) | 0.36 s |
| 加速比 (CPU / NPU) | 0.65 x(小模型,NPU 调度开销占比大) |
(batch, 1, n_mels=80, n_frames=80) 的 mel 频谱张量。.safetensors)不包含在适配仓库中,需单独下载。