ChatTTS:面向日常对话场景的生成式语音模型
ChatTTS 是 2noise 开源的文本转语音(TTS)模型,专为 LLM 助手等对话场景设计,支持英文与中文(其他语言标注为即将支持)。其特点包括对话式 TTS、多说话人、对笑声/停顿/插话等韵律特征的细粒度控制。代码以 AGPLv3+ 发布,模型权重以 CC BY-NC 4.0 发布,仅限教育与研究用途。
社区作者 · zZz
它解决什么问题
ChatTTS 是一个生成式语音模型(文本转语音系统),定位为面向日常对话场景的 TTS,例如 LLM 助手的语音输出。仓库自述其只包含算法基础设施与少量简单示例;更完整面向终端用户的产品由社区维护的 Awesome-ChatTTS 索引仓库汇总。
支持语言:英文、中文,其他语言标注为 Coming Soon(即将支持)。
核心亮点:
- 对话式 TTS:针对对话类任务优化,语音合成自然且富有表现力,支持多说话人,便于交互式对话。
- 细粒度控制:模型可预测并控制细粒度韵律特征,包括笑声、停顿和插话。
- 更好的韵律:官方称其韵律表现超过多数开源 TTS 模型,并提供预训练模型以支持后续研究与开发。
数据与模型:官方说明主模型使用 10 万小时以上中英文音频数据训练;HuggingFace 上的开源版本是 4 万小时预训练模型,未做 SFT。发布模型仅用于学术目的。
路线图(官方列出):开源 40k 小时基础模型与 spk_stats 文件;流式音频生成;开源 DVAE 编码器与零样本推理代码;多情绪控制;ChatTTS.cpp(欢迎在 2noise 组织下新建仓库)。
许可证:代码以 AGPLv3+ 发布;模型以 CC BY-NC 4.0 发布,仅用于教育与研究,不得用于任何商业或非法用途;作者不对信息准确性、完整性或可靠性作保证,仓库使用的信息与数据仅用于学术研究,数据来自公开来源,作者不主张所有权或版权。
免责声明:官方强调应负责任、合乎伦理地使用该技术。为限制滥用,在 4 万小时模型训练时加入少量高频噪声,并尽量用 MP3 格式压缩音频质量,以防止恶意行为者用于犯罪目的;同时内部已训练检测模型,计划未来开源。
联系方式:欢迎提交 GitHub issues/PRs;正式咨询邮箱 [email protected];在线交流包括 QQ 群(808364215、230696694、933639842、608667975)与 Discord 服务器。仓库页面还提供了代码库结构可视化链接、Bilibili 详细讲解视频、以及英文男声/女声自我介绍示例音频(intro_en_m.webm、intro_en_f.webm)。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
以下步骤依据仓库 README 整理,执行命令时需位于项目根目录。
一、准备环境与克隆仓库
- 克隆仓库:
git clone https://github.com/2noise/ChatTTScd ChatTTS二、安装依赖(requirements.txt) 方式 1,直接安装:
pip install --upgrade -r requirements.txt方式 2,使用 conda 新建环境(示例使用 Python 3.11):
conda create -n chattts python=3.11conda activate chatttspip install -r requirements.txt注意:官方提示安装过程非常慢。
三、可选安装
vLLM(仅 Linux)
pip install safetensors vllm==0.2.7 torchaudio四、不推荐的可选安装(官方明确标注“不要安装”,仅用于开发目的)
- TransformerEngine(使用 NVIDIA GPU 时,Linux only):官方警告 DO NOT INSTALL,其适配仍在开发中、当前无法正常运行,详见 issue #672、#676:
pip install git+https://github.com/NVIDIA/TransformerEngine.git@stable- FlashAttention-2(主要用于 NVIDIA GPU):官方警告 DO NOT INSTALL,当前会拖慢生成速度(见相关 issue),仅开发用途;支持设备见 Hugging Face 文档:
pip install flash-attn --no-build-isolation五、首次运行(确保在项目根目录下执行)
- 启动 WebUI:
python examples/web/webui.py- 命令行推理(音频会保存为 ./output_audio_n.mp3):
python examples/cmd/run.py "Your text 1." "Your text 2."六、作为 Python 包安装
从 PyPI 安装稳定版:
pip install ChatTTS从 GitHub 安装最新版:
pip install git+https://github.com/2noise/ChatTTS以开发模式从本地目录安装:
pip install -e .七、基础用法示例 import ChatTTS import torch import torchaudio
chat = ChatTTS.Chat() chat.load(compile=False) # 设为 True 可获得更好性能 texts = ["PUT YOUR 1st TEXT HERE", "PUT YOUR 2nd TEXT HERE"] wavs = chat.infer(texts) for i in range(len(wavs)): try: torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).
unsqueeze(0), 24000) except: torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]), 24000) (不同版本 torchaudio 保存写法不同,故示例同时给出两种写法。)
八、进阶用法示例
rand_spk = chat.sample_random_speaker() # 可保存以便之后复现音色 params_infer_code = ChatTTS.Chat.InferCodeParams(spk_emb=rand_spk, temperature=.3, top_P=0.7, top_K=20)
params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_6]') wavs = chat.infer(texts, params_refine_text=params_refine_text, params_infer_code=params_infer_code)
text = 'What is [uv_break]your favorite english food?[laugh][lbreak]' wavs = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code)
- 从高斯分布采样说话人:
- 句子级手动控制,使用 oral_(0-9)、laugh_(0-2)、break_(0-7) 生成特殊 token:
- 词级手动控制:
九、常见问题(官方 FAQ)
- 显存与推理速度:30 秒音频至少需要 4GB 显存;在 4090 上每秒约可生成对应 7 个语义 token 的音频,实时率(RTF)约 0.3。
- 模型稳定性不足(出现多说话人、音质差等):这是自回归模型(如 bark、valle)常见问题,通常难以完全避免,可多次采样寻找合适结果。
- 除笑声外还能控制什么、能否控制其他情绪:当前发布模型中 token 级控制单元只有 [laugh]、[uv_break]、[lbreak];未来版本可能开源带更多情绪控制能力的模型。