模型信息
项目 内容 模型名称 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 适配
环境要求
组件 版本 CANN 8.5.1 PyTorch 2.9.0 torch_npu 2.9.0 FunASR 1.3.1 ModelScope 1.35.3 soundfile >=0.12.1 Python 3.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 推理结果对比
指标 CPU NPU 结论 识别文本 温度调高 温度调高 ✅ 完全一致 Encoder输出最大差值 - 9.94e-04 ✅ < 0.1% 精度判定 baseline PASS ✅ 通过
精度验证标准
文本级精度 : CPU与NPU输出文本完全一致
张量级精度 : Encoder输出最大绝对值差异 < 1e-3 (0.1%)
结论 : NPU推理结果与CPU基线完全一致,精度损失 < 1%,通过验证
性能基准
测试配置
测试音频: 4.08s 中文指令词音频 (16kHz)
测试轮次: 20 次 (含3次预热)
Batch Size: 1
Benchmark 结果
指标 CPU NPU 加速比 平均推理时间 0.0366s 0.0170s 2.15x 中位推理时间 0.0363s 0.0170s 2.14x 最小推理时间 0.0355s 0.0165s 2.15x 最大推理时间 0.0441s 0.0175s 2.52x 标准差 0.0018s 0.0003s 6.00x RTF (Real-Time Factor) 0.009 0.004 2.25x
性能分析
吞吐提升 : NPU 推理速度是 CPU 的 2.15 倍
稳定性 : NPU 推理时间标准差 (0.0003s) 远低于 CPU (0.0018s),性能更稳定
实时率 : NPU RTF 为 0.004,远低于实时要求 (RTF < 1.0),完全满足流式 ASR 场景
首推理开销 : 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 CPU ARM aarch64 OS Linux 5.10.0 CANN Ascend-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 #昇腾 #语音识别