一些ChatTTS 使用心得!
最近 ChatTTS 火得一塌糊涂,但官方文档实在语焉不详。经过AI天空一番实测和踩坑,终于摸索出一点门道,今天就来和大家分享一下我的经验,希望能帮到大家少走点弯路~🌟
开源地址和整合包传送门:<文末获取> www.aiisky.net(ai天空即将上线)
🎭 文本中可用的控制符号
ChatTTS 支持在待合成文本中插入控制符号,目前可控制 笑声 和 停顿。
-
[laugh] 代表笑声
-
[uv_break] 代表停顿
比如下面这个示例文本:
text="你好啊[uv_break]朋友们,听说今天是个好日子,难道[uv_break]不是吗[laugh]?"
实际合成时,[laugh]
将被笑声替代,[uv_break]
处将加入停顿。
笑声和停顿强度控制
通过 params_refine_text
中的 prompt
参数可以控制笑声和停顿的强度:
-
笑声 :
laugh_(0-2)
,可选值:laugh_0
、laugh_1
、laugh_2
(笑声愈加强烈) -
停顿 :
break_(0-7)
,可选值:break_0
至break_7
(停顿逐渐明显)chat.infer([text], params_refine_text={"prompt": '[oral_2][laugh_0][break_6]'}) chat.infer([text], params_refine_text={"prompt": '[oral_2][laugh_2][break_4]'})
不过实际测试发现,[break_0]
到 [break_7]
以及 [laugh_0]
到 [laugh_2]
的区别不明显。🤷♂️
⏭️ 跳过 refine text 阶段
在实际合成时,系统会重新整理(refine text)插入控制符,比如上面的示例文本,最终会被整理为:
你 好 啊 [uv_break] 啊 [uv_break] 嗯 [uv_break] 朋 友 们 , 听 说 今 天 是 个 好 日 子 , 难 道 [uv_break] 嗯 [uv_break] 不 是 吗 [laugh] ?[uv_break]
这样可能会导致不该有的停顿、噪声等。想要强制按照实际去合成,可以将 skip_refine_text
参数设为 True
:
chat.infer([text], skip_refine_text=True, params_refine_text={"prompt": '[oral_2][laugh_0][break_6]'})
🎙️ 固定发音人音色
默认每次合成都随机调用不同音色,这一点非常不友好。如果想固定发音角色,可以按以下步骤操作:
-
设置随机数种子:不同种子会产生不同的音色
torch.manual_seed(2222)
-
获取随机说话人:
rand_spk = chat.sample_random_speaker()
-
传递参数:
chat.infer([text], use_decoder=True, params_infer_code={'spk_emb': rand_spk})
经过测试,2222
、7869
、6653
是男性音色,3333
、4099
、5099
是女性角色。更多角色可以自行调整种子数测试。
🚀 语速控制
通过 params_infer_code
参数中的 prompt
可以控制语速:
chat.infer([text], use_decoder=True, params_infer_code={'spk_emb': rand_spk, 'prompt': '[speed_5]'})
速度值目前没有列明可选范围,源码中默认为 speed_5
,但测试发现 speed_0
和 speed_7
并没有明显区别。😅
🌐 WebUI界面和整合包
开源和下载地址:<文末公众号回复
TTS >
整合包解压后双击 app.exe
即可启动。源码部署可参考仓库说明。
使用教程📖
1. 下载并安装软件
根据系统选择相应版本下载并安装。以 Windows 系统为例:
2. 启动软件并进行设置
安装完成后,打开软件,根据提示进行设置。例如在 ChatTTS 中,可以设置笑声和停顿的强度:
3. 开始使用
设置完成后,就可以开始使用啦!例如合成一段文本:
chat.infer([text], params_refine_text={"prompt": '[oral_2][laugh_0][break_6]'})
以上就是本期的全部内容啦!如果你喜欢这期内容,记得「关注」、「点赞」、「在看」支持一下我哦!感谢大家的支持!❤️