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

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

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

 

 

相关文章:

  • IDEA配置JSP环境
  • 汽车开放系统架构(AUTOSAR)中运行时环境(RTE)生成过程剖析
  • salesforce 实现自定义多选列表
  • 【conda环境泄露】所有环境共享了一个包?
  • 拨开顺序表的层层迷雾
  • C++ 编程基础(8)模版 | 8.4、类型萃取
  • Pytorch实现之浑浊水下图像增强
  • 10. docker nginx官方镜像使用方法
  • Mybatis的一级、二级缓存
  • win32汇编环境,加速键的应用示例
  • C++模板与STL七日斩:从工业编程到高效数据管理(工业项目)
  • 纷析云:赋能企业财务数字化转型的开源解决方案
  • React 源码揭秘 | 更新队列
  • 28.C++多态1 (多态的概念与简单使用,虚函数,final,override)
  • linux--多进程开发(5)--进程
  • C/C++ | 每日一练 (4)
  • Linux:基础IO
  • 使用 pytest-mock 进行 Python 高级单元测试与模拟
  • 为什么MySQL选择使用B+树作为索引结构
  • 51串口通信实例(蓝牙模块和WiFi模块的介绍和使用)
  • 拜登办公室发言人:拜登5月16日前从未被诊断出前列腺癌
  • 四川6月龄男婴确诊心衰、重症肺炎:治疗缺钱,母亲发起求助
  • 夜读丨在雨中撒欢儿
  • 美“金穹”反导系统增加外空作战手段,外交部:中方严重关切
  • 35款移动应用存在违法违规收集使用个人信息情况,涉及智谱清言、Kimi等
  • 钟睒睒:不反对代工,但农夫山泉目前所有产品是无法代工的