SenseVoice 适配华为昇腾NPU,高效推理
📌 概述
SenseVoice 是一款专注于高精度多语言语音识别的模型,其独特之处在于:
- 🌍 广泛的语言覆盖:支持超过 50 种语言 的识别
- 😊 强大的情感辨识能力:能够识别语音中的情感信息
- ⚡ 高效的推理性能:在复杂场景下表现卓越
该模型基于超过 40 万小时 的多样化语音数据训练而成,与市场上其他主流模型相比,在识别精度上实现了显著提升。
📦 版本说明
|
项目 |
值 |
|---|---|
|
GitHub 地址 |
https://github.com/FunAudioLLM/SenseVoice |
|
Commit ID |
|
|
模型名称 |
SenseVoice |
🔧 推理环境准备
版本配套表
|
配套组件 |
版本 |
环境准备指导 |
|---|---|---|
|
固件与驱动 |
24.0.RC3 |
|
|
CANN |
8.0.RC3 |
- |
|
Python |
3.8.20 |
- |
|
PyTorch |
2.1.0 |
- |
|
Ascend Extension PyTorch |
2.1.0.post8 |
- |
注意:Atlas 800I A2 / Atlas 300I Pro 推理卡请以 CANN 版本选择实际固件与驱动版本。
🚀 快速上手
1. 获取源码
获取 ModelZoo 源码
git clone https://gitcode.com/ascend/ModelZoo-PyTorch.git
cd ModelZoo-PyTorch/ACL_PyTorch/built-in/audio/SenseVoice
获取 PyTorch 源码
git clone https://github.com/FunAudioLLM/SenseVoice
cd SenseVoice
git reset --hard de00f2b
mv ../requirements.txt ./
mv ../export_onnx.py ./
mv ../modify_onnx.py ./
2. 安装依赖
-
pip3 install -r requirements.txt
3. 安装 msit 工具
参考 msit 安装工具中的 benchmark 和 surgen 组件。
4. 获取权重数据
从 ModelScope 获取所有权重文件,放在新建目录 SenseVoiceSmall 内。
🔄 模型推理
第一步:模型转换
1.1 导出 ONNX 模型
python3 export_onnx.py
脚本运行后会在权重目录下生成 model.onnx 文件。
1.2 修改 ONNX 模型
python3 modify_onnx.py --input_path=./SenseVoiceSmall/model.onnx --save_path=./SenseVoiceSmall/model_md.onnx
此步骤用于删除多余的 domain,生成新的 model_md.onnx 模型。
1.3 使用 ATC 工具将 ONNX 模型转为 OM 模型
配置环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
执行 ATC 命令:
首先利用 npu-smi info 命令获取芯片型号,填入 soc_version 参数中。
atc --framework=5 --soc_version=Ascend${soc_version} --model ./SenseVoiceSmall/model_md.onnx --output SenseVoice --input_shape="speech:1,-1,560;speech_lengths:1;language:1;textnorm:1"
在当前目录下生成动态模型 SenseVoice_{arch}.om。
第二步:开始推理验证
2.1 移动推理脚本
mv ../infer_onnx.py ./
2.2 执行推理命令
python3 infer_onnx.py --model_path=SenseVoiceSmall --om_path=SenseVoice_{arch}.om --device=0 --input="./SenseVoiceSmall/example/zh.mp3" --perform=True --loop=20
参数说明
|
参数 |
说明 |
|---|---|
|
|
模型权重路径 |
|
|
OM 模型路径 |
|
|
NPU 芯片 ID,默认使用 0 卡 |
|
|
输入 MP3 格式语音文件(以权重文件内的样例为例) |
|
|
是否执行性能测试 |
|
|
性能测试循环次数 |
推理执行完成后,会打印语音文本的输出和单次推理的耗时。
💡 小贴士
- 芯片型号确认:使用
npu-smi info确认当前设备的芯片型号,确保soc_version参数正确。 - 性能优化:如需进一步提升推理速度,可考虑使用批量推理或调整输入形状。
- 多语言支持:SenseVoice 支持 50+ 语言,可通过调整
language参数切换识别语言。
📚 参考资料
更多推荐

所有评论(0)