🎙 ChatTTS:39k Stars 的开源语音合成模型,4 行 Python 代码让你的文字开口说话
项目地址:github.com/2noise/ChatTTS | ⭐ 39.3k Stars | 🐍 Python | 📜 AGPL-3.0 | 作者:2noise
老实说,市面上的 TTS 模型我试过不少,要么效果像机器人念经,要么部署起来比写业务代码还痛苦。ChatTTS 这玩意儿是我最近翻到的最惊喜的开源项目——专门为对话场景设计的语音合成模型,训练数据超过 10 万小时,4 行代码就能跑起来。
这模型到底能干啥?
ChatTTS 和其他 TTS 最大的区别是:它不是念课文的那种风格,而是正儿八经的对话式语音。它内置了多个 speaker 支持,能预测和精细控制笑、停顿、语气词这些prosodic features(语调特征)。
pip install ChatTTS
就这么一行装好。然后:
import ChatTTS
import torch
import torchaudio
chat = ChatTTS.Chat()
chat.load(compile=False) # 设为 True 性能更好
texts = ["这是 ChatTTS 生成的语音,听着自然吗?", "我觉得比之前那些机器人腔好多了。"]
wavs = chat.infer(texts)
torchaudio.save("output.wav", torch.from_numpy(wavs[0]).unsqueeze(0), 24000)
四行代码,搞定。声音自然到什么程度?我第一次跑出来的时候愣了下——这真的不是真人录的?
进阶玩法:语音克隆级别的控制
ChatTTS 还支持随机 speaker 采样,每次生成的声音都不一样:
# 从高斯分布采样一个随机 speaker
rand_spk = chat.sample_random_speaker()
wavs = chat.infer(texts, rand_spk)
你还可以用不同 seed 来锁定某个 speaker 风格:
params_infer_code = {'spk_emb': rand_spk}
wavs = chat.infer(texts, params_infer_code=params_infer_code)
踩过的坑和注意事项
2. 模型只用于学术研究,License 是 CC BY-NC 4.0,商用需要单独授权。
3. 第一次加载会下载模型文件(~1.5GB),建议提前跑一次把模型缓存好。
4. 默认只会生成短音频(10-20秒),长文本要自己分段,infer 支持批量传入。
和同类比怎么样?
市面上同类开源 TTS 有 Coqui TTS、Bark、XTTS 等。ChatTTS 的优势在于:
缺点是目前只支持中英文,情感控制还在 roadmap 上。