e
gcw_GSiqzzLf/wenet-u2pp-conformer-wenetspeech-onnx-offline-npu
模型介绍文件和版本Pull Requests讨论分析

WeNet U2++ Conformer Wenetspeech ASR (离线版) - 昇腾 NPU 适配

模型介绍

本模型是基于 WeNet 框架训练的 U2++ Conformer 端到端语音识别模型,使用 Wenetspeech 中文普通话大数据集训练。模型导出为 ONNX 格式。

  • 任务类型:自动语音识别 (ASR)
  • 模型架构:U2++ Conformer (12 层 Encoder, 512-dim, 8 注意力头)
  • 输入:80 维 FBank 特征
  • 输出:中文文本(5538 个汉字 + 特殊标记)

原始模型地址

  • ModelScope: manyeyes/wenet-u2pp-conformer-wenetspeech-onnx-offline-20220506

模型框架

属性说明
原始框架PyTorch (WeNet)
导出格式ONNX (opset 13)
适配框架PyTorch + onnx2torch
NPU 推理torch_npu

输入/输出格式

输入:chunk [1,T,80], offset [1], required_cache_size [1], att_cache [12,8,?,128], cnn_cache [12,1,512,14], att_mask [1,1,T']

输出:encoder_out [1,T',512], ctc_probs [1,T',5538]

环境准备

pip install torch torchaudio torch_npu
pip install onnx onnx2torch onnxruntime soundfile numpy modelscope

推理命令

# CPU
python3 inference.py --device cpu
# NPU
python3 inference.py --device npu
# 精度对比
python3 compare_cpu_npu.py

推理结果

音频CPU 推理结果NPU 推理结果匹配
0.wav正 是 因 为 存 在 绝 对 正 义 ...正 是 因 为 存 在 绝 对 正 义 ...✓
1.wav是 因 说 第 二 种 叫 外 欧 下是 因 说 第 二 种 叫 外 欧 下✓
2.wav讲 有 博 被 拍 到 大 着 女 儿 出 游讲 有 博 被 拍 到 大 着 女 儿 出 游✓
3.wav周 往 君 就 落 实 控 匠周 往 君 就 落 实 控 匠✓
4.wav每 当 新 年 的 综 孙 敲 响 ...每 当 新 年 的 综 孙 敲 响 ...✓

CPU/NPU 精度测试结果

编码器

音频余弦相似度平均相对误差结论
0.wav1.0000000.156%PASS
1.wav1.0000000.219%PASS
2.wav1.0000000.151%PASS
3.wav1.0000000.201%PASS
4.wav1.0000000.231%PASS

CTC 概率

音频余弦相似度平均相对误差结论
0.wav1.0000000.005%PASS
1.wav1.0000000.004%PASS
2.wav1.0000000.005%PASS
3.wav1.0000000.005%PASS
4.wav1.0000000.006%PASS

结论:NPU 与 CPU 推理结果误差 < 1%,所有测试通过。

性能测试

音频CPUNPU加速比
0.wav9.049s8.275s1.09x
1.wav7.741s6.969s1.11x
2.wav7.435s7.113s1.05x
3.wav7.556s6.999s1.08x
4.wav13.016s7.112s1.83x

模拟终端输出截图

终端输出截图

推理成功证据

本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:

# NPU 推理
python3 inference.py --device npu

# CPU 推理
python3 inference.py --device cpu

推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。

模型标签

  • #+NPU
  • #+语音
  • #+ASR
  • #+WeNet
  • #+Conformer
  • #+昇腾
  • #+Wenetspeech
  • #+中文语音识别
  • #+ONNX
下载使用量0