ChatTTS进阶篇(适用于win/linux/wsl)

简介:ChatTTS是目前最火的语音生成模型,在语音合成中表现出超高质量和流畅度。在上一期简单介绍了ChatTTS的本地部署方法和webui使用。这次将更深入地探讨如何利用ChatTTS实现更高级的文本到语音(TTS)转换功能,帮助你更好地掌握ChatTTS。


目录

ChatTTS进阶使用教程

1.conda创建环境

2.下载ChatTTS源码

3.下载模型文件

4.简单调用 

5.音色库

参数解释

6.进阶调用


ChatTTS进阶使用教程

1.conda创建环境

conda create -n tuling python==3.10
conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=11.8 -c pytorch -c nvidia

2.下载ChatTTS源码

conda activate tuling
git clone https://github.com/2noise/ChatTTS.git
cd ChatTTS
pip install -r requirements.txt

3.下载模型文件

pip install modelscope

输入python进入python环境

依次输入两行代码:

from modelscope import snapshot_download
model_dir = snapshot_download('pzc163/chatTTS',local_dir="./chatTTS")

下载好之后输入quit()退出python环境

4.简单调用 

新建一个demo1.py,其中的代码如下所示:

import ChatTTS
import scipy
chat = ChatTTS.Chat()
chat.load('custom', custom_path='./chatTTS', compile=False)
texts = ["我是i鹰斯坦,爱吃红烧肉,"]#可通过加,的方式缓解结尾突兀的问题
wavs = chat.infer(texts)
scipy.io.wavfile.write(filename = "output.wav", rate = 24_000, data = wavs[0].T)

运行效果:

在demo的同一级目录下,已经生成了语音的output.wav文件。

5.音色库

源码里的抽卡音色真的看运气,很难抽到自己满意的音色,可以前往音色库ChatTTS稳定音色 (modelscope.cn)进行试听,然后将自己满意的音色保存到本地,然后读取音色模型文件。网站音色部分如下,通过点击不同的seed_id,再试听下方生成的音频,如果觉得满意就点击表格下方的下载,将音色模型下载到本地。

参数解释

  • rank_long: 长句文本的音色稳定性评分。
  • rank_multi: 多句文本的音色稳定性评分。
  • rank_single: 单句文本的音色稳定性评分。
  • score: 音色性别、年龄、特征的可能性,越高越准确。
  • gender age feature: 音色的性别、年龄、特征。

参数仅供参考,建议还是通过试听选择,然后将音色模型保存到ChatTTS目录下。 

6.进阶调用

新建一个demo2.py,其中的代码如下所示:

import ChatTTS
import scipy
import torch
chat = ChatTTS.Chat()
chat.load('custom', custom_path='./chatTTS', compile=False)
# 随机生成音色,俗称抽奖,抽的我心碎了
# rand_spk = chat.sample_random_speaker()
# 读取保存的音色模型
spk = chat._encode_spk_emb(torch.load('./seed_2155_restored_emb.pt'))
params_infer_code = ChatTTS.Chat.InferCodeParams(
    spk_emb = spk, # add sampled speaker 
    temperature = .3,   # using custom temperature
    top_P = 0.7,        # top P decode
    top_K = 20,         # top K decode
)
text = '最初的鸟儿是不会飞翔的,飞翔是他们勇敢跃入峡谷的奖励,重要的是勇气,是它让你们成为世上最初的飞鸟。'
###################################
text1 = chat.infer(text, refine_text_only=True)
# refine_text_only=True:自动添加语气词
# [oral_0]:连接词,嗯呐,哦,就是之类的词
# [laugh_0]:笑声
# [break_0]:停顿
print(text1)
wavs = chat.infer(text1, params_infer_code=params_infer_code)
scipy.io.wavfile.write(filename = "output.wav", rate = 24_000, data = wavs[0].T)

这里在推理的使用了refine_text_only=True参数,能为我们输入的文本自动添加语气词和停顿以及笑声, 运行效果如下。可以看出原本的文本中间加入了很多[uv_break]的部分,使得语气更加真实。

所用源码已上传: ChatTTS源码进阶调用资源

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值