当前位置: 首页 > article >正文

StepAudio:语音大模型

       Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤),方言(如 粤语,四川话)等功能;

       在Step-Audio中,阶跃星辰发布了两个模型,分别是:

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

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

       从官网上给出的数据,要运行Step-Audio-Chat最低需要265G的显存,目前小编能力有限,无法运行,不过可以尝试最低只需要8G显存的Step-Audio-TTS-3B模型跑一跑看看效果;官方提供了推理代码,测试了Step-Audio-TTS-3B的TTS文本转语音以及语音合成(克隆),效果明显优于Chat-TTS,尤其是克隆效果感觉就是我自己在说话;

一、安装

       运行Step-Audio-TTS-3B需要有一张16G左右的显卡,以及安装对应的驱动,下面就开始安装:

# 从github上拉取项目代码
git clone https://github.com/stepfun-ai/Step-Audio.git

# 创建并激活虚拟环境(也可以在base环境安装)
conda create -n stepaudio python=3.10
conda activate stepaudio

# 进入项目,并安装项目所需依赖
cd Step-Audio
pip install -r requirements.txt

# 创建模型权重文件夹并进入
mkdir models_weights
cd models_weights

# 安装大文件拉取工具,下载模型
git lfs install
# 下载分词器模型
git clone https://www.modelscope.cn/stepfun-ai/Step-Audio-Tokenizer.git
# 下载Step-Audio-TTS-3B
git clone https://www.modelscope.cn/stepfun-ai/Step-Audio-TTS-3B.git

二、推理

       通过运行Step-Audio文件夹下的tts_inference.py进行TTS和Clone功能的推理,我们来逐一测试;

# tts_inference.py

import torchaudio
import argparse
from tts import StepAudioTTS
from tokenizer import StepAudioTokenizer
from utils import load_audio
import os


def main():
    parser = argparse.ArgumentParser(description="StepAudio Offline Inference")
    parser.add_argument(
        "--model-path", type=str, required=True, help="Base path for model files"
    )
    parser.add_argument(
        "--synthesis-type", type=str, default="tts", help="Use tts or Clone for Synthesis"
    )
    parser.add_argument(
        "--output-path", type=str, required=True, help="Output path for synthesis audios"
    )
    args = parser.parse_args()
    os.makedirs(f"{args.output_path}", exist_ok=True)

    encoder = StepAudioTokenizer(f"{args.model_path}/Step-Audio-Tokenizer")
    tts_engine = StepAudioTTS(f"{args.model_path}/Step-Audio-TTS-3B", encoder)

    if args.synthesis_type == "tts":
        text = "(RAP)我踏上自由的征途,追逐那遥远的梦想,挣脱束缚的枷锁,让心灵随风飘荡,每一步都充满力量,每一刻都无比闪亮,自由的信念在燃烧,照亮我前进的方向!"
        output_audio, sr = tts_engine(text, "Tingting")
        torchaudio.save(f"{args.output_path}/output_tts.wav", output_audio, sr)
    else:
        clone_speaker = {"speaker":"test","prompt_text":"叫做秋风起蟹脚痒,啊,什么意思呢?就是说这秋风一起啊,螃蟹就该上市了。", "wav_path":"examples/prompt_wav_yuqian.wav"}
        text_clone = "人活一辈子,生老病死,总得是有高峰,有低谷,有顺境,有逆境,每个人都差不多。要不老话怎么讲,三十年河东,三十年河西呢。"
        output_audio, sr = tts_engine(text_clone, "",clone_speaker)
        torchaudio.save(f"{args.output_path}/output_clone.wav", output_audio, sr)

if __name__ == "__main__":
    main()

2.1 TTS(文本转语音)功能

修改脚本:

       如下图所示,将tts_inference.py脚本中红框的text替换为自己要转换为语音的文本:

运行命令:

python tts_inference.py --model-path models_weights --output-path output --synthesis-type tts

我们可以看到原脚本中有‘(RAP)’可以控制输出语音的语气,大家可以替换其他语气进行测试;

2.2 Clone(语音合成)功能

修改脚本:

       相比于TTS功能,Clone功能稍微繁琐一点:

       (1)需要提前准备要克隆的语音样本保存在examples文件夹下,同时修改下图红框中‘wav_path’所指向的语音文本保存路径;

       (2)同时准备语音内容所对应的文本信息,替换‘prompt_text’指向的文本;

       (3)替换‘text_clone’为克隆的音色需要朗读的文本信息;

运行命令: 

python tts_inference.py --model-path models_weights --output-path output --synthesis-type clone

非常简单,大家快去试试吧,效果超乎你想象! 

 

 


http://www.kler.cn/a/561897.html

相关文章:

  • Java所有运算符理解
  • ldap放大 DDOS.c
  • LeetCodehot 力扣热题100 全排列
  • ue学习part2
  • LeetCode每日精进:622.设计循环队列
  • C#快速调用DeepSeek接口,winform接入DeepSeek查询资料 C#零门槛接入DeepSeek C#接入DeepSeek源代码下载
  • K8S能部署大数据集群吗?为什么?K8S的HPA功能可以作为大数据处理消息积压的问题(Kafka的分区)
  • R 语言科研绘图 --- 柱状图-汇总
  • react18自定义hook实现
  • NLP工程师逐步切入机器人和具身智能方向
  • Go语言--语法基础2--下载安装
  • PHP入门基础学习四(PHP基本语法)
  • Linux 之 Centos 安装Consul
  • redis小记
  • 从单片机的启动说起一个单片机到点灯发生了什么下——使用GPIO点一个灯
  • 低延迟,高互动:EasyRTC的全场景实时通信解决方案
  • Imagination通过最新的D系列GPU IP将效率提升至新高度
  • 分享些常用的工具类
  • 面试基础----ReentrantLock vs Synchronized
  • 大语言模型学习路径与开源模型推荐