ChatTTS 中文文档 下载 App

随机说话人采样 sample_random_speaker() 用法

什么是说话人嵌入

ChatTTS 不做声音克隆——它的"多说话人"能力来自训练集中数百位说话人的嵌入向量。

每次调用 chat.sample_random_speaker() 会:

  1. 从说话人嵌入空间中随机采样一个向量
  2. 返回一个 JSON 字符串(可直接保存到文件)
  3. 每次调用返回不同值,对应不同音色

基本用法

chat = ChatTTS.Chat()
chat.load(compile=False)

# 采样一个随机说话人
rand_spk = chat.sample_random_speaker()
print(rand_spk[:50])  # 打印前 50 字符,类似 '{"embedding": [...], "emotion": ...}'

然后传给 infer:

wavs = chat.infer(
    "你好,我是随机采样的说话人。",
    params_infer_code=ChatTTS.Chat.InferCodeParams(spk_emb=rand_spk)
)

每次都不同

连续采样会得到完全不同的音色:

for i in range(5):
    spk = chat.sample_random_speaker()
    wavs = chat.infer(
        "你好,我是不同的说话人。",
        params_infer_code=ChatTTS.Chat.InferCodeParams(spk_emb=spk)
    )
    # 保存为不同文件,听差异

不传 spk_emb 时

如果不传 params_infer_code=... 或不传 spk_emb 参数,ChatTTS 会使用默认说话人嵌入——每次都是同一个音色(模型内置的)。

与声音克隆的区别

ChatTTS 的"多说话人"是采样训练集中已有的声音,不是让你上传一段录音来克隆。如果你想让模型模仿特定人的声音(例如你的声音),需要用 OpenVoice、so-vits-svc 等专门的声音克隆模型。

最佳实践