ChatTTS 中文文档 下载 App

ChatTTS 与大语言模型助手集成——让 AI 回复"说出来"

核心思路

整个集成链路很简单:

用户提问 → LLM 生成文字回复 → ChatTTS 转语音 → 播放 / 发送语音

LLM 部分可以是任何支持 API 的模型(GPT-4、Claude、豆包、通义千问…)。关键是处理好 LLM 输出的文字——可能包含代码块、Markdown、多段落——需要先过滤掉不适合语音的内容再送进 ChatTTS。

基本骨架代码

import ChatTTS
import torch
import torchaudio

# 1. 初始化 ChatTTS(进程启动时做一次)
chat = ChatTTS.Chat()
chat.load(compile=True)  # 编译一次,后续推理快
spk = chat.sample_random_speaker()

# 2. 获取 LLM 回复(伪代码,替换成你的 LLM API 调用)
llm_reply = call_llm("帮我写一段关于天气预报的简短介绍")

# 3. 文本预处理
clean_text = preprocess_for_tts(llm_reply)

# 4. ChatTTS 推理
wavs = chat.infer(
    clean_text,
    params_infer_code=ChatTTS.Chat.InferCodeParams(
        spk_emb=spk,
        temperature=0.3,
        top_P=0.7,
        top_K=20,
    )
)

# 5. 输出
audio_path = save_audio(wavs[0], "reply.wav")
send_to_user(audio_path)

文本预处理要点

LLM 的输出直接扔给 ChatTTS 可能效果不好,建议处理:

批量对话集成

多轮对话时可以:

dialogue_history = []

while True:
    user_input = input("你:")
    dialogue_history.append(user_input)
    
    reply = call_llm(dialogue_history)
    dialogue_history.append(reply)
    
    # 语音化回复
    wav = synthesize(reply)
    play(wav)

典型应用

应用做法
语音化的 ChatBot直接把 LLM 回复喂给 ChatTTS
交互式剧情游戏LLM 生成分角色台词 + ChatTTS 每句话采样不同音色
播客自动生成LLM 生成分段脚本 + ChatTTS 朗读合成
语音翻译翻译模型输出目标语言文本 + ChatTTS 朗读

注意事项