## 项目概述

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）：

```bash
# 从 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
```

快速启动：

```bash
# WebUI
python examples/web/webui.py

# 命令行推理，输出 ./output_audio_n.mp3
python examples/cmd/run.py 'Your text 1.' 'Your text 2.'
```

## 典型使用方法

基础用法：

```python
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)
```

进阶用法（采样说话人和韵律控制）：

```python
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)
```

词级控制示例：

```python
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 发布时间为参考）。