2noise / ChatTTS
2noise/ChatTTS
用于日常对话的生成式语音模型。
项目概览
项目概述
ChatTTS 是由 2noise 发布的开源生成式语音模型(TTS),定位为“面向日常对话”的文本转语音系统。它专门为 LLM 助手等对话场景设计,支持中文和英文混合输入。根据 README,主模型基于 100,000+ 小时中英文音频数据训练;开源版本为 40,000 小时预训练模型(未经过 SFT)。当前最新 Release 为 v0.2.5。
核心功能
- 对话式 TTS:针对对话任务优化,可生成自然、有表现力的语音。
- 多说话人:支持 sample_random_speaker() 采样不同音色,便于交互式对话。
- 精细韵律控制:可通过 [oral_]、[laugh_]、[break_*] 等 token 控制口头语、笑声、停顿。
- 词级控制:支持 [uv_break]、[laugh]、[lbreak] 等 token 嵌入文本。
- 流式音频生成:README 路线图显示已开源流式音频生成。
- 附带 WebUI 与命令行示例:examples/web/webui.py、examples/cmd/run.py。
适用与不适用场景
适用场景:
- LLM 助手的语音回复、对话式语音合成。
- 中文/英文混合文本的 TTS 研究和实验。
- 需要多说话人音色采样、韵律细粒度控制的研究场景。
不适用/需谨慎场景:
- 商业用途:模型采用 CC BY-NC 4.0,仅供学术/非商业研究。
- 非法或欺诈性用途:README 明确警示禁止用于犯罪目的。
- 对稳定性要求极高的生产环境:自回归模型存在多说话人漂移或音质不稳定问题。
- 英文体验仍标注为“experimental”。
技术架构与依赖
根据 README,主要依赖包括:
- Python(示例通过 Python 调用)
- PyTorch(torch)与 torchaudio
- 可选 vLLM(仅 Linux)
- 可选且不建议安装:TransformerEngine、FlashAttention-2(README 警告会降低生成速度或尚不可用)
架构信息:
- 使用 DVAE 编码器/解码器,并借助预训练声码器(README 提到 Vocos)。
- 采用自回归式生成路径,与 Bark/Valle 等思路相关。
- README 未提供完整网络结构细节;具体模型结构请参考仓库代码与 HuggingFace 模型卡。
安装与快速开始
安装方式(来自 README):
# 从 PyPI 安装稳定版
pip install ChatTTS
# 或从 GitHub 安装最新版
pip install git+https://github.com/2noise/ChatTTS
# 或克隆仓库后安装依赖
git clone https://github.com/2noise/ChatTTS
cd ChatTTS
pip install --upgrade -r requirements.txt
快速启动:
# WebUI
python examples/web/webui.py
# 命令行推理,输出 ./output_audio_n.mp3
python examples/cmd/run.py 'Your text 1.' 'Your text 2.'
典型使用方法
基础用法:
import ChatTTS
import torch
import torchaudio
chat = ChatTTS.Chat()
chat.load(compile=False)
texts = ['PUT YOUR 1st TEXT HERE', 'PUT YOUR 2nd TEXT HERE']
wavs = chat.infer(texts)
torchaudio.save('output1.wav', torch.from_numpy(wavs[0]).unsqueeze(0), 24000)
进阶用法(采样说话人和韵律控制):
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)
配置与部署要点
- 显存:生成 30 秒音频至少需要 4GB GPU 显存。
- 速度:在 4090 GPU 上约每秒生成 7 个语义 token,RTF 约为 0.3。
- 性能:chat.load(compile=True) 可提升性能(README 推荐)。
- 可选加速:Linux 下可安装 vLLM 0.2.7 和 safetensors。
- 不建议:TransformerEngine 适配尚未完成;FlashAttention-2 当前会降低生成速度。
- 稳定性:自回归模型可能产生多说话人漂移或音质问题,可多次采样挑选结果。
限制、风险与许可证
- 代码许可证:AGPL-3.0(README 写为 AGPLv3+)。
- 模型许可证:CC BY-NC 4.0,仅限教育和研究用途,禁止商业使用。
- 免责声明:作者不保证信息准确性、完整性或可靠性。
- 防滥用:40,000 小时模型训练时加入高频噪声,并用 MP3 压缩音质;作者表示未来将开源检测模型。
- 功能限制:当前仅支持 [laugh]、[uv_break]、[lbreak] 三个 token 级控制;多情感控制尚未开放。
- 其他风险:英文输出仍为实验性质,可能需要多次尝试才能获得满意结果。
官方链接
- GitHub 仓库:https://github.com/2noise/ChatTTS
- HuggingFace 模型:https://huggingface.co/2Noise/ChatTTS
- PyPI:https://pypi.org/project/ChatTTS
- Discord:https://discord.gg/Ud5Jxgx5yD
- README 中提到的 Bilibili 介绍视频:https://www.bilibili.com/video/BV1zn4y1o7iV
- 社区索引仓库:https://github.com/libukai/Awesome-ChatTTS
信息来源和分析时间
信息来源:仓库 README、docs/cn/README.md、docs/jp/README.md、docs/kr/README.md、docs/ru/README.md、docs/es/README.md、docs/fr/README.md 等仓库内文档,以及 Release v0.2.5 信息。 分析时间:2026-04-10(以最新 Release 发布时间为参考)。