在ARM+Ascend NPU上适配Step-Audio模型

A+K场景下运行Step Audio模型

1.概述

1.1 Step-Audio简介

Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤),方言(如 粤语,四川话),可控制语速及韵律风格,支持RAP和哼唱等。其核心技术突破体现在以下四大技术亮点:

• 1300亿多模态模型: 单模型能实现理解生成一体化完成语音识别、语义理解、对话、语音克隆、语音生成等功能,开源千亿参数多模态模型 Step-Audio-Chat。

• 高效数据生成链路: 基于130B 突破传统 TTS 对人工采集数据的依赖,生成高质量的合成音频数据,并同步开源首个基于大规模合成数据训练,支持 RAP 和哼唱的指令加强版语音合成模型 Step-Audio-TTS-3B 。

• 精细语音控制: 支持多种情绪(如生气,高兴,悲伤)、方言(包括粤语、四川话等)和唱歌(包括 RAP、干声哼唱)的精准调控,满足用户对多样化语音生成的需求。

• 扩展工具调用: 通过 ToolCall 机制和角色扮演增强,进一步提升其在 Agents 和复杂任务中的表现。

1.2 Step-Audio-NPU在X86适配情况

当前step-audio模型已经在A+X环境上打通,并已经在魔乐社区上发表,具体可以参考:https://modelers.cn/models/StepFun/Step-Audio-npu

2 Step-Audio-NPU在ARM上的适配

2.1 服务器 & 容器环境信息

 服务器系统环境(这里展示本次运行的环境,当作参考)

python 复制代码
root@2:/data/zjun/onnxruntime/build/Linux/Release/dist# uname -a
Linux 2 4.19.90-vhulk2211.3.0.h1960.eulerosv2r10.aarch64 #1 SMP Sat Dec 7 01:22:24 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux

 容器环境(这里展示本次运行的环境,当作参考)

容器镜像:

swr.cn-central-221.ovaijisuan.com/wh-aicc-fae/mindie:37131-ascend_24.1.rc2-cann_8.0.rc2-py_3.10-ubuntu_22.04-aarch64-mindie_1.0.RC2.01

这里的Mind IE的镜像装好了CANN(容器的CANN版本是cann_8.0.rc2,理论上装CANN8.0即可),并且操作系统是ubuntu。

2.2 环境准备

ARM环境上的环境配置信息与x86上的配置信息一致,如下:

软件包 版本

CANN 8.0.0

PTA 6.0.0

HDK 24.1.0

PYTORCH 2.1.0

PYTHON 3.10

2.2.1 Pytorch & PTA安装

CANN、PTA、HDK的环境安装,请按照https://modelers.cn/models/StepFun/Step-Audio-npu中CANN安装进行准备,如果有容器装好了直接使用容器,这里不再赘述。

Pytorch & Ascend Extension for PyTorch ARM上安装

以下是python3.10,pytorch2.1.0,PTA插件版本6.0.0,系统架构是AArch64,CANN版本是8.0.0的安装信息:

python 复制代码
# 下载PyTorch安装包
wget https://download.pytorch.org/whl/cpu/torch-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.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_aarch64.manylinux2014_aarch64.whl
# 安装命令
pip3 install torch-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
pip3 install torch_npu-2.1.0.post10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

具体安装,可以参考:

