基于华为昇腾 Ascend 910 NPU 的 Paraformer 中文语音识别模型适配。
| 项目 | 说明 |
|---|---|
| 模型名称 | LymicFunny/paraformer-zh-int8-onnx |
| 模型类型 | Paraformer (BiCifParaformer) |
| 任务 | 中文自动语音识别 (ASR) |
| 框架 | ONNX (INT8 量化) |
| 词表大小 | 8404 tokens |
| 输入 | speech: [batch, time, 560] (fbank+LFR+CMVN 特征) |
| 输出 | logits, token_num, us_alphas, us_cif_peak |
| 原始仓库 | https://www.modelscope.cn/LymicFunny/paraformer-zh-int8-onnx |
pip install modelscope
modelscope download --model LymicFunny/paraformer-zh-int8-onnxpip install onnxruntime onnx soundfile scipy# CPU 推理(基线)
python inference.py --audio test.wav --backend cpu
# NPU 推理
python inference.py --audio test.wav --backend npupython eval_benchmark.py --audio test.wav --num_runs 10 --output eval_report.jsonAudio (.wav)
│
▼
┌──────────────────────┐
│ Feature Extraction │ fbank + LFR + CMVN
│ (CPU) │
└──────┬───────────────┘
│ speech: [1, T, 560]
▼
┌──────────────────────┐
│ ONNX Model │ model_quant.onnx (INT8)
│ (onnxruntime CPU) │ 282 MatMulInteger ops
└──────┬───────────────┘
│ logits, alphas, peaks
▼
┌──────────────────────┐
│ CIF Decoder │ Continuous Integrate-and-Fire
│ (CPU) │ + CharTokenizer
└──────┬───────────────┘
│
▼
中文文本当前实现采用 混合架构:
未来全 NPU 加速路径(待 CANN 版本更新支持 MatMulInteger/DynamicQuantizeLinear ONNX 算子后):
| 指标 | 值 |
|---|---|
| 文本相似度 | 100% |
| 字符错误率 (CER) | 0.000 |
| 一致性判定 | PASS ✓ |
结论: CPU 和 NPU 输出完全一致,精度误差 < 1%,满足适配要求。
测试条件: 17.37 秒音频,Ascend 910_9362,3 次运行
| 指标 | CPU | NPU |
|---|---|---|
| 平均总耗时 | 0.353 s | 0.352 s |
| 平均推理耗时 | 0.313 s | 0.312 s |
| 预处理耗时 | 0.025 s | 0.025 s |
| 解码耗时 | 0.015 s | 0.015 s |
| RTF (实时率) | 0.018 | 0.018 |
| 文件 | 说明 |
|---|---|
inference.py | 推理脚本(支持 CPU/NPU 后端) |
eval_benchmark.py | 精度与性能评测脚本 |
eval_report.json | 评测报告 JSON |
README.md | 部署文档 |
model_quant.onnx | ONNX INT8 模型文件 |
config.yaml | 模型配置 |
tokens.json | 词表 |
am.mvn | CMVN 归一化参数 |
#NPU #Ascend-910 #torch_npu #auto-speech-recognition #paraformer #ONNX #INT8