基于 ModelScope 上的 ONNX 模型 manyeyes/wenet-u2pp-conformer-wenetspeech-onnx-offline-20220506 进行昇腾 NPU 适配。
| 文件 | 大小 | 说明 |
|---|---|---|
encoder.onnx | 328 MB | Conformer 编码器 |
decoder.onnx | 150 MB | Attention 解码器 |
ctc.onnx | 11 MB | CTC 线性层 |
tokens.txt | 48 KB | 词表 (5,538 tokens) |
test_wavs/ | - | 测试音频 (16kHz) |
inference.py | 22 KB | NPU/CPU 双后端推理脚本 |
evaluate_accuracy.py | 10 KB | NPU vs CPU 精度评测脚本 |
global_cmvn.npz | 1.2 KB | 全局 CMVN 统计量 |
采用 ONNX → onnx2torch → torch_npu 转换链路:
ONNX Model ──onnx2torch──▶ PyTorch Model ──.to('npu')──▶ NPU Model
encoder.onnx encoder_torch encoder_npu
ctc.onnx ctc_torch ctc_npu
decoder.onnx decoder_torch decoder_npupip install onnx onnxruntime onnx2torch soundfile numpy torch torch_npupip install modelscope
modelscope download --model manyeyes/wenet-u2pp-conformer-wenetspeech-onnx-offline-20220506 --local_dir ./wenet_modelcd wenet_model
python3 inference.py --test_dir test_wavs --backend cpu --beam_size 10cd wenet_model
python3 inference.py --test_dir test_wavs --backend npu --beam_size 10python3 evaluate_accuracy.py --cmvn global_cmvn.npz --output accuracy_verification.json| 指标 | 值 | 阈值 | 状态 |
|---|---|---|---|
| 平均 Encoder 相对误差 | 0.022% | < 1% | ✅ |
| 平均 CTC 相对误差 | 0.003% | < 1% | ✅ |
| 平均 Decoder 相对误差 | 0.001% | < 1% | ✅ |
| 最大 Encoder 相对误差 | 0.040% | < 1% | ✅ |
| 最大 CTC 相对误差 | 0.004% | < 1% | ✅ |
| 最大 Decoder 相对误差 | 0.002% | < 1% | ✅ |
结论:NPU 适配精度通过,所有模块输出差异 < 0.04%,远低于 1% 阈值。
| 音频 | 时长 | 参考文本 |
|---|---|---|
| 0.wav | 13.1s | 正是因为存在绝对正义所以我们接受现实的相对正议... |
| 1.wav | 5.1s | 啊这是第一种第二种叫嗯与欧维斯欧维斯什么意思 |
| 2.wav | 4.6s | 蒋友伯被拍到带着女儿出游 |
| 3.wav | 4.2s | 周望君就落实控物价 |
| 4.wav | 31.0s | 每当新年的钟声敲响的时候我总会闭起眼睛静静地许愿... |