panhg/wenet-u2pp-conformer-wenetspeech-onnx-offline-20220506
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

WeNet U2++ Conformer (WenetSpeech) - 昇腾 NPU 适配

模型简介

基于 ModelScope 上的 ONNX 模型 manyeyes/wenet-u2pp-conformer-wenetspeech-onnx-offline-20220506 进行昇腾 NPU 适配。

  • 原始模型:ModelScope
  • 模型架构:U2++ Conformer (Encoder + CTC + Attention Decoder)
  • 任务类型:自动语音识别 (ASR)
  • 语言:中文 (zh-cn)
  • 词汇量:5,538 tokens
  • 采样率:16kHz
  • 输入特征:80-dim fbank + global CMVN

模型文件

文件大小说明
encoder.onnx328 MBConformer 编码器
decoder.onnx150 MBAttention 解码器
ctc.onnx11 MBCTC 线性层
tokens.txt48 KB词表 (5,538 tokens)
test_wavs/-测试音频 (16kHz)
inference.py22 KBNPU/CPU 双后端推理脚本
evaluate_accuracy.py10 KBNPU vs CPU 精度评测脚本
global_cmvn.npz1.2 KB全局 CMVN 统计量

环境要求

  • Python 3.10+
  • 昇腾 NPU (Ascend 910) + CANN 8.5.1
  • torch_npu
  • onnxruntime
  • onnx2torch

NPU 适配方案

采用 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_npu

快速开始

安装依赖

pip install onnx onnxruntime onnx2torch soundfile numpy torch torch_npu

下载模型

pip install modelscope
modelscope download --model manyeyes/wenet-u2pp-conformer-wenetspeech-onnx-offline-20220506 --local_dir ./wenet_model

CPU 推理

cd wenet_model
python3 inference.py --test_dir test_wavs --backend cpu --beam_size 10

NPU 推理

cd wenet_model
python3 inference.py --test_dir test_wavs --backend npu --beam_size 10

精度验证

python3 evaluate_accuracy.py --cmvn global_cmvn.npz --output accuracy_verification.json

精度验证结果 (NPU vs CPU)

指标值阈值状态
平均 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.wav13.1s正是因为存在绝对正义所以我们接受现实的相对正议...
1.wav5.1s啊这是第一种第二种叫嗯与欧维斯欧维斯什么意思
2.wav4.6s蒋友伯被拍到带着女儿出游
3.wav4.2s周望君就落实控物价
4.wav31.0s每当新年的钟声敲响的时候我总会闭起眼睛静静地许愿...

引用

  • WeNet: https://github.com/wenet-e2e/wenet
  • WenetConformerAsr: https://github.com/manyeyes/WenetConformerAsr
  • 原始模型: https://www.modelscope.cn/models/manyeyes/wenet-u2pp-conformer-wenetspeech-onnx-offline-20220506