📌 项目地址2noise/ChatTTS | ⭐ 39,355 颗星 | 🔧 Python | 📜 AGPL-3.0

它解决了什么问题

日常对话场景下,语音合成最大的难点不是“读出声”,而是“像人一样说话”。人说话有语气、有停顿、会笑、会犹豫,而大部分开源TTS只能输出平稳的朗读音。ChatTTS专门针对这个缺口设计——它不是通用TTS,而是定位于对话助手、LLM交互的语音模型。

模型用10万小时中英文音频训练,开源版本是4万小时预训练模型,没有做监督微调(SFT)。这意味着它保留了声学多样性,但牺牲了对文本语义的敏感度。README开头就用 > [!Important] 明确:发布的模型仅限学术用途。商业授权?没有。别想了。

我跑通Colab后的几个判断

README里直接给了Colab笔记本(链接),5分钟能跑出结果。我拿了三段对话文本测试:日常聊天、客服咨询、一小段英文播客。

1. 细粒度控制是真的,但你要自己猜语法

README列出了三个可控制特征:[laugh](笑声)、[pause](停顿)、感叹词(比如[uv_break])。我试了在“哈哈”前后加[laugh],输出文件确实笑了,不是后期拼接,是模型直接生成的语气。停顿标记[pause]可以控制时长,但时长参数没公开文档,只能从示例代码里找。翻examples/ipynb/colab.ipynb才看到类似input_text = "今天天气真不错。 [uv_break] 要不我们去散步?"这种写法。

问题是没有独立的标记语法说明。同一个词,前面加停顿和后面加停顿,语感完全不同。要微调出一个自然的对话节奏,得反复试。

2. 韵律确实好,但流式会打折

拿“你觉得这个方案怎么样?”分别用ChatTTS和Coqui TTS(v1.1.2)生成。ChatTTS的结尾上扬更柔和,语速有轻微变化,听起来像真的在提问。README说“在韵律上超越大多数开源TTS”,在对话场景下我同意。

但流式生成(README说已支持)质量下降明显。我用stream=True参数逐块输出音频,流畅度没问题,但整句的抑扬顿挫变平了。如果追求最终质量,建议一次性生成(infer函数不加流式参数)。

3. 情感控制是空的

路线图上“Multi-emotion controlling”是灰色,未完成。你想让模型生气、悲伤?没有接口。唯一能间接影响语气的是调节语速和停顿时长。但底层参数名、取值范围在README和Colab里都没写,得去翻ChatTTS/infer.py源码。我在ChatTTS/gpt.py里找到类似temperaturetop_k的参数,但没有任何情感映射。这是给研究者准备的,产品级应用根本没法用。

三个必须接受的硬伤

1. 多音字和生僻词看运气

模型没做SFT,只学音频的声学统计,不学语义。中文“行”读成“háng”还是“xíng”完全由上下文频率决定。英文人名比如“Nguyen”大概率读成“Nu-gwen”(正确应为“Nwin”)。README没有提供任何后处理或拼音映射。

我试了一个土办法:对于中文多音字,直接在输入文本里写拼音序列(比如“他去了银行(yin hang)”)。但ChatTTS的输入是文本不是音素,拼音序列会被当作单词读出来。这条路走不通。只能期望未来有人贡献映射表,或者等官方更新。

2. 许可证双重锁

  • 代码:AGPLv3+。如果你把ChatTTS跑在服务器上通过网络提供服务,必须公开全部后端代码(包括你写的调用逻辑)。这对SaaS很不友好。
  • 模型权重:CC BY-NC 4.0。直接禁止商业用途。就算你绕过AGPL用其他方式调用,模型本身的授权也堵死了。

README没有附上任何商业授权联系方式。创业团队想省TTS费用,趁早放弃这个方案。

3. 流式质量与一次性生成的差距

README明确写了“Streaming audio generation”已完成,但我实际体验是:流式生成的语速控制更粗糙,断句偶尔不自然。可能因为流式生成用的是更短的上下文窗口。如果要用在实时对话场景(比如机器人语音回复),得接受音质的下降。

谁适合用这个项目

最合适的用法:做对比实验或学术研究。Colab跑通快,5分钟能听到结果。你可以设计两组测试:

  • 同一句话加[laugh]和不加,听微表情差异。
  • 用ChatTTS和Bark、Coqui TTS生成同一段对话,让听众盲评韵律。

不适合:任何想直接集成到产品的开发者。许可、多音字、无法微调、情感控制缺失,四个硬伤叠在一起。如果只需要基础语音合成,Coqui TTS或Piper更省心。如果非要用对话场景,等官方放出更新——但路线图上“Multi-emotion controlling”没有时间表。

路线图进度(基于README)

已完成:

  • 开源4万小时基础模型和spk_stats文件
  • 流式音频生成
  • DVAE编码器和零样本推理代码

未完成:

  • 多情感控制(灰色)
  • ChatTTS.cpp(README说欢迎社区贡献,目前没人接手)

给研究者的两个实用资源

  1. Colab笔记本:README里直接给的链接,GPU跑很快,CPU也能跑(慢)。所有示例代码都在那里,包括细粒度标记的使用方式。
  2. 社区索引仓库Awesome-ChatTTS链接):汇总了各种扩展工具和第三方应用,如果你要做二次开发,先看这个仓库。
  3. 代码可视化链接):一个用户做的时序图,适合先看整体架构再深入源码。

总结

ChatTTS做了一件很特别的事:让文本标记直接控制语气细节(笑声、停顿),韵律质量在开源模型里属于第一梯队。代价是你得接受学术许可证、多音字错误、情感控制的缺失。它是一个优秀的实验工具,但不是现成产品。

最后提醒:README的“Licenses”和“Disclaimer”段落写得很清楚,比任何第三方解读都准确。跑Colab之前,花5分钟读一下原文。

这篇文章对你有帮助吗?

发表回复