返回目录
开源项目AI 音频与语音类新手

ChatTTS:面向日常对话场景的生成式语音模型

ChatTTS 是 2noise 开源的文本转语音(TTS)模型,专为 LLM 助手等对话场景设计,支持英文与中文(其他语言标注为即将支持)。其特点包括对话式 TTS、多说话人、对笑声/停顿/插话等韵律特征的细粒度控制。代码以 AGPLv3+ 发布,模型权重以 CC BY-NC 4.0 发布,仅限教育与研究用途。

0 次阅读2026/09/17 发布
ChatTTS:面向日常对话场景的生成式语音模型 来源图片

社区作者 · zZz

它解决什么问题

ChatTTS 是一个生成式语音模型(文本转语音系统),定位为面向日常对话场景的 TTS,例如 LLM 助手的语音输出。仓库自述其只包含算法基础设施与少量简单示例;更完整面向终端用户的产品由社区维护的 Awesome-ChatTTS 索引仓库汇总。

支持语言:英文、中文,其他语言标注为 Coming Soon(即将支持)。

核心亮点:

  1. 对话式 TTS:针对对话类任务优化,语音合成自然且富有表现力,支持多说话人,便于交互式对话。
  2. 细粒度控制:模型可预测并控制细粒度韵律特征,包括笑声、停顿和插话。
  3. 更好的韵律:官方称其韵律表现超过多数开源 TTS 模型,并提供预训练模型以支持后续研究与开发。

数据与模型:官方说明主模型使用 10 万小时以上中英文音频数据训练;HuggingFace 上的开源版本是 4 万小时预训练模型,未做 SFT。发布模型仅用于学术目的。

路线图(官方列出):开源 40k 小时基础模型与 spk_stats 文件;流式音频生成;开源 DVAE 编码器与零样本推理代码;多情绪控制;ChatTTS.cpp(欢迎在 2noise 组织下新建仓库)。

许可证:代码以 AGPLv3+ 发布;模型以 CC BY-NC 4.0 发布,仅用于教育与研究,不得用于任何商业或非法用途;作者不对信息准确性、完整性或可靠性作保证,仓库使用的信息与数据仅用于学术研究,数据来自公开来源,作者不主张所有权或版权。

免责声明:官方强调应负责任、合乎伦理地使用该技术。为限制滥用,在 4 万小时模型训练时加入少量高频噪声,并尽量用 MP3 格式压缩音频质量,以防止恶意行为者用于犯罪目的;同时内部已训练检测模型,计划未来开源。

联系方式:欢迎提交 GitHub issues/PRs;正式咨询邮箱 [email protected];在线交流包括 QQ 群(808364215、230696694、933639842、608667975)与 Discord 服务器。仓库页面还提供了代码库结构可视化链接、Bilibili 详细讲解视频、以及英文男声/女声自我介绍示例音频(intro_en_m.webm、intro_en_f.webm)。

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

以下步骤依据仓库 README 整理,执行命令时需位于项目根目录。

一、准备环境与克隆仓库

  1. 克隆仓库:
命令
git clone https://github.com/2noise/ChatTTS
命令
cd ChatTTS

二、安装依赖(requirements.txt) 方式 1,直接安装:

命令
pip install --upgrade -r requirements.txt

方式 2,使用 conda 新建环境(示例使用 Python 3.11):

命令
conda create -n chattts python=3.11
命令
conda activate chattts
命令
pip install -r requirements.txt

注意:官方提示安装过程非常慢。

三、可选安装

vLLM(仅 Linux)

命令
pip install safetensors vllm==0.2.7 torchaudio

四、不推荐的可选安装(官方明确标注“不要安装”,仅用于开发目的)

  1. TransformerEngine(使用 NVIDIA GPU 时,Linux only):官方警告 DO NOT INSTALL,其适配仍在开发中、当前无法正常运行,详见 issue #672、#676:
命令
pip install git+https://github.com/NVIDIA/TransformerEngine.git@stable
  1. FlashAttention-2(主要用于 NVIDIA GPU):官方警告 DO NOT INSTALL,当前会拖慢生成速度(见相关 issue),仅开发用途;支持设备见 Hugging Face 文档:
命令
pip install flash-attn --no-build-isolation

五、首次运行(确保在项目根目录下执行)

  1. 启动 WebUI:
命令
python examples/web/webui.py
  1. 命令行推理(音频会保存为 ./output_audio_n.mp3):
命令
python examples/cmd/run.py "Your text 1." "Your text 2."

六、作为 Python 包安装

从 PyPI 安装稳定版:

可复制命令
pip install ChatTTS

从 GitHub 安装最新版:

可复制命令
pip install git+https://github.com/2noise/ChatTTS

以开发模式从本地目录安装:

可复制命令
pip install -e .

七、基础用法示例 import ChatTTS import torch import torchaudio

chat = ChatTTS.Chat() chat.load(compile=False) # 设为 True 可获得更好性能 texts = ["PUT YOUR 1st TEXT HERE", "PUT YOUR 2nd TEXT HERE"] wavs = chat.infer(texts) for i in range(len(wavs)): try: torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).

unsqueeze(0), 24000) except: torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]), 24000) (不同版本 torchaudio 保存写法不同,故示例同时给出两种写法。)

八、进阶用法示例

rand_spk = chat.sample_random_speaker() # 可保存以便之后复现音色 params_infer_code = ChatTTS.Chat.InferCodeParams(spk_emb=rand_spk, temperature=.3, top_P=0.7, top_K=20)

params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_6]') wavs = chat.infer(texts, params_refine_text=params_refine_text, params_infer_code=params_infer_code)

text = 'What is [uv_break]your favorite english food?[laugh][lbreak]' wavs = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code)

  1. 从高斯分布采样说话人:
  2. 句子级手动控制,使用 oral_(0-9)、laugh_(0-2)、break_(0-7) 生成特殊 token:
  3. 词级手动控制:

九、常见问题(官方 FAQ)

  1. 显存与推理速度:30 秒音频至少需要 4GB 显存;在 4090 上每秒约可生成对应 7 个语义 token 的音频,实时率(RTF)约 0.3。
  1. 模型稳定性不足(出现多说话人、音质差等):这是自回归模型(如 bark、valle)常见问题,通常难以完全避免,可多次采样寻找合适结果。
  1. 除笑声外还能控制什么、能否控制其他情绪:当前发布模型中 token 级控制单元只有 [laugh]、[uv_break]、[lbreak];未来版本可能开源带更多情绪控制能力的模型。

来源教程配图

contributors
配图 1 · contributors查看原图
counter
配图 2 · counter查看原图

适用场景

为 LLM 助手/聊天机器人提供语音播报(对话式 TTS)
多说话人对话式语音合成与交互式语音输出
对笑声
停顿
插话等韵律做细粒度控制的语音生成
中英文混合文本的语音合成(英文官方标注仍为实验性)
语音合成韵律与韵律预测方向的学术研究
自建本地/私有化 TTS 推理服务(WebUI 或命令行批量生成)