本仓库是 iic/speech_UniASR_asr_2pass-pt-16k-common-vocab1617-tensorflow1-offline 在华为昇腾 Ascend910B NPU 上的适配版本。
UniASR 是达摩院推出的多语言统一语音识别模型,采用双通道(2-pass)解码架构,兼顾实时性与精度。本模型专为 葡萄牙语(Portuguese) 语音识别设计,词汇表大小为 1617。
| 特性 | 说明 |
|---|---|
| 架构 | UniASR 2-pass (CTC + Attention) |
| 语言 | 葡萄牙语 (Portuguese) |
| 采样率 | 16kHz |
| 词汇表 | 1617 tokens |
| 原始框架 | PyTorch |
| 组件 | 版本要求 |
|---|---|
| Python | 3.10+ |
| torch | ≥2.2.0 |
| torch_npu | 匹配 torch 版本 |
| funasr | 1.3.1+ |
| Ascend NPU | 910B / 910B2 / 910ProB |
pip install funasr torch torch_npu soundfile omegaconf创建 inference.py:
import os
import torch
import soundfile as sf
from funasr.auto.auto_model import AutoModel
# 模型路径(自动从 ModelScope 下载)
model_dir = "iic/speech_UniASR_asr_2pass-pt-16k-common-vocab1617-tensorflow1-offline"
# 加载模型(NPU)
model = AutoModel(
model=model_dir,
vad_model=False,
punc_model=False,
spk_model=False,
disable_update=True,
device="npu:0", # 使用 Ascend910B NPU
)
# 加载音频
wav_path = "test.wav" # 16kHz 单声道
data, sr = sf.read(wav_path)
# 推理
result = model.generate(input=data)
print(result[0]["text"])# NPU 推理
python inference.py
# CPU 推理(对比)
python inference.py --device cpu以下测试基于 asr_example.wav(10.22s,16kHz,葡萄牙语),在 Ascend910B NPU vs x86 CPU 上进行。
| 平台 | 识别结果 | 是否匹配 |
|---|---|---|
| NPU (910B) | CO@@ELHONE@@TO é PROFESSORDEHIST ó RIADASART... | ✅ |
| CPU | CO@@ELHONE@@TO é PROFESSORDEHIST ó RIADASART... | ✅ |
精度完全一致(100%) ✅
| 指标 | NPU (Ascend910B) | CPU (x86) | 提升 |
|---|---|---|---|
| 推理时间 | 2.124s | 5.220s | 2.46x |
| RTF | 0.208 | 0.511 | - |
| 音频时长 | 10.22s | 10.22s | - |
| 适配项 | 状态 |
|---|---|
| 模型加载 (NPU) | ✅ 成功 |
| 权重映射 | ✅ All keys matched |
| 前向传播 | ✅ 正常 |
| Beam Search 解码 | ✅ 正常 |
| BPE 后处理 | ✅ 正常 |
| 精度对齐 | ✅ 100% |
| 性能加速 | ✅ 2.46x |
├── inference.py # NPU/CPU 推理脚本
├── README.md # 本文档
├── requirements.txt # 依赖列表
└── NPU_ADAPTATION.md # 适配技术细节(可选)本仓库仅包含适配脚本和文档,模型权重版权归 ModelScope / 达摩院所有。使用本模型请遵守原始模型的许可证协议。