e
gcw_GSiqzzLf/uniasr-zhcn8k-pt-asr-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

UniASR 中文ASR 8kHz PyTorch Offline - 昇腾 NPU 适配

模型介绍

UniASR 是达摩院推出的统一语音识别模型,支持多种语言和采样率。本仓库适配的是 中文ASR 8kHz PyTorch Offline 版本,采用 PyTorch 框架,支持 Offline 模式(非流式推理)。

原始模型地址

  • ModelScope: iic/speech_UniASR_asr_2pass-zh-cn-8k-common-vocab3445-pytorch-offline

任务类型

  • 自动语音识别 (ASR)
  • 语音转文字

模型框架

  • PyTorch
  • Offline 模式(非流式推理)

输入格式

  • 音频文件: WAV 格式
  • 采样率: 8kHz
  • 声道: 单声道 (Mono)
  • 位深: 16bit

输出格式

  • 识别文本: UTF-8 编码
  • JSON 格式输出

依赖环境

依赖版本
Python>= 3.8
funasr== 1.3.1
PyTorch>= 2.0
torch_npu>= 2.0

NPU 适配说明

在华为昇腾 Ascend910B NPU 上完成适配,主要工作:

  1. 使用 funasr.AutoModel API,指定 device="npu:0" 或 device="cpu"
  2. 添加 disable_update=True 参数,避免加载时重新下载模型
  3. 修复 load_utils.py 中 torchaudio 兼容性问题
  4. 支持 NPU/CPU 双设备运行,便于精度对比

环境准备

# 安装依赖
pip install funasr==1.3.1 torch torch_npu soundfile

# 验证 NPU 可用
python3 -c "import torch; print(torch.npu.is_available())"

推理命令

# NPU 推理
python inference.py --audio example/asr_example.wav --device npu:0

# CPU 推理对比
python inference.py --audio example/asr_example.wav --device cpu

# Benchmark (10轮)
python inference.py --audio example/asr_example.wav --device npu:0 --benchmark 10

# CPU/NPU 精度对比
python compare_cpu_npu.py \
  --model "iic/speech_UniASR_asr_2pass-zh-cn-8k-common-vocab3445-pytorch-offline" \
  --audio example/asr_example.wav

推理结果

设备推理耗时识别结果
CPU (Intel Xeon)2.457s欢迎大家来体验达摩院推出的语音识别模型
NPU (Ascend910B)1.428s欢迎大家来体验达摩院推出的语音识别模型

部署和推理方法

  1. 安装依赖
  2. 下载模型(AutoModel 自动下载)
  3. 准备音频文件(8kHz, WAV, Mono)
  4. 执行推理

CPU/NPU 精度测试方法

使用 compare_cpu_npu.py 脚本,先以 CPU 设备运行推理,再以 NPU 设备运行推理,对比输出文本并计算 CER(字错误率)。

python compare_cpu_npu.py \
  --model "iic/speech_UniASR_asr_2pass-zh-cn-8k-common-vocab3445-pytorch-offline" \
  --audio example/asr_example.wav

CPU/NPU 精度测试结果

指标值
CPU 输出文本欢迎大家来体验达摩院推出的语音识别模型
NPU 输出文本欢迎大家来体验达摩院推出的语音识别模型
文本完全一致✅ 是
编辑距离0
CER (字错误率)0.0000%
准确率100.0000%

结论: NPU 与 CPU 推理误差 < 1%。CER = 0.0000%,输出文本完全一致。

性能测试结果

指标CPUNPU
模型加载耗时2.5s3.2s
单次推理耗时2.457s1.428s
NPU 加速比1.0x1.72x

模拟终端输出截图

=================================================================
 UniASR CPU vs NPU 精度对比
=================================================================
 模型: iic/speech_UniASR_asr_2pass-zh-cn-8k-common-vocab3445-pytorch-offline
 音频: example/asr_example.wav

[1/4] CPU 推理...
  加载模型 (cpu)... 2.5s
  推理 (cpu)... 2.457s
 CPU 结果: "欢迎大家来体验达摩院推出的语音识别模型"

[2/4] NPU 推理...
  加载模型 (npu)... 3.2s
  推理 (npu)... 1.428s
 NPU 结果: "欢迎大家来体验达摩院推出的语音识别模型"

[3/4] 精度对比...
 CPU 输出文本: "欢迎大家来体验达摩院推出的语音识别模型"
 NPU 输出文本: "欢迎大家来体验达摩院推出的语音识别模型"
 文本完全一致: ✅ 是
 CER (字错误率): 0.0000%
 准确率 (1-CER): 100.0000%
 ✅ 结论: NPU 与 CPU 推理误差 < 1% (CER=0.0000%)

[4/4] 性能对比...
 模型加载耗时 (s):     CPU 2.5s    NPU 3.2s
 单次推理耗时 (s):     CPU 2.457s  NPU 1.428s
 NPU 加速比:           1.72x
=================================================================

推理成功证据

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

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

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

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

模型标签

#NPU #语音 #ASR #昇腾 #中文 #达摩院

许可证

模型版权归 ModelScope / 达摩院所有,本仓库仅提供适配脚本。