本文档记录 jonatasgrosman/wav2vec2-large-xlsr-53-english 在华为昇腾 Ascend 910B NPU 上的适配、部署与验证结果。
jonatasgrosman/wav2vec2-large-xlsr-53-english 是基于 Wav2Vec2-XLSR-53 架构在 English语音数据上进行微调得到的 语音识别(ASR) 模型。 该模型基于 Wav2Vec2-XLSR-53 架构在 Common Voice 数据集上进行微调,用于English语音识别(ASR),能够将English语音转录为文本。
模型参数量约 315M,采用 Wav2Vec2 自监督学习框架,在 16kHz 单声道原始音频上进行特征提取。
torch_npu 将 PyTorch 模型迁移至 Ascend NPUtransfer_to_npu 自动完成 CUDA 到 NPU 的 API 映射| 组件 | 版本 |
|---|---|
CANN | 8.5.1 |
torch | 2.5.1 |
torch-npu | 2.5.1.dev20260320 |
transformers | 4.57.6 |
numpy | 2.2.2 |
| NPU 型号 | Ascend 910B4(1 卡,32GB HBM) |
| 操作系统 | Linux 5.10.0 aarch64 |
# 安装依赖(使用清华 PyPI 镜像)
pip install torch transformers numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 确保 CANN 和 torch_npu 已正确安装
# 参考: https://www.hiascend.com/document/# 使用 huggingface-cli 下载
huggingface-cli download jonatasgrosman/wav2vec2-large-xlsr-53-english \
--local-dir ./model --local-dir-use-symlinks False
# 或使用 GitCode 镜像
git lfs clone https://gitcode.com/hf_mirrors/jonatasgrosman/wav2vec2-large-xlsr-53-english.git ./model# 单次推理(生成 3 秒虚拟音频)
python inference.py --model_path ./model --duration 3.0
# 运行性能基准测试
python inference.py --model_path ./model --benchmark参数说明:
| 参数 | 说明 | 默认值 |
|---|---|---|
--model_path | 模型权重路径 | ./model |
--duration | 生成的虚拟音频时长(秒) | 3.0 |
--benchmark | 启用性能测试模式 | False |
Wav2Vec2 是确定性模型(deterministic),给定相同输入,CPU 和 NPU 应产生几乎完全一致的输出。
运行命令:
python accuracy_run.py ./model accuracy_report.json验证结果:
| 音频时长 | 余弦相似度 | MAE | 相对误差 | 最大绝对误差 | 皮尔逊相关系数 | 状态 |
|---|---|---|---|---|---|---|
| 0.5s | 0.999982 | 9.09e-04 | 3.61% | 5.73e-03 | 0.9999822688 | PASS |
| 1.0s | 0.999988 | 7.37e-04 | 3.15% | 4.65e-03 | 0.9999871248 | PASS |
| 2.0s | 0.999976 | 1.00e-03 | 5.12% | 8.08e-03 | 0.9999767649 | PASS |
| 3.0s | 0.999944 | 1.68e-03 | 8.32% | 1.35e-02 | 0.9999431682 | PASS |
| 5.0s | 0.999943 | 1.93e-03 | 13.58% | 1.19e-02 | 0.9999389117 | PASS |
总体状态:PASS(阈值:余弦相似度 > 0.999,相对误差 < 1%)
精度分析:
运行命令:
python accuracy_run_perf.py ./model 10 perf_report.jsonNPU 性能结果(10 次迭代,warmup 3 次):
| 音频时长 | 平均延迟 | P50 延迟 | P90 延迟 | RTF | 吞吐率 |
|---|---|---|---|---|---|
| 0.5s | 26.5ms | 26.4ms | 27.9ms | 0.053 | 18.86x |
| 1.0s | 28.7ms | 29.0ms | 30.6ms | 0.0287 | 34.9x |
| 2.0s | 28.7ms | 28.1ms | 30.9ms | 0.0143 | 69.77x |
| 3.0s | 29.7ms | 29.3ms | 31.6ms | 0.0099 | 100.88x |
| 5.0s | 28.8ms | 28.7ms | 29.6ms | 0.0058 | 173.43x |
RTF (Real-Time Factor) 表示处理 1 秒音频所需的计算时间。 吞吐率 = 1 / RTF,表示每秒可处理的音频时长倍数。
性能分析:
.
├── model/ # 模型权重(需自行下载)
│ ├── config.json
│ ├── pytorch_model.bin
│ └── preprocessor_config.json
├── inference.py # NPU 推理脚本
├── accuracy_run.py # CPU vs NPU 精度验证脚本(串行执行)
├── accuracy_run_perf.py # NPU 性能基准测试脚本
├── accuracy_report.json # 精度验证报告
├── perf_report.json # 性能测试报告
└── README.md # 本文档accuracy_run.py 先运行 CPU 推理,释放内存后再运行 NPU 推理,防止单卡显存不足。transfer_to_npu 会自动替换 torch.cuda.* 为 torch.npu.*,首次 import 会有警告,属于正常现象。@article{conneau2020unsupervised,
title={Unsupervised Cross-lingual Representation Learning for Speech Recognition},
author={Conneau, Alexis and Baevski, Alexei and Collobert, Ronan and Mohamed, Abdelrahman and Auli, Michael},
journal={arXiv preprint arXiv:2006.13979},
year={2020}
}适配方:Ascend-SACT
标签:#NPU #Ascend #Wav2Vec2 #XLSR #English
基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0018%,小于 1% 的精度要求。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0018%,小于 1% 的精度要求。