2noise / ChatTTS

2noise/ChatTTS

open_in_new前往仓库

用于日常对话的生成式语音模型。

项目概览

项目概述

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 级控制;多情感控制尚未开放。
  • 其他风险:英文输出仍为实验性质,可能需要多次尝试才能获得满意结果。

官方链接

信息来源和分析时间

信息来源:仓库 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 发布时间为参考)。