ChatTTS
让AI语音告别机械腔,专为日常对话场景优化的生成式语音合成模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让AI语音告别机械腔,专为日常对话场景优化的生成式语音合成模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有被智能音箱那标准的"播音腔"折磨过?每个字都字正腔圆,语调却像在念课文——停顿位置诡异,重音莫名其妙,听久了总觉得哪里不对劲。这就是传统语音合成(TTS)的老毛病:语法正确,但不够像人。
ChatTTS 要解决的就是这个问题。它不是那种"读稿播音员",而是想让 AI 像正常人聊天一样说话——自然停顿、语气起伏、甚至恰到好处的笑声和换气声。在 GitHub 上狂揽超过 39000 颗星,被认为是近年来最有"人情味"的语音生成开源项目之一。
过去十年,TTS 技术经历了从拼接合成到参数合成、再到端到端神经网络的三代演进。WaveNet、FastSpeech、VITS 等模型逐步将合成音质提升到了"以假乱真"的地步。但这些模型有一个共同的设计目标:朗读——它们擅长读新闻、读导航、读电子书,却天然不适合日常对话场景。
原因是,对话语音和朗读语音的节奏完全不同。人类说话时充满省略("我觉得吧……嗯……其实")、重复、停顿(给听众消化信息的间隙)、甚至笑声和叹气。这些"不规范"恰恰是判断一段语音是否"自然"的关键特征。
2noise 团队敏锐地捕捉到了这个空白。他们在 GitHub 主页上写道:"A generative speech model for daily dialogue"——一个为日常对话场景而生的生成式语音模型。团队还在持续训练更大规模的模型,并在 Hugging Face 上同步维护模型权重,全球贡献者和社区生态正在快速壮大。
ChatTTS 的技术路线有几个鲜明特点,理解它们有助于你判断项目是否适合自己的场景。
1. 40,000 小时中文对话数据训练
模型基于约 40,000 小时的中文对话语音训练而成,远超一般 TTS 模型的数据规模。这些数据来自真实的人与人对话场景,而非从有声书中提取——保证了语速、停顿、语气词的分布与自然对话一致。
2. 音色与韵律的解耦控制
ChatTTS 引入了说话人(speaker) embedding 机制,支持在推理时指定音色。不同说话人可以有完全不同的声线,但共享相同的韵律风格。这意味着你可以在不重新训练模型的情况下,生成多种不同声音的对话。
3. 细粒度韵律 token 控制
项目支持通过特殊 token 在文本层面控制生成语音的韵律特征:
| Token | 作用 |
|---|---|
[laugh] | 生成笑声片段 |
[uv_break] | 插入自然的韵律停顿 |
[lbreak] | 强制换行/分段停顿 |
这些 token 直接嵌入输入文本,开发者无需了解底层模型,只需在文字中插入标记即可控制输出效果。相比通过复杂参数调优,这种方式对开发者更加友好。
4. 安全水印:防止滥用
项目在训练阶段嵌入了高频噪声,在输出阶段施加 MP3 有损压缩,并在开发路线图中计划开源内部检测模型。这些措施的目标是:让研究者正常使用的同时,防止恶意使用该技术进行诈骗、伪造等违法活动。官方明确声明模型仅供学术研究使用,禁止商业落地。
ChatTTS 提供了三种上手路径,门槛从低到高排列:
方式一:Google Colab(零配置,推荐尝鲜)
点击项目 README 中的 "Open In Colab" 按钮,浏览器里直接跑代码,全程云端 GPU,无需在自己机器上装任何东西。Colab notebook 提供了完整的推理示例,包括加载模型、输入文本、播放音频、调整语速等基础操作。适合想快速体验效果、不想折腾环境的用户。
方式二:Gradio WebUI(交互友好,适合调试)
在本地环境中执行:
pip install -r requirements.txt
python examples/web/webui.py
即可在浏览器中打开一个 Gradio 界面。界面支持实时输入文本、切换说话人、调整语速、插入特殊 token 等操作。相比 Colab,WebUI 可以更灵活地测试不同参数组合,适合需要反复调试效果的用户。
方式三:Python API(程序化集成,适合开发者)
项目也提供 Python API,可以嵌入到其他应用中使用:
import ChatTTS
import torch
import torchaudio
torch._dynamo.config.cache_size_limit = 64
torch._dynamo.config.suppress_errors = True
torch.set_float32_matmul_precision('high')
chat = ChatTTS.Chat()
chat.load_models(compile=False)
texts = ["今天天气真不错,我们出去走走吧。"]
wavs = chat.infer(texts)
torchaudio.save("output.wav", torch.from_numpy(wavs[0]), 24000)
支持批量推理(batching),适合需要批量生成语音内容的场景。
命令行工具
项目中还包含 examples/cmd 目录,提供命令行推理工具,可将输出直接保存为 MP3 文件到当前目录。
| 项目 | 要求 |
|---|---|
| 最低显存 | 4GB(30秒音频) |
| 推荐显卡 | NVIDIA RTX 3090 / 4090 |
| 推理速度(RTX 4090) | 约 7 个语义 token/秒 |
| 实时因子(RTF) | 约 0.3(即生成速度约为播放速度的 3 倍) |
硬件需求在同类模型中属于中等偏低水平——4GB 显存意味着 RTX 3060 级别的显卡也能运行。相比之下,11B 参数的 GPT-SoVITS 等模型往往需要 8GB 以上显存。纯 CPU 推理理论上可行,但速度会非常缓慢。
已知坑: 项目 README 明确警告不要安装 TransformerEngine(适配仍在进行中,无法正常运行)和 FlashAttention-2(实测会拖慢生成速度)。安装过程本身也比较耗时(需要编译多个依赖),建议预留 15-30 分钟。
ChatTTS 的代码库结构清晰,主要分为以下模块:
项目基于 PyTorch 生态构建,依赖包括 transformers、vocos(高质量声码器)、vector_quantize_pytorch(矢量量化)等关键库。代码风格偏向工程化,有较完整的单元测试覆盖,README 文档质量较高,且提供了中文、英文、日文、韩文、法文、俄文等多语言文档。
1. 自回归模型的不稳定性
和其他自回归语音模型(如 Bark、VALLE)一样,ChatTTS 在某些输入上可能出现不稳定现象——比如多说话人场景下音色飘移、生成音质突然下降。官方建议多尝试几次采样,取最优结果。这是当前自回归模型的共同局限,非 ChatTTS 独有。
2. 非商业许可限制
模型权重采用 CC BY-NC 4.0 协议发布,明确禁止商业使用。这对于想将 ChatTTS 集成到商业产品中的开发者是一个硬门槛。如果你需要商业可用的中文对话 TTS,可以关注阿里巴巴的 CosyVoice、字节跳动的 SeedTTS 等商业友好的替代方案。
3. 克隆检测风险
随着高质量语音克隆技术普及,滥用风险持续存在。2noise 团队虽已添加安全水印,但目前检测模型尚未开源,实际防护效果有待验证。在部署使用前,请确保符合当地法律法规。
4. 中文为主,多语言支持有限
虽然 README 列出了多语言文档,但模型主要基于中文对话数据训练,对英文等其他语言的自然度可能不如中文。在英文对话场景下的效果需要用户自行测试验证。
在 ChatTTS 出现之前,开源社区中大多数 TTS 模型的设计目标都是"高品质朗读"(如 Tortoise-TTS)或"情感语音"(如 StyleTTS 2),但缺乏一个专门针对"日常对话"场景优化的开源方案。ChatTTS 的出现填补了这个空白。
它的意义不仅在于模型本身,更在于它降低了对话式语音合成的门槛——任何人都可以用几行代码生成听起来"像真人聊天"的语音。这为 AI 陪伴、播客自动化、游戏 NPC 对话、有声书旁白等多个场景提供了新的可能性。
随着开源社区持续贡献(如 Awesome-ChatTTS 生态列表的快速扩张)、Discord 社区活跃度持续上升,以及更大规模模型训练的持续推进,ChatTTS 有望成为对话语音生成领域的基础设施级项目。
总结一句话:如果你想让 AI 说话不像机器人,ChatTTS 是目前开源社区中体验最自然、上手最简单、性价比最高的对话语音生成方案之一。