(https://www.hiascend.com/document/detail/zh/Pytorch/600/configandinstg/instg/insg_0001.html)

2.3 依赖包安装

修改requirements.txt中的依赖信息,具体如下:

• torch2.3.1 -> torch2.1.0

• torchaudio2.3.1 -> torchaudio 2.1.0
• torchvision0.18.1 -> torchvision0.16

• 注释掉 # onnxruntime-gpu ==1.17.0

2.3.1 安装onnxruntime-cann

参考Ascend NPU上适配Step-Audio模型

2.3.2 安装其它依赖

其它依赖请执行

bash 复制代码
pip install -r requirements.txt
2.3.3 whisper安装

模型对whisper有依赖,请安装

python 复制代码
pip install openai-whisper

3、模型运行

3.1 模型权重下载

具体下载请参照https://modelers.cn/models/StepFun/Step-Audio-npu中模型权重下载章节:

where_you_download_dir假设为audio-weight,那么目录audio-weight应包含以下结构。

python 复制代码
audio-weight
├── Step-Audio-Tokenizer
├── Step-Audio-Chat
├── Step-Audio-TTS-3B

通过git下载注意一定要安装git lfs,ubuntu安装的命令如下:

bash 复制代码
Apt install git-lfs

通过以下命令下载后,请检查权重的大小是否匹配。(没有安装lfs,下载过程很快,而且权重safetensors的大小会明显不对)

bash 复制代码
git clone https://huggingface.co/stepfun-ai/Step-Audio-Tokenizer
git clone https://huggingface.co/stepfun-ai/Step-Audio-Chat
git clone https://huggingface.co/stepfun-ai/Step-Audio-TTS-3B

3.2 模型运行

3.2.1 下载已适配npu模型

进入链接:https://modelers.cn/models/StepFun/Step-Audio-npu/tree/main,下载模型

接着执行下载命令。(这里演示通过git下载,且lfs已经安装,所以只需要执行红框中命令即可,也可以通过openmind_hub下载)

下载成功后的目录内容如下:

3.2.2 执行推理

执行CANN相关的环境变量

bash 复制代码
source /usr/local/Ascend/ascend-toolkit/`在这里插入代码片`set_env.sh
3.2.2.1 语音合成推理

使用默认音色进行语音合成推理或使用新音色进行克隆。这里演示使用tts进行推理。进入到Step-Audio-npu目录,执行如下命令:

bash 复制代码
ASCEND_RT_VISIBLE_DEVICES=0 python tts_inference.py --model-path /home/audio-weight  --output-path output-tts --synthesis-type tts

注意:

 /home/audio-weight为上述模型权重下载的具体路径。

 output-tts为提前创建的wav文件输出路径。

上述命令执行成功后,会在output-tts生成:

3.2.2.2 离线推理

支持端到端音频/文本输入与音频/文本输出的推理流程。

bash 复制代码
ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python offline_inference.py --model-path /home/audio-weight

注意:

 /home/audio-weight为上述模型权重下载的具体路径。

 提前创建好output文件夹,用来放置输出,否则报错。

上述命令执行成功后,会在output生成

相关推荐
ARM|X86+FPGA工业主板厂家6 小时前
基于嵌入式 GPU 的智能服务机器人
linux·运维·arm开发·fpga开发·机器人
@嵌入式扫地僧16 小时前
车载毫米波雷达分类芯驰 D9-Pro 部署全流程
雷达点云·mimo·npu·tiny-asil·tflite micro
一池秋_1 天前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
qq_402995752 天前
诊断协议栈配置Agent
arm开发·人工智能·stm32·单片机·mcu
一木 之林3 天前
三.C++ 内存管理(进阶)(二)
开发语言·arm开发·c++
hongmai6668884 天前
MP2348GTL-Z:这颗24V/4A同步降压芯片,把性能和体积平衡得恰到好处
c语言·开发语言·arm开发·单片机·5g
隔窗听雨眠6 天前
ARM架构下Logstash与Elasticsearch集群部署完全指南:从环境适配到生产验证
arm开发·elasticsearch·架构
郭老师-嵌入式6 天前
arm linux 移植 udhcp 与 使用
linux·服务器·arm开发
深念Y6 天前
登录日志与管理员审计日志存储决策
前端·arm开发·后端·微服务·云原生·架构
深念Y7 天前
微服务抽取路线图:从胖单体到 ARM 集群
前端·arm开发·数据库·后端·微服务·云原生·架构