params_refine_text——用 RefineTextParams 控制韵律偏好
为什么有这个参数
ChatTTS 内部有一个"文本精炼"模块,它会在生成音频之前对输入文本做一轮处理:补充停顿、插入语气词、调整口语化程度。
params_refine_text 就是这个精炼模块的配置入口。不设置的话,模型用默认行为(中等口语化、自动停顿)。
基本用法
params_refine_text = ChatTTS.Chat.RefineTextParams(
prompt='[oral_5][laugh_0][break_4]',
)
wavs = chat.infer(text, params_refine_text=params_refine_text)
prompt 字符串里可以包含多个标签,按任意顺序排列即可——模型会理解成"整体风格是 oral_5、不刻意笑、遇到该停的地方停 4 级"。
prompt 里能写什么
prompt 字符串里可以出现的标签就是 控制标签体系 那 5 类:
[oral_0]~[oral_9][laugh_0]~[laugh_2][break_0]~[break_7][uv_break](不太适合放 prompt)[lbreak](不太适合放 prompt)
prompt 里不要写多个同一类型的标签(例如 [oral_3][oral_7]),模型会以后出现的为准或取平均。
效果调优建议
| 目标 | prompt 示例 |
|---|---|
| 自然聊天语气 | [oral_5][laugh_0][break_4] |
| 偏正式播报 | [oral_1][laugh_0][break_2] |
| 轻松有趣 | [oral_7][laugh_1][break_5] |
| 严肃庄重 | [oral_0][laugh_0][break_3] |
与内联标签的关系
prompt 设定的是整体风格,内联标签设定的是局部精确位置。两者可以共存,但需要注意:
- 用 prompt 时,模型会自动补充一些停顿和语气词
- 用内联标签 +
skip_refine_text=True时,模型只听你写的,不自动补充
默认值
不传 params_refine_text 时,模型使用默认配置,大致相当于:
prompt='[oral_4][laugh_0][break_3]'