ChatTTS:为说话而生,而非朗读
大多数 TTS 模型都经过优化,力求清晰、悦耳地朗读一段文字——可对于本应让人觉得它真的在与你交谈的聊天机器人或语音助手来说,这恰恰是错误的目标。真实对话中充满短暂停顿、偶尔的笑声,以及脚本里没有写出的“嗯”。由 2noise 团队开发的 ChatTTS 正是围绕这种差别打造的——它优化的目标不是旁白,而是真实对话中更复杂、更自然的质感。
ChatTTS 是什么?
ChatTTS 是一个拥有 3 亿参数的生成式语音模型,专门面向对话场景——LLM 助手对话、聊天机器人声音和交互式语音应用——而不是一般的旁白或有声书式朗读。它同时支持中文和英文,完整模型使用超过 100,000 小时的双语对话数据训练,明确目标是捕捉人们实际交谈时的声音,而不只是文字被朗读时的声音。
细粒度韵律控制:笑声、停顿与语气词
这是 ChatTTS 的标志性能力,而且它内置于模型的核心生成过程,并非作为后处理效果附加在输出上。模型可以在生成语音的同时直接预测和控制细粒度韵律特征——笑声、自然停顿和对话语气词——不需要像其他一些富有表现力的模型那样,由用户手动插入音效标签。根据项目自身的比较结果,它生成的韵律超越了大多数开源 TTS 替代方案,优势具体体现在输出听起来多么自然、像真实对话,而不是朗读得多么清晰。
通过高斯采样生成多说话人语音
ChatTTS 支持多说话人,可用于真正具有互动性的多人对话——例如模拟对话或多角色助手互动。它实现说话人变化的方式值得了解:模型不要求为每个声音提供参考音频,而是可以在自身的推理过程中直接从高斯分布采样说话人,因此,无需为每个声音准备一套预先录制的参考音频库,就能直接生成多种不同的声音。
如实说明实际可用的版本
在基于 ChatTTS 开发之前,有两个细节值得了解,因为它们决定了你对自托管部署可以抱有怎样的现实预期。
开源检查点并不是完整模型。 ChatTTS 表现最佳的内部版本使用完整的 100,000+ 小时数据训练,之后还应用了监督微调(SFT)。公开发布在 Hugging Face 上的版本则是一个基于 40,000 小时数据、未经过该 SFT 步骤的预训练检查点——它确实是一个能力出色的基础模型,但并不是项目最完善的演示比较背后所用的同一版本。
代码与权重采用不同许可证。 ChatTTS 的代码以 AGPLv3+ 发布,而模型权重本身则采用 CC BY-NC 4.0 许可证——这意味着预训练权重仅限非商业用途。如果你的计划包括商业部署,在围绕公开检查点构建产品之前,值得仔细审查这些条款。
ChatTTS 入门
- 克隆仓库。 执行
git clone https://github.com/2noise/ChatTTS.git即可获取代码和设置说明;文档也介绍了通过pip install chattts-fork安装的方法,不过首次安装时会下载接近 1 GB 的内容。 - 加载模型并运行基础生成。 只需几行 Python 代码——
import ChatTTS、chat = ChatTTS.Chat()、chat.load_models()——就能生成第一个音频片段;加载模型时设置compile=True可以提高推理性能,代价是首次加载耗时更长。 - 密切留意标点规则。 ChatTTS 的文本输入明确要求使用英文逗号和句号作为标点——其他标点符号会被视为无效输入。对于刚开始将使用不同标点规范的文本迁移过来的用户,这是造成意外生成失败的常见原因。
- 从高斯分布采样说话人,以获得更多变化。 无需为想要的每个声音寻找参考片段,直接使用模型内置的说话人采样即可生成一系列不同声音。
- 先在普通硬件上测试,再判断是否需要高性能 GPU。 社区在 LattePanda Sigma 迷你 PC 上进行的基准测试报告称,生成一段 22 秒的音频约需 39 秒——处理比例约为 1:2,而且有人认为这与配备 RTX 4090 的机器表现相当。这说明模型对受限硬件的要求,可能比它的参数量所暗示的更宽松。
- 商用前检查当前许可证条款。 鉴于代码与权重分别采用 AGPLv3+ 和 CC BY-NC 4.0,请确认你的具体用途符合条款,尤其是在付费产品中使用预训练权重时。
获得更好结果的技巧
- 专门为对话而不是旁白设计文本。 ChatTTS 针对对话式内容进行了调优——输入生硬、结构正式的文章无法体现它真正为之打造的能力;使用带有自然停顿的对话式措辞,才能更充分发挥它的韵律建模。
- 生成前清理标点。 由于模型严格要求使用英文逗号和句号,可以先对输入文本做一次快速清理,去掉不支持的标点,从而避开这个常见且很容易预防的失败点。
- 使用高斯说话人采样快速制作多声音原型。 与预先为每个角色查找和准备参考片段相比,这能更快测试多说话人对话场景。
- 合理预期开源检查点的能力。 公开版本是基于 40,000 小时数据、SFT 前的模型,而不是使用完整 100,000+ 小时数据微调后的模型。因此应相应调整质量预期,不要假定得到的就是项目最佳演示片段所使用的确切版本。
- 为受限硬件预留现实的生成时间。 如果你正在考虑边缘设备或迷你 PC 部署,LattePanda Sigma 的基准数据很有参考价值——应按约 2 倍实时处理来规划,而不是假定在非 GPU 级硬件上可以即时生成。
ChatTTS 与其他富有表现力的双语模型对比
| ChatTTS | Bark | CosyVoice3 | |
|---|---|---|---|
| 主要设计目标 | 对话、聊天机器人/助手 | 生成式文字转音频(语音、音乐、音效) | 支持方言的多语言克隆 |
| 语言 | 中文、英文 | 13+ | 9 种语言 + 18 种中文方言 |
| 非语言声音 | 原生预测(笑声、停顿、语气词) | 方括号标签([laughter]、[sighs]) | 并非专门功能 |
| 多说话人 | 支持,通过高斯采样 | 预设声音 | 零样本克隆 |
| 参数量 | 300M | 官方未披露这一规模的数据 | 0.5B |
| 权重许可证 | CC BY-NC 4.0(非商业) | MIT | 开放,提供托管 API |
ChatTTS 的特定定位,是专门为两种语言打造的对话优先设计——它不追求广泛的多语言覆盖或最大的表现力范围,而是专注于让中文和英文对话语音听起来像真实交流。对于构建助手或聊天机器人声音的人来说,这比单纯比较语言数量更有意义。
常见问题
ChatTTS 与通用 TTS 模型有何不同?
它专门针对对话式语音而不是旁白进行了优化——在生成过程中直接预测自然停顿、笑声和语气词,面向的是聊天机器人和助手用例,而不是清晰地把文字朗读出来。
公开提供的 ChatTTS 模型是完整版本吗?
不完全是。完整内部模型使用 100,000+ 小时数据训练,并应用了监督微调。公开发布的 Hugging Face 检查点则是使用 40,000 小时数据、未经过该微调步骤的预训练版本。
ChatTTS 可以免费商用吗?
代码采用 AGPLv3+,但模型权重采用限制商业用途的 CC BY-NC 4.0 许可证——在进行任何商业部署之前,请仔细审查当前许可证条款。
为什么 ChatTTS 会拒绝输入文本中的某些标点?
模型的文本处理明确要求使用英文逗号和句号;其他标点会被视为无效输入,因此预先清理文本可以避免常见的生成失败。
ChatTTS 支持声音克隆吗?
不以专用克隆模型所采用的方式支持。它通过对说话人特征进行高斯采样来支持多说话人生成,而不是根据音频片段复刻某个特定参考声音。
把多角色脚本转换为对话音频
如果你已经写好多角色脚本,可以使用 Echora 的文本转对话。最多添加 12 个对话区块、总计 5,000 个字符,为每个区块选择音色,按需添加支持的表达标签,并调整稳定度或说话人增强,然后试听并下载完整对话。