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]'})
如何避免自动整理控制符
在实际合成时,系统会自动整理插入的控制符,可能导致不必要的停顿或笑声。可以通过设置 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})
如何控制语速
通过 params_infer_code
参数中的 prompt
可以控制语速。
示例代码:
chat.infer([text], use_decoder=True, params_infer_code={'spk_emb': rand_spk, 'prompt':'[speed_5]'})
WebUI界面和整合包
ChatTTS的UI界面和整合包可以在GitHub上找到,地址为:https://github.com/jianchang512/chatTTS-ui。
如何使用整合包?
解压后双击 app.exe
即可使用。
如何部署源码?
按照仓库中的说明进行部署。
我认为: ChatTTS虽然在语音合成方面提供了丰富的控制选项,但其文档的不详细和某些功能的实际效果不明显,可能会给用户带来困扰。通过本文的详细步骤,用户可以更有效地利用这些控制功能,优化语音合成的效果。
标签: ChatTTS, 语音合成, 控制符号, 发音人控制, 语速控制
© 版权声明
文章版权归作者所有,未经允许请勿转载。