ChatTTS 中文文档 下载 App

skip_refine_text=True——完全手动控制韵律的开关

什么时候需要 skip_refine_text

默认情况下,ChatTTS 会对输入文本做自动精炼——在合适的位置补充停顿、插入语气词、根据 oral 级别调整口语化程度。

这个默认行为在大多数场景下够用,但如果你:

那就应该开 skip_refine_text=True。

对比示例

默认行为(自动精炼)

text = '我今天去了超市买了牛奶面包水果。'
wavs = chat.infer(text)

模型会自动在"超市""牛奶"等关键词后面补充 [uv_break],在句尾加 [break_4],并且根据默认 oral 设置插入语气词。实际生成的语音可能比原文本长。

skip_refine_text=True(只听你写的)

text = '我今天去了超市[uv_break]买了牛奶[uv_break]面包[laugh_0]水果。'
wavs = chat.infer(text, skip_refine_text=True)

模型只处理你写的那两个 uv_break 和 laugh_0,不额外添加任何停顿或语气词。

典型用法

text = '[oral_6]你好[uv_break]朋友们[laugh_1][lbreak]今天聊个话题'
wavs = chat.infer(text, skip_refine_text=True)

这段代码的效果完全由文本里的标签决定:整体 oral_6 风格、"你好"后面短停顿、轻微笑意、话题切换处长停顿。模型不做任何额外改动。

注意事项

与 InferCodeParams 的关系

skip_refine_text 只控制文本精炼步骤,不影响推理代码阶段。温度采样、top-P、speaker embedding 等参数仍然生效。

rand_spk = chat.sample_random_speaker()
wavs = chat.infer(
    text,
    skip_refine_text=True,
    params_infer_code=ChatTTS.Chat.InferCodeParams(
        spk_emb=rand_spk,
        temperature=0.3,
    )
)