Ascend NPU上适配Step-Audio模型
1 概述
1.1 简述
Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤),方言(如 粤语,四川话),可控制语速及韵律风格,支持RAP和哼唱等。其核心技术突破体现在以下四大技术亮点:
-
1300亿多模态模型: 单模型能实现理解生成一体化完成语音识别、语义理解、对话、语音克隆、语音生成等功能,开源千亿参数多模态模型 Step-Audio-Chat。
-
高效数据生成链路: 基于130B 突破传统 TTS 对人工采集数据的依赖,生成高质量的合成音频数据,并同步开源首个基于大规模合成数据训练,支持 RAP 和哼唱的指令加强版语音合成模型 Step-Audio-TTS-3B 。
-
精细语音控制: 支持多种情绪(如生气,高兴,悲伤)、方言(包括粤语、四川话等)和唱歌(包括 RAP、干声哼唱)的精准调控,满足用户对多样化语音生成的需求。
-
扩展工具调用: 通过 ToolCall 机制和角色扮演增强,进一步提升其在 Agents 和复杂任务中的表现。
github模型仓库地址:
https://github.com/stepfun-ai/Step-Audio.git
2 环境准备
2.1 获取CANN安装包&环境准备
版本支持列表
软件包 | 版本 |
---|---|
CANN | 8.0.0 |
PTA | 6.0.0 |
HDK | 24.1.0 |
pytorch | 2.1.0 |
Python | 3.10 |
2.2 Pytorch & CANN安装
- Pytorch & Ascend Extension for PyTorch安装(https://www.hiascend.com/document/detail/zh/Pytorch/600/configandinstg/instg/insg_0001.html)》
以下是python3.10,pytorch2.1.0,PTA插件版本6.0.0,系统架构是x86_64,CANN版本是8.0.0的安装信息:
# 下载PyTorch安装包
wget https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp310-cp310-linux_x86_64.whl
# 下载torch_npu插件包
wget https://gitee.com/ascend/pytorch/releases/download/v6.0.0-pytorch2.1.0/torch_npu-2.1.0.post10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
# 安装命令
pip3 install torch-2.1.0+cpu-cp310-cp310-linux_x86_64.whl
pip3 install torch_npu-2.1.0.post10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- 软件包下载Atlas 800I A2
- CANN包安装
以下是CANN包中需要安装的run包信息:
# 增加软件包可执行权限,{version}表示软件版本号,{arch}表示CPU架构,{soc}表示昇腾AI处理器的版本。
chmod +x ./Ascend-cann-toolkit_{version}_linux-{arch}.run
chmod +x ./Ascend-cann-kernels-{soc}_{version}_linux.run
# 校验软件包安装文件的一致性和完整性
./Ascend-cann-toolkit_{version}_linux-{arch}.run --check
./Ascend-cann-kernels-{soc}_{version}_linux.run --check
# 安装
./Ascend-cann-toolkit_{version}_linux-{arch}.run --install
./Ascend-cann-kernels-{soc}_{version}_linux.run --install# 设置环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
2.3 依赖包安装
注意,请修改requirements.txt中的依赖信息,具体如下:
-
torch2.3.1 -> torch2.1.0
-
onnxruntime-gpu修改为支持npu的版本。具体操作是:
1、克隆源码
git clone https://github.com/microsoft/onnxruntime.git
切换到1.17.0版本2、构建whl包
# 先初始化CANN环境
source /usr/local/Ascend/ascend-toolkit/set_env.sh# 执行build脚本
./build.sh --config Release --build_shared_lib --parallel --use_cann --build_wheel
3、获得onnxruntime_cann包
如果出现网络连接失败导致无法进行构建,可以多重试几次。
若构建成功,whl包会生成在build/Linux/Release/dist/目录下。如果已经安装了非CANN版本的onnxruntime,需要先卸载它。
安装onnxruntime-cann
pip3 install onnxruntime_cann-x.xx.x-xxxx-xxxxx-xxxxx_xxx_xx.whl
- 其它依赖请执行
pip install -r requirements.txt
3、模型下载
将3个模型文件统一下载到一个目录,如下载模型后,where_you_download_dir应包含以下结构:
where_you_download_dir
├── Step-Audio-Tokenizer
├── Step-Audio-Chat
├── Step-Audio-TTS-3B
具体下载链接如下。
- Huggingface
模型 | 链接 |
---|---|
Step-Audio-Tokenizer | 🤗huggingface |
Step-Audio-Chat | 🤗huggingface |
Step-Audio-TTS-3B | 🤗huggingface |
- Modelscope
模型 | 链接 |
---|---|
Step-Audio-Tokenizer | modelscope |
Step-Audio-Chat | modelscope |
Step-Audio-TTS-3B | modelscope |
4 执行推理
4.1离线推理
支持端到端音频/文本输入与音频/文本输出的推理流程。
ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python offline_inference.py --model-path where_you_download_dir
4.2 语音合成推理
使用默认音色进行语音合成推理或使用新音色进行克隆
ASCEND_RT_VISIBLE_DEVICES=0 python tts_inference.py --model-path where_you_download_dir --output-path where_you_save_audio_dir --synthesis-type use_tts_or_clone
克隆模式需要音色信息字典,格式如下:
{"speaker": "speaker id","prompt_text": "content of prompt wav","wav_path": "prompt wav path"
}
4.3 启动网页演示
4.3.1 Step-Audio-Chat demo
python app.py --model-path where_you_download_dir
4.3.2 Step-Audio-TTS-3B demo
python tts_app.py --model-path where_you_download_dir
5 FAQ
5.1 onnxruntime报错
/onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1193 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so
with error: libcudart.so.11.0: cannot open shared object file: No such file or directorys
显示的是cuda的组件找不到。由于是Ascend环境,肯定是没有GPU的,很明显是onnxruntime的包装错了。
解决:
通过查找onnxruntime社区,可以发现npu已经对onnxruntime进行了适配,参考如下文档:
onnxruntime/docs/execution-providers/community-maintained/CANN-ExecutionProvider.md at gh-pages · microsoft/onnxruntime
那么该如何才能构建onnxruntime适配Ascend上的whl包呢?
这里提供源码构建的办法:
1、克隆源码
git clone https://github.com/microsoft/onnxruntime.git
cd onnxruntime
2、构建whl包
# 先初始化CANN环境
source /usr/local/Ascend/ascend-toolkit/set_env.sh# 执行build脚本
./build.sh --config Release --build_shared_lib --parallel --use_cann --build_wheel
若构建成功,whl包会生成在build/Linux/Release/dist/目录下。
3、安装onnxruntime-cann
pip3 install onnxruntime_cann-x.xx.x-xxxx-xxxxx-xxxxx_xxx_xx.whl
5.2 torchvision模块报错
Torchvion安装的是cuda版本,在NPU上并没有适配。
解决:
安装cpu版本的torchvion再安装torchvision_npu插件,版本使用tochvision-0.1.6和torchvision_npu-0.1.6,具体可参考文档https://gitee.com/ascend/vision