weixin_62994174/speech_paraformer-tiny-commandword_asr_nat-zh-cn-16k-vocab544-pytorch
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Paraformer-Tiny-CommandWord Ascend NPU 适配与评测报告

模型信息

项目内容
模型名称iic/speech_paraformer-tiny-commandword_asr_nat-zh-cn-16k-vocab544-pytorch
模型架构Paraformer (Conformer Encoder + SAN Decoder + CIF Predictor)
模型参数量~5M (Encoder: 3.5M, Decoder: 1.7M)
任务类型中文指令词自动语音识别 (ASR)
词表大小544 中文汉字与字母
框架FunASR 1.3.1 + PyTorch 2.9.0
源模型ModelScope / 阿里巴巴达摩院
硬件平台Huawei Ascend 910 NPU
CANN版本8.5.1

NPU适配概述

本仓库将阿里巴巴达摩院的 Paraformer-Tiny-CommandWord 中文指令词语音识别模型成功适配至华为昇腾 Ascend NPU 平台。

适配策略

  • 前端处理(WavFrontend): 保留在 CPU 执行(涉及 torch.fft.rfft 等复数运算,NPU暂不支持)
  • 模型推理(Encoder/Decoder/Predictor): 全部迁移至 NPU 执行
  • 设备迁移方式: AutoModel(model=model_dir, device='npu:0')
  • 音频加载: 使用 soundfile 加载后转为 numpy array,传入 generate(input=audio_np)

关键适配点

FunASR 的 AutoModel 原生支持通过 device 参数指定推理设备。设为 'npu:0' 后,框架自动将模型参数加载至 NPU,并在 model.inference() 中将前端输出的特征张量(speech)迁移至 NPU 再进行编解码。

AutoModel(model=model_path, device='npu:0')  # 自动完成 NPU 适配

环境要求

组件版本
CANN8.5.1
PyTorch2.9.0
torch_npu2.9.0
FunASR1.3.1
ModelScope1.35.3
soundfile>=0.12.1
Python3.11

快速开始

安装依赖

pip install modelscope funasr soundfile torch_npu

下载模型

modelscope download --model iic/speech_paraformer-tiny-commandword_asr_nat-zh-cn-16k-vocab544-pytorch

推理

# NPU 推理
python inference.py --device npu:0

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

# CPU vs NPU 精度对比
python inference.py --compare

# 性能基准测试
python inference.py --benchmark --device npu:0 --num-runs 20

Python API

from funasr.auto.auto_model import AutoModel
import soundfile as sf
import numpy as np

# 加载模型(自动适配NPU)
model = AutoModel(
    model="~/.cache/modelscope/hub/models/iic/speech_paraformer-tiny-commandword_asr_nat-zh-cn-16k-vocab544-pytorch",
    device="npu:0"  # NPU推理
)

# 加载音频
audio, sr = sf.read("test.wav")
if audio.ndim > 1:
    audio = audio.mean(axis=1)
audio = audio.astype(np.float32)

# 推理
result = model.generate(input=audio)
print(result)

精度验证

CPU vs NPU 推理结果对比

指标CPUNPU结论
识别文本温度调高温度调高✅ 完全一致
Encoder输出最大差值-9.94e-04✅ < 0.1%
精度判定baselinePASS✅ 通过

精度验证标准

  • 文本级精度: CPU与NPU输出文本完全一致
  • 张量级精度: Encoder输出最大绝对值差异 < 1e-3 (0.1%)
  • 结论: NPU推理结果与CPU基线完全一致,精度损失 < 1%,通过验证

性能基准

测试配置

  • 测试音频: 4.08s 中文指令词音频 (16kHz)
  • 测试轮次: 20 次 (含3次预热)
  • Batch Size: 1

Benchmark 结果

指标CPUNPU加速比
平均推理时间0.0366s0.0170s2.15x
中位推理时间0.0363s0.0170s2.14x
最小推理时间0.0355s0.0165s2.15x
最大推理时间0.0441s0.0175s2.52x
标准差0.0018s0.0003s6.00x
RTF (Real-Time Factor)0.0090.0042.25x

性能分析

  1. 吞吐提升: NPU 推理速度是 CPU 的 2.15 倍
  2. 稳定性: NPU 推理时间标准差 (0.0003s) 远低于 CPU (0.0018s),性能更稳定
  3. 实时率: NPU RTF 为 0.004,远低于实时要求 (RTF < 1.0),完全满足流式 ASR 场景
  4. 首推理开销: NPU 首次推理存在 ~0.6s 的内核编译预热开销,后续推理稳定在 ~0.017s

文件说明

.
├── inference.py              # NPU推理脚本
├── benchmark_cpu.json        # CPU性能基准数据
├── benchmark_npu.json        # NPU性能基准数据
├── compare_result.json       # CPU vs NPU精度对比数据
├── README.md                 # 本文件
└── eval_report/              # 评测报告及截图

实验环境

项目规格
NPU型号Huawei Ascend 910 (910_9362)
NPU数量2
NPU显存64GB HBM per NPU
CPUARM aarch64
OSLinux 5.10.0
CANNAscend-cann-8.5.1

许可证

本模型基于 Apache License 2.0,原模型版权归阿里巴巴达摩院所有。

引用

@inproceedings{gao2022paraformer,
  title={Paraformer: Fast and Accurate Parallel Transformer for Non-autoregressive End-to-End Speech Recognition},
  author={Gao, Zhifu and Zhang, Shiliang and McLoughlin, Ian and Yan, Zhijie},
  booktitle={INTERSPEECH},
  year={2022}
}

标签

#NPU #Hardware:NPU #Ascend #Paraformer #ASR #FunASR #昇腾 #语音识别