panhg/speech_UniASR_asr_2pass-vi-16k-common-vocab1001-pytorch-offline
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

UniASR 越南语语音识别 - 昇腾 NPU 适配

ModelScope NPU Verified Accuracy Framework

模型概述

UniASR 是一款双 pass 端到端语音识别模型,通过单一编码器-解码器架构实现流式与非流式语音识别的统一。本版本为越南语变体,包含 1001 个子词单元,已完成华为昇腾 NPU 推理的适配与验证。

属性值
原始模型iic/speech_UniASR_asr_2pass-vi-16k-common-vocab1001-pytorch-offline
框架FunASR 1.3.1 + PyTorch 2.x
语言越南语 (vi)
采样率16 kHz
词汇量~1002 个字符级 tokens
架构SANM 编码器 + FSMN-SCAMA 解码器 + CIF 预测器
前端80 维 fbank + LFR (lfr_m=7, lfr_n=6) → 560 维特征
NPU 兼容性昇腾 910B / 910C (CANN 8.5.1+)

NPU 适配状态

检查项状态详情
模型加载通过完整 state_dict 在 NPU 上加载成功
推理正确性通过输出与 CPU 完全一致
字符准确率100.00%与 CPU 基线相比错误率为 0%
性能1.59 倍加速NPU 持续性能对比 CPU
完整性检查通过端到端流水线验证通过

硬件要求

组件最低配置推荐配置
NPU昇腾 910B昇腾 910B / 910C
CANN8.5.18.5.1+
CPU 内存4 GB8 GB
NPU 内存8 GB16 GB
磁盘2 GB5 GB

环境搭建

1. 安装 CANN 和 torch-npu

# Install CANN 8.5.1 (refer to Huawei official documentation)
# Verify installation
npu-smi info

# Install torch-npu
pip install torch-npu

2. 安装依赖项

pip install funasr>=1.3.1
pip install modelscope
pip install soundfile
pip install numpy pyyaml

3. 下载模型

modelscope download --model iic/speech_UniASR_asr_2pass-vi-16k-common-vocab1001-pytorch-offline \
    --local_dir ./uniASR_model

快速入门

NPU 推理

python inference.py --device npu --audio example/asr_example.wav

CPU 推理

python inference.py --device cpu --audio example/asr_example.wav

精度对比(CPU 与 NPU)

python inference.py --device compare --audio example/asr_example.wav --output inference_log.txt

Python API

from inference import run_single_inference

result, elapsed, num_frames, frontend = run_single_inference(
    model_dir="/opt/atomgit/uniASR_model",
    audio_path="example/asr_example.wav",
    device="npu",
    warmup=1
)
print(f"Transcription: {result}")
print(f"Inference time: {elapsed:.3f}s")

性能基准测试

测试环境:Ascend 910B,CANN 8.5.1,FunASR 1.3.1

指标CPUNPU(首次运行)NPU(持续运行)
推理时间1.500s2.125s0.941s
实时率(RTF)0.48080.68120.3017
相对CPU加速比1.00x0.71x1.59x

注:首次NPU运行包含内核编译开销(约1.2秒)。持续运行时,相比CPU实现1.59倍加速。

精度验证

测试音频:example/asr_example.wav(3.12秒,16kHz,越南语语音)

指标值
CPU结果kích thích
NPU结果kích thích
完全匹配True
字符准确率100.00%
错误率0.0000%

NPU推理输出与CPU完全一致,验证了零精度损失。

架构

Audio (16kHz WAV)
    │
    ▼
WavFrontend (80-dim fbank + LFR)
    │ 560-dim features
    ▼
SANM Encoder (SpecAugLFR + stride_conv)
    │
    ▼
CIF PredictorV2 ──► pre_acoustic_embeds, scama_mask
    │
    ▼
SANM Encoder2 (Big-Chunk)
    │
    ▼
FSMN-SCAMA Decoder + Beam Search (beam_size=5)
    │
    ▼
Token Decoding (CharTokenizer, 1002 vocab)
    │
    ▼
Vietnamese Text

文件结构

uniASR_model/
├── inference.py          # NPU-adapted inference script
├── README.md             # This documentation
├── config.yaml           # Model architecture config
├── decoding.yaml         # Beam search config
├── model.pb              # PyTorch state_dict (~367 MB)
├── configuration.json    # ModelScope metadata
├── example/
│   └── asr_example.wav   # Test audio sample
└── inference_log.txt     # Accuracy comparison output

已知限制

  1. 单次运行模式:由于 UniASR 架构中 CIF 预测器状态的持久性,每次推理调用都会创建一个全新的模型实例。对于批量处理,请先实例化模型一次,然后在每个 utterance 前调用 init_beam_search()。

  2. 首次运行开销:NPU 内核编译会在首次推理时增加约 1.2 秒的时间。进行性能基准测试时,请使用 --warmup 标志。

  3. 仅支持 model2(离线)解码:本适配版本使用 offline 解码模式。流式模式(fast/normal)暂未在此适配中实现。

  4. 仅限 Linux 系统:NPU 推理需要安装有 Ascend 驱动的 Linux 系统。CPU 模式可用作备用方案。

引用

@inproceedings{gao2020universal,
  title={Universal ASR: Unifying Streaming and Non-Streaming ASR Using a Single Encoder-Decoder Model},
  author={Gao, Zhifu and Zhang, Shiliang and Lei, Ming and McLoughlin, Ian},
  booktitle={arXiv preprint arXiv:2010.14099},
  year={2010}
}

版本历史

  • v1.0.0:来自 ModelScope 的原始 PyTorch 模型
  • v1.0.1:完成昇腾 NPU 适配,并通过精度与性能基准测试验证