e
gcw_GSiqzzLf/wenet-u2pp-conformer-aishell-online-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

WeNet U2++ Conformer AISHELL ASR (在线版) - 昇腾 NPU 适配

模型介绍

本模型是基于 WeNet 框架训练的 U2++ Conformer 端到端语音识别在线模型,使用 AISHELL-1 中文普通话数据集训练。模型导出为 ONNX 格式,支持流式语音识别。

  • 任务类型:自动语音识别 (ASR / Automatic Speech Recognition)
  • 模型架构:U2++ Conformer (12 层 Encoder + CTC + Attention Decoder)
  • 输入:80 维 FBank 特征
  • 输出:中文文本(4233 个汉字 + 特殊标记)

原始模型地址

  • ModelScope: manyeyes/wenet-u2pp-conformer-aishell-onnx-online-20210601

模型框架

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

输入格式

输入形状说明
chunk[1, T, 80]音频 FBank 特征
offset[]偏移量
att_cache[12, 4, 0, 128]注意力缓存(初始为空)
cnn_cache[12, 1, 256, 7]CNN 缓存(初始为零)

输出格式

输出形状说明
output[1, T', 256]Encoder 输出
probs[1, T', 4233]CTC 概率分布
score[N, L, 4233]Decoder 得分

依赖环境

依赖版本要求
Python>= 3.9
torch>= 2.0.0
torch_npu>= 2.0.0
onnx2torch>= 1.5.0
onnxruntime>= 1.15.0
torchaudio>= 2.0.0
soundfile>= 0.12.0
numpy>= 1.21.0
modelscope>= 1.0.0

NPU 适配说明

本模型通过以下方式完成昇腾 NPU 适配:

  1. 使用 onnx2torch 将 ONNX 模型转换为 PyTorch 模型
  2. 利用 torch_npu 将模型及数据迁移到昇腾 NPU 设备
  3. 在 NPU 上完成 Encoder + CTC Decoder 推理
  4. 与 CPU 推理结果进行精度对比验证

适配流水线: ONNX 格式 → onnx2torch 转换 → PyTorch 模型 → .npu() → NPU 推理

环境准备

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

推理命令

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

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

# CPU/NPU 精度对比
python3 compare_cpu_npu.py

推理结果

使用 AISHELL 测试音频进行推理(16kHz 采样率,中文普通话):

音频文件CPU 推理结果NPU 推理结果匹配
0.wav正是因为存在绝对症...正是因为存在绝对症...✓
1.wav日第加重焦恩与欧外斯外斯人日第加重焦恩与欧外斯外斯人✓
2.wav蒋友伯被拍到带着女儿出游蒋友伯被拍到带着女儿出游✓
3.wav周望军就落实控物价周望军就落实控物价✓
4.wav每当青年的中身敲响了时候...每当青年的中身敲响了时候...✓

CPU/NPU 精度测试结果

编码器输出对比

音频余弦相似度平均相对误差最大绝对误差结论
0.wav1.0000000.497%3.61e-03PASS
1.wav1.0000000.302%2.58e-03PASS
2.wav1.0000000.192%1.42e-03PASS
3.wav1.0000000.141%4.28e-03PASS
4.wav1.0000000.244%5.56e-03PASS

CTC 概率输出对比

音频余弦相似度平均相对误差最大绝对误差结论
0.wav1.0000000.009%4.64e-02PASS
1.wav1.0000000.008%2.02e-02PASS
2.wav1.0000000.005%2.11e-02PASS
3.wav1.0000000.004%6.23e-02PASS
4.wav1.0000000.007%4.81e-02PASS

结论:NPU 与 CPU 推理结果误差 < 1%,精度满足要求。

性能测试结果

音频CPU 推理时间NPU 推理时间加速比
0.wav3.859s4.423s0.87x
1.wav3.374s3.115s1.08x
2.wav3.278s3.221s1.02x
3.wav3.260s3.114s1.05x
4.wav5.298s4.035s1.31x

模拟终端输出截图

终端输出截图

推理成功证据

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

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

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

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

模型标签

  • #+NPU
  • #+语音
  • #+语音识别
  • #+ASR
  • #+WeNet
  • #+Conformer
  • #+昇腾
  • #+AISHELL
  • #+中文语音识别
  • #+在线
  • #+ONNX