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

ChatTTS,语气韵律媲美真人的开源TTS模型,文字转语音界的新魁首,对标微软Azure-tts

在这里插入图片描述

前两天 2noise 团队开源了ChatTTS项目,并且释出了相关的音色模型权重,效果确实非常惊艳,让人一听难忘,即使摆在微软的商业级项目Azure-tts面前,也是毫不逊色的。

ChatTTS是专门为对话场景设计的文本转语音模型,例如大语言助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。目前在huggingface中的开源版本为4万小时训练且未SFT的版本。

本次分享一下如何在本地部署ChatTTS项目。

配置ChatTTS环境

首先确保本地已经安装好Anaconda软件包,运行命令创建虚拟环境:

conda create -n ChatTTS python=3.11

之所以选择Python3.11的版本,是因为该版本的整体性能更好。

随后克隆官方的项目:

git clone https://github.com/2noise/ChatTTS.git

进入项目

cd ChatTTS

激活虚拟环境

conda activate ChatTTS

安装项目依赖:

pip install -r requirements.txt

最后安装gpu版本的torch:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

注意这里默认的cuda版本是12.1,如果你的本地cuda是11.8,那么就安装对应11.8的torch:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

至此,环境就配置好了。

ChatTTS的基本使用

首先,是最基本的文字转语音功能:

import ChatTTS  
from IPython.display import Audio  chat = ChatTTS.Chat()  
chat.load_models()  texts = ["你好啊",]  wavs = chat.infer(texts, use_decoder=True)  
Audio(wavs[0], rate=24_000, autoplay=True)

这里 ChatTTS 是项目内的文件夹模块,初始化后直接调用infer方法即可进行音频推理。

需要注意的是,首次运行会默认在Huggingface上下载模型,需要学术上网环境。

ChatTTS的进阶用法

###################################  
# Sample a speaker from Gaussian.  
import torch  
std, mean = torch.load('ChatTTS/asset/spk_stat.pt').chunk(2)  
rand_spk = torch.randn(768) * std + mean  params_infer_code = {  'spk_emb': rand_spk, # add sampled speaker   'temperature': .3, # using custom temperature  'top_P': 0.7, # top P decode  'top_K': 20, # top K decode  
}  ###################################  
# For sentence level manual control.  # use oral_(0-9), laugh_(0-2), break_(0-7)   
# to generate special token in text to synthesize.  
params_refine_text = {  'prompt': '[oral_2][laugh_0][break_6]'  
}   wav = chat.infer("<PUT YOUR TEXT HERE>", params_refine_text=params_refine_text, params_infer_code=params_infer_code)  ###################################  
# For word level manual control.  
# use_decoder=False to infer faster with a bit worse quality  
text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'  
wav = chat.infer(text, skip_refine_text=True, params_infer_code=params_infer_code, use_decoder=False)

这里通过 std, mean = torch.load(‘ChatTTS/asset/spk_stat.pt’).chunk(2) 方法来固定音色。

随后通过 params_refine_text 来人为的增加笑声和断句。

ChatTTS的中文样例

最后是一个ChatTTS的中文推理例子:

inputs_cn = """  
chat T T S 是一款强大的对话式文本转语音模型。它有中英混读和多说话人的能力。  
chat T T S 不仅能够生成自然流畅的语音,还能控制[laugh]笑声啊[laugh],  
停顿啊[uv_break]语气词啊等副语言现象[uv_break]。这个韵律超越了许多开源模型[uv_break]。  
请注意,chat T T S 的使用应遵守法律和伦理准则,避免滥用的安全风险。[uv_break]'  
""".replace('\n', '')  params_refine_text = {  'prompt': '[oral_2][laugh_0][break_4]'  
}   
audio_array_cn = chat.infer(inputs_cn, params_refine_text=params_refine_text)  
audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text)

文本内容可以通过[laugh]和[uv_break]标识来进行笑声和语气停顿的定制化操作

结语

诚然,没有完美的产品,ChatTTS的模型稳定性似乎还有待提高, 偶尔会出现其他音色或音质很差的现象,这是自回归模型通常都会出现的问题,说话人的音色也有可能会在一定范围内变化, 可能会采样到音质非常差的结果, 这通常难以避免. 可以多采样几次来找到合适的结果,俗称抽卡,最后奉上一键整合包,与众乡亲同飨:

ChatTTS新版整合包:https://pan.quark.cn/s/e07f47edf82a
http://www.lryc.cn/news/358747.html

相关文章:

  • Django企业招聘后台管理系统开发实战四
  • APP上架 篇一:上架资质要求
  • C++入门之类和对象
  • html中table的替代方案
  • 单片机的自动化编程语言:深度探索与未来展望
  • k8s 部署 Dashboard
  • HTTP/超文本传输协议(Hypertext Transfer Protocol)及HTTP协议通信步骤介绍和请求、响应阶段详解;
  • 【机器学习】随机森林:深度解析与应用实践
  • pytorch使用tensorboardX面板自动生成模型结构图和各类可视化图像
  • C# 键值对
  • android 应用安装目录
  • Centos 7 安装刻录至硬件服务器
  • 动手学深度学习4.6 暂退法-笔记练习(PyTorch)
  • C++ 头文件优化
  • DataRockMan洛克先锋OZON选品工具
  • 【MySQL精通之路】全文搜索(9)-全文解析器-MeCab
  • 【工具】 MyBatis Plus的SQL拦截器自动翻译替换“?“符号为真实数值
  • RT-DETR:端到端的实时Transformer检测模型(目标检测+跟踪)
  • OrangePi Kunpeng Pro开发板初体验——家庭小型服务器
  • AquaCrop农业水资源管理,模拟作物生长过程中水分的需求与消耗
  • 爬虫之re数据清洗
  • 惯性动作捕捉与数字人实时交互/运营套装,对高校元宇宙实训室有何作用?
  • Leecode---栈---每日温度 / 最小栈及栈和队列的相互实现
  • Linux系统编程——动静态库
  • json formatter哪个好用
  • react的hooks是什么意思
  • AVFrame相关接口(函数)
  • 低代码与人工智能的深度融合:行业应用的广泛前景
  • 嵌入式测试基础知识
  • 基于网关的ip频繁访问web限制