欣淇
发布于 2026-05-14 / 0 阅读
0
0

🎙 ChatTTS:39k Stars 的开源语音合成模型,4 行 Python 代码让你的文字开口说话

🎙 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)

踩过的坑和注意事项

  • 不要在 Windows 上直接装 flash-attn — 它反而会拖慢速度。默认配置就已经够快。
  • 2. 模型只用于学术研究,License 是 CC BY-NC 4.0,商用需要单独授权。

    3. 第一次加载会下载模型文件(~1.5GB),建议提前跑一次把模型缓存好。

    4. 默认只会生成短音频(10-20秒),长文本要自己分段,infer 支持批量传入。

    和同类比怎么样?

    市面上同类开源 TTS 有 Coqui TTS、Bark、XTTS 等。ChatTTS 的优势在于:

  • 中文效果最好 — 10 万小时训练数据里有大量中文对话
  • 安装最简单 — 相比 Bark 的 5 个依赖包,ChatTTS 一个 pip 完事
  • 对话感最强 — 它不是朗读风格,是真的像两个人在聊天
  • 缺点是目前只支持中英文,情感控制还在 roadmap 上。

    总结

  • ChatTTS 是当前开源对话式 TTS 的标杆,39k Stars 不是白来的
  • 4 行代码跑起来,pip install 就搞定
  • 中文效果碾压同级别模型,英文也不错
  • 学术用免费,商用看 License
  • 适合 LLM 助手语音输出、语音对话系统、内容创作配音

  • 评论