panhg/funasr-onnx-small
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

FunASR-ONNX-Small Ascend NPU 适配

模型说明

本模型是 yikshing/funasr-onnx-small 的Ascend NPU 适配版本,是一款基于 Paraformer 的轻量级自动语音识别(ASR)模型,针对华为 Ascend NPU 推理进行了优化。

  • 原始模型:yikshing/funasr-onnx-small
  • 架构:Paraformer(并行 Transformer)
  • 编码器:SANM 编码器(40 个块,4 头,320 维)
  • 解码器:ParaformerSANM 解码器(12 个块,4 头)
  • 预测器:CIF Predictor V2
  • 词汇表:8,359 个 token(中文 + 英文)
  • 量化:INT8(ONNX 模型 model_quant.onnx)
  • 采样率:16kHz

NPU 适配

环境

组件版本
CANN8.5.1
torch_npu2.9.0.post1
PyTorch2.9.0
ONNX Runtime1.26.0
funasr_onnx0.4.1
NPUAscend 910B4 x2

适配策略

NPU 适配通过异构计算加速推理流程:

  1. 音频预处理(NPU):利用 torch_npu 张量运算加速 FBank 特征提取、LFR 和 CMVN 归一化
  2. 模型推理(CPU):ONNX Runtime 在 CPU 上执行量化后的 Paraformer 模型(CANN 执行提供程序待支持)
  3. 令牌解码(NPU):通过 torch_npu 在 NPU 上加速 Argmax、令牌查找和后处理

精度验证

指标结果
文本匹配度(CPU 与 NPU)100%
Argmax 错误率0.00%
最大值相对误差0.00%
平均相对误差0.00%
精度测试通过(< 1%)

快速开始

1. 安装依赖项

pip install modelscope funasr_onnx jieba torch_npu

2. 下载模型

modelscope download --model yikshing/funasr-onnx-small

3. 运行 NPU 推理

python inference.py --audio /path/to/audio.wav

4. 运行精度评估

python accuracy_eval.py

推理脚本

from inference import ParaformerNPU

model = ParaformerNPU(
    model_dir='/path/to/model',
    device_id=0,
    quantize=True,
)
result = model('audio.wav')
print(result)

性能

音频时长特征提取模型推理解码总计
2s175ms20ms401ms2158ms
5s18ms854ms2ms875ms
10s-116ms1ms~120ms

注:首次推理包含模型加载开销,后续推理速度更快。

文件结构

funasr_ascend_npu/
├── inference.py       # NPU-adapted inference script
├── accuracy_eval.py   # Accuracy & performance evaluation
└── README.md          # This file

已知限制

  1. CPU 上的 ONNX 模型:量化后的 ONNX 模型通过 ONNX Runtime 在 CPU 上运行。完整的 NPU 加速需要 CANN Execution Provider(开发中)或基于 ATC 的 OM 模型转换。

  2. 动态形状支持:Paraformer 模型对批处理大小和序列长度采用动态形状。ATC 转换需要正确的形状配置。

  3. 循环操作:CIF 预测器使用 ONNX 的 Loop 操作,当前的 NPU 转换工具链不直接支持此类操作。

路线图

  • 为 ONNX Runtime 集成 CANN Execution Provider
  • 基于 ATC 的 ONNX 到 OM 模型转换
  • 完整的 NPU 模型推理(编码器 + 解码器 + 预测器)
  • 批处理推理优化
  • 流式语音识别支持

引用

@article{gao2022paraformer,
  title={Paraformer: Fast and Accurate Parallel Transformer for Non-autoregressive End-to-End Speech Recognition},
  author={Gao, Zhifu and Zhang, Shiliang and Lei, Ming and McLoughlin, Ian},
  journal={arXiv preprint arXiv:2206.08317},
  year={2022}
}

许可证

Apache License 2.0 - 与原始模型相同。