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

UniASR 英文ASR 16k Online - 昇腾 NPU 适配

模型介绍

UniASR 是达摩院推出的统一语音识别模型,支持多种语言和采样率。本仓库适配的是 英文ASR 16k Online 版本,采用 TensorFlow1 (通过 PyTorch 封装) 框架,支持 Online 模式(流式推理)。

原始模型地址

  • ModelScope: iic/speech_UniASR_asr_2pass-en-16k-common-vocab1080-tensorflow1-online

任务类型

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

模型框架

  • TensorFlow1 (通过 PyTorch 封装)
  • Online 模式(流式推理)

输入格式

  • 音频文件: WAV 格式
  • 采样率: 16kHz
  • 声道: 单声道 (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-en-16k-common-vocab1080-tensorflow1-online" \
  --audio example/asr_example.wav

推理结果

设备推理耗时识别结果
CPU (Intel Xeon)4.61she tried to think how it could be
NPU (Ascend910B)4.337she tried to think how it could be

部署和推理方法

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

CPU/NPU 精度测试方法

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

python compare_cpu_npu.py \
  --model "iic/speech_UniASR_asr_2pass-en-16k-common-vocab1080-tensorflow1-online" \
  --audio example/asr_example.wav

CPU/NPU 精度测试结果

指标值
CPU 输出文本he tried to think how it could be
NPU 输出文本he tried to think how it could be
文本完全一致✅ 是
编辑距离0
CER (字错误率)0.0000%
准确率100.0000%

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

性能测试结果

指标CPUNPU
模型加载耗时7.7s8.5s
单次推理耗时4.61s4.337s
NPU 加速比1.0x1.06x

模拟终端输出截图

=================================================================
 UniASR CPU vs NPU 精度对比
=================================================================
 模型: iic/speech_UniASR_asr_2pass-en-16k-common-vocab1080-tensorflow1-online
 音频: example/asr_example.wav

[1/4] CPU 推理...
  加载模型 (cpu)... 7.7s
  推理 (cpu)... 4.61s
 CPU 结果: "he tried to think how it could be"

[2/4] NPU 推理...
  加载模型 (npu)... 8.5s
  推理 (npu)... 4.337s
 NPU 结果: "he tried to think how it could be"

[3/4] 精度对比...
 CPU 输出文本: "he tried to think how it could be"
 NPU 输出文本: "he tried to think how it could be"
 文本完全一致: ✅ 是
 CER (字错误率): 0.0000%
 准确率 (1-CER): 100.0000%
 ✅ 结论: NPU 与 CPU 推理误差 < 1% (CER=0.0000%)

[4/4] 性能对比...
 模型加载耗时 (s):     CPU 7.7s    NPU 8.5s
 单次推理耗时 (s):     CPU 4.61s  NPU 4.337s
 NPU 加速比:           1.06x
=================================================================

推理成功证据

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

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

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

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

模型标签

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

许可证

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