本仓库是 lukeewin01/paraformer-large-sichuan-offline 模型的华为昇腾 NPU 适配版本,由 AtomGit 社区 托管,基于 FunASR + torch_npu 实现在 Ascend 910 上的推理部署。
模型介绍
Paraformer 是达摩院语音团队提出的一种高效的非自回归端到端语音识别框架。本模型在 iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch 的基础上,使用 205 小时四川话数据集进行微调,实现对四川方言的高精度语音识别。
NPU 适配说明
| 项目 | 详情 |
|---|
| 基础模型 | iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch |
| 微调模型 | lukeewin01/paraformer-large-sichuan-offline |
| 推理框架 | FunASR 1.3.1 + PyTorch 2.9.0 |
| NPU 支持 | torch_npu 2.9.0.post1 |
| CANN 版本 | CANN 8.5.1 |
| 适配硬件 | Atlas 800T A2 (Ascend 910) |
| 适配方式 | FunASR AutoModel device="npu:0" 原生适配 |
| 精度 | NPU vs CPU 输出完全一致 (100%) |
环境要求
- Python 3.11+
- CANN 8.5.RC1 及以上
- Ascend 910 NPU
- ffmpeg (可选,用于音频加载;无 ffmpeg 时自动使用 scipy)
依赖安装
pip install funasr modelscope torch_npu scipy numpy
快速开始
1. 下载模型
cd paraformer-large-sichuan-offline
modelscope download --model lukeewin01/paraformer-large-sichuan-offline --local_dir ./model
2. 运行推理
python inference.py --audio <your_audio.wav>
参数说明:
| 参数 | 说明 | 默认值 |
|---|
--model_dir | 模型目录路径 | ./model |
--audio | 输入音频文件 (16kHz WAV) | 必填 |
--benchmark | 运行性能基准测试 | False |
--verify_precision | 验证 NPU vs CPU 精度 | False |
--use_itn | 启用逆文本正则化 | False |
3. 推理示例
from funasr import AutoModel
import scipy.io.wavfile as wf
import numpy as np
model = AutoModel(
model="./model",
disable_update=True,
device="npu:0",
ncpu=4,
)
# 加载音频
sr, audio = wf.read("audio.wav")
if audio.dtype != np.float32:
audio = audio.astype(np.float32)
# 推理
result = model.generate(input=audio, cache={}, use_itn=False, batch_size_s=60)
print(result[0]["text"])
性能评估
测试环境
| 项目 | 配置 |
|---|
| NPU | Ascend 910 x2 |
| CANN | 8.5.1 |
| Python | 3.11.14 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
| 测试音频 | 3秒, 16kHz, 单声道 WAV |
NPU 性能指标
| 指标 | 数值 |
|---|
| 模型加载时间 | 8.44s |
| 平均延迟 | 460.96ms |
| P50 延迟 | 459.86ms |
| P90 延迟 | 464.90ms |
| P99 延迟 | 473.51ms |
| RTF (实时率) | 0.154 |
| 吞吐量 | 2.17 req/s |
CPU 基线对比
| 指标 | NPU | CPU | 加速比 |
|---|
| 平均延迟 | 460.96ms | 679.11ms | 1.47x |
| RTF | 0.154 | 0.226 | 1.47x |
| 吞吐量 | 2.17 req/s | 1.47 req/s | 1.47x |
| 模型加载 | 8.44s | 2.36s | 0.28x |
精度验证
| 指标 | 结果 |
|---|
| NPU 输出 | 与 CPU 完全一致 |
| 字符匹配率 | 100% |
| 精度判断 | ✅ PASS (< 1% 误差) |
仓库结构
paraformer-large-sichuan-offline/
├── model/ # 模型文件目录
│ ├── model.pt # 模型权重
│ ├── config.yaml # 模型配置
│ ├── tokens.json # 词表
│ ├── seg_dict # 分词词典
│ ├── am.mvn # 均值方差归一化
│ └── configuration.json # 模型元信息
├── inference.py # NPU 推理脚本
├── evaluate.py # 精度/性能评测脚本
├── evaluation_results.json # 评测结果数据
└── README.md # 本文档
评测执行
# 运行完整评测(精度 + 性能)
python evaluate.py
评测脚本将自动完成:
- NPU 性能基准测试(20 轮,含预热)
- CPU 性能基线测试(20 轮,含预热)
- NPU vs CPU 精度验证
- 生成 evaluation_results.json
注意事项
- 本模型使用 16kHz 采样率单声道 WAV 音频
- 该模型针对四川方言优化,普通话识别建议使用原始 iic 模型
- 当前开源版本训练至 3 epoch,完整 50 epoch 版本请联系 lukeewin01
- 若环境中无 ffmpeg,推理脚本将自动使用 scipy 加载音频
引用
#NPU #Ascend #Speech-Recognition #Paraformer #四川话 #FunASR #PyTorch
license: apache-2.0