Paraformer-large 语音识别模型在华为昇腾 Ascend NPU 上的适配部署。
原始模型: manyeyes/paraformer-large-zh-yue-en-onnx-offline-dengcunqin-20240805
Paraformer-large 是达摩院推出的非自回归端到端语音识别模型,支持中文、粤语和英语多语种识别。本仓库提供在华为昇腾 Ascend 910 NPU 上的适配推理方案。
| 项目 | 规格 |
|---|---|
| NPU | Ascend 910 / 910B |
| CANN | 8.5.1+ |
| torch_npu | 2.9.0+ |
| Python | 3.11+ |
| 显存 | ~4 GB HBM |
# 安装依赖
pip install torch torch_npu funasr modelscope scipy onnx onnxruntime
# 下载模型(ONNX格式)
modelscope download --model manyeyes/paraformer-large-zh-yue-en-onnx-offline-dengcunqin-20240805 --local_dir ./model
# 或使用 FunASR PyTorch 格式(自动下载)
python -c "from funasr import AutoModel; AutoModel(model='iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch')"# 单文件推理
python inference.py --device npu --input audio.wav
# 批量推理
python inference.py --device npu --input_dir ./test_wavs/
# CPU 推理(基线)
python inference.py --device cpu --input audio.wavfrom inference import load_model, infer
# 加载 NPU 模型
model = load_model("npu")
# 推理
text, elapsed = infer(model, "audio.wav", device="npu")
print(f"识别结果: {text}")
print(f"耗时: {elapsed:.3f}s")# 运行完整评测
python evaluate.py --test_dir ./model/test_wavs --output report.json| 测试文件 | CPU 结果 | NPU 结果 | 匹配 |
|---|---|---|---|
| 0.wav | 欢迎大家来体验达摩院推出的语音识别模型 | 欢迎大家来体验达摩院推出的语音识别模型 | ✓ |
| 1.wav | 欢迎大家来体验达摩院推出的语音识别模型 | 欢迎大家来体验达摩院推出的语音识别模型 | ✓ |
| 2.wav | 有某人知道跟钟天马街起点去家 | 有某人知道跟钟天马街起点去家 | ✓ |
| 3.wav | 绿是阳春烟景大块文章的底色四月的林峦更是绿的鲜活秀媚诗意盎然 | 绿是阳春烟景大块文章的底色四月的林峦更是绿的鲜活秀媚诗意盎然 | ✓ |
精度结论: NPU 与 CPU 输出完全一致,字符级误差 < 1%。
| 测试文件 | CPU 延迟 | NPU 延迟 | 加速比 |
|---|---|---|---|
| 0.wav (5.5s) | 1.130s | 0.484s | 2.3x |
| 1.wav (5.5s) | 1.120s | 0.485s | 2.3x |
| 2.wav (6.0s) | 1.211s | 0.481s | 2.5x |
| 3.wav (8.5s) | 1.568s | 0.480s | 3.3x |
| 平均 | 1.257s | 0.483s | 2.6x |
性能结论: NPU 推理平均加速 2.6 倍,推理延迟稳定在 0.48s 左右。
paraformer-npu/
├── inference.py # NPU/CPU 推理脚本
├── evaluate.py # 精度与性能评测脚本
├── README.md # 本文件(部署文档)
├── eval_results.json # 评测结果(JSON)
├── evaluation_report.json # 评测报告(JSON)
├── cpu_baseline.json # CPU 基线数据
└── model/ # ONNX 模型文件
├── model.onnx # FP32 ONNX 模型 (870MB)
├── model.int8.onnx # INT8 量化模型 (225MB)
├── config.yaml # 模型配置
├── tokens.json # Token 词表
├── vocab.json # 词汇表
└── test_wavs/ # 测试音频
├── 0.wav
├── 1.wav
├── 2.wav
└── 3.wav.npu() 将模型参数迁移至 Ascend NPUModel: Paraformer-large
Task: Automatic Speech Recognition (ASR)
Languages: zh-CN, zh-YUE, en
Framework: FunASR + PyTorch + torch_npu
Precision: FP32
Input: 16kHz Mono WAV
Output: Chinese/English Text
Hardware: Ascend 910 NPUApache License 2.0