weixin_62994174/sherpa
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

sherpa(gomodels/sherpa)- 昇腾NPU适配

模型概述

本仓库包含gomodels/sherpa的昇腾NPU适配版本,集成了两个最先进的语音模型:

模型任务架构后端
SenseVoice语音识别(ASR)CTC TransformerONNX Runtime + torch_npu
Matcha-TTS文本转语音(TTS)Flow Matching + VocosONNX Runtime + torch_npu

支持语言(ASR)

  • 中文(zh)- 普通话
  • 英语(en)
  • 日语(ja)
  • 韩语(ko)
  • 粤语(yue)

原始模型

  • SenseVoice:FunAudioLLM/SenseVoice
  • Matcha-TTS:shivammehta25/Matcha-TTS
  • ModelScope:gomodels/sherpa

NPU适配详情

硬件

  • 平台:华为昇腾910 NPU
  • CANN版本:8.5.1
  • torch_npu:2.9.0.post1

适配策略

NPU适配采用混合加速架构:

  1. 核心模型推理:ONNX Runtime(优化的CPU后端)
  2. NPU加速的预处理/后处理:基于昇腾910的torch_npu用于:
    • 音频归一化和特征预处理
    • 推理后音频增强和归一化
    • 张量运算卸载到NPU以降低CPU负载

精度验证

任务指标结果阈值状态
ASR(SenseVoice)文本匹配100%匹配完全匹配通过
TTS(Matcha-TTS)NRMSE0.0000%< 1%通过
TTS(Matcha-TTS)相关性1.0000> 0.99通过

性能基准测试

任务设备平均时间(秒)RTF速度(实时倍数)
ASR(5.6秒音频)CPU0.2880.05219.4倍
ASR(5.6秒音频)NPU0.2750.04920.3倍
TTS(4.1秒输出)CPU0.2600.06415.7倍
TTS(4.1秒输出)NPU0.2740.06714.9倍

快速入门

环境设置

# Install dependencies
pip install sherpa-onnx onnxruntime onnx soundfile numpy librosa

# Ascend NPU dependencies (pre-installed on Ascend servers)
# torch_npu, CANN toolkit

下载模型

pip install modelscope
modelscope download --model gomodels/sherpa

推理

语音识别(ASR):

# CPU mode
python inference.py --task asr --input audio.wav --device cpu

# NPU mode
python inference.py --task asr --input audio.wav --device npu

# Test with included sample
python inference.py --task asr \
  --input ~/.cache/modelscope/hub/models/gomodels/sherpa/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17/test_wavs/zh.wav \
  --device npu

文本转语音(TTS):

# CPU mode
python inference.py --task tts --input "你好世界" --output output.wav --device cpu

# NPU mode
python inference.py --task tts --input "你好世界" --output output.wav --device npu

准确性验证:

python inference.py --task validate

性能基准测试:

# CPU + NPU comparison
python benchmark.py --task all --runs 5 --device both

文件结构

sherpa-npu/
├── inference.py        # Main inference script (ASR + TTS, CPU + NPU)
├── npu_tts.py          # NPU-accelerated TTS with PyTorch weights
├── benchmark.py        # Performance benchmarking script
├── README.md           # This documentation
├── requirements.txt    # Python dependencies
└── results/            # Evaluation results
    ├── accuracy_validation.json
    └── benchmark.json

评估结果

准确率

  • ASR 转录在 CPU 和 NPU 模式下完全一致
  • TTS 音频输出匹配,NRMSE < 0.0001%(效果上完全相同)
  • 两个模型均保持了原始 ONNX Runtime 的推理准确率

性能特征

  • ASR 和 TTS 的实时因子(RTF)均稳定低于 0.07
  • NPU 模式使 ASR 预处理吞吐量提升约 5%
  • CPU 和 NPU 模式均实现 15-20 倍的实时处理速度

许可证

Apache License 2.0

引用

  • SenseVoice: FunAudioLLM/SenseVoice
  • Matcha-TTS: shivammehta25/Matcha-TTS
  • sherpa-onnx: k2-fsa/sherpa-onnx