Home
Login
2noise/ChatTTS

专为对话场景设计的生成式语音模型,支持中英文混合输入和多说话人能力

AGPL-3.0Python 36.8k2noise Last Updated: 2025-05-23
https://github.com/2noise/ChatTTS

ChatTTS - 专业对话场景文本转语音模型

项目概述

ChatTTS是由2noise团队开发的一款专门针对对话场景设计的生成式文本转语音(TTS)模型。该项目在GitHub上已获得超过35,000+星标,是目前最受欢迎的开源TTS项目之一。

项目地址: https://github.com/2noise/ChatTTS
开发团队: 2noise
开源协议: AGPLv3+ (代码) / CC BY-NC 4.0 (模型)
主要语言支持: 中文、英文

ChatTTS的设计初衷是为LLM助手等对话应用提供自然、流畅的语音交互体验,相比传统TTS模型,它在对话场景下表现更加出色。

核心功能与特性

🎯 对话优化设计

  • 专为对话场景优化: 针对聊天机器人、LLM助手等对话应用进行了专门优化
  • 自然对话体验: 生成的语音更加自然、流畅,适合人机对话场景
  • 交互式对话: 支持多轮对话中的语音连贯性

🎭 多说话人支持

  • 多说话人能力: 支持不同说话人之间的切换,实现多角色对话
  • 说话人采样: 可以从高斯分布中随机采样说话人特征
  • 音色控制: 支持自定义和固定特定音色,保持角色一致性

🎵 精细化韵律控制

  • 笑声控制: 支持添加不同程度的笑声效果 [laugh][laugh_0-2]
  • 停顿控制: 精确控制语音中的停顿和间隔 [uv_break][lbreak][break_0-7]
  • 语调控制: 支持口语化程度调节 [oral_0-9]
  • 情感表达: 能够预测和控制细粒度的韵律特征,包括语调变化

🌐 多语言支持

  • 中英文混合: 原生支持中英文混合输入,无需语言标记
  • 语言自适应: 自动识别和处理不同语言的文本内容
  • 未来扩展: 计划支持更多语言

⚡ 技术优势

  • 先进架构: 基于自回归模型架构,借鉴了Bark、Valle等先进技术
  • 韵律优势: 在韵律表现方面超越了大多数开源TTS模型
  • 高质量预训练: 主模型使用10万+小时的中英文音频数据训练
  • 开源友好: 提供40,000小时预训练基础模型供研究使用

模型规格与性能

训练数据

  • 主模型: 10万+小时中英文音频数据训练
  • 开源版本: 4万小时预训练模型(未经SFT)
  • 数据来源: 公开可用的音频数据源

性能指标

  • GPU要求: 生成30秒音频至少需要4GB GPU内存
  • 生成速度: 4090 GPU约每秒生成7个语义token
  • 实时因子(RTF): 约0.3
  • 音频质量: 24kHz采样率输出

硬件要求

  • 最低配置: 4GB+ GPU内存
  • 推荐配置: RTX 3090/4090等高端显卡
  • CPU: 支持多核处理器加速
  • 内存: 建议16GB+系统内存

安装与使用

快速安装

# 克隆项目
git clone https://github.com/2noise/ChatTTS
cd ChatTTS

# 安装依赖
pip install --upgrade -r requirements.txt

# 或使用conda环境
conda create -n chattts python=3.11
conda activate chattts
pip install -r requirements.txt

基础使用示例

import ChatTTS
import torch
import torchaudio

# 初始化模型
chat = ChatTTS.Chat()
chat.load(compile=False)  # 设为True可获得更好性能

# 文本转语音
texts = ["你好,我是ChatTTS", "Hello, I am ChatTTS"]
wavs = chat.infer(texts)

# 保存音频文件
for i, wav in enumerate(wavs):
    torchaudio.save(f"output_{i}.wav", torch.from_numpy(wav).unsqueeze(0), 24000)

高级控制功能

# 随机采样说话人
rand_spk = chat.sample_random_speaker()

# 设置推理参数
params_infer_code = ChatTTS.Chat.InferCodeParams(
    spk_emb=rand_spk,      # 说话人嵌入
    temperature=0.3,        # 温度参数
    top_P=0.7,             # top-P采样
    top_K=20,              # top-K采样
)

# 设置文本精炼参数
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,
)

应用场景

🤖 AI助手与聊天机器人

  • LLM对话系统的语音输出
  • 智能客服系统
  • 虚拟助手应用

📚 教育与培训

  • 在线教育平台
  • 语言学习应用
  • 有声读物制作

🎬 内容创作

  • 播客制作
  • 视频配音
  • 音频内容生成

🏢 企业应用

  • 会议摘要播报
  • 通知公告语音化
  • 无障碍辅助功能

技术架构

核心组件

  • 文本编码器: 处理输入文本的语义理解
  • 韵律预测器: 预测和控制语音的韵律特征
  • 声码器: 将特征转换为高质量音频波形
  • 说话人编码器: 处理多说话人特征嵌入

模型特点

  • 自回归架构: 基于Transformer的自回归生成模型
  • 端到端训练: 统一的端到端训练框架
  • 多模态融合: 文本、韵律、说话人信息的有效融合

注意事项与限制

使用限制

  • 学术用途: 发布的模型仅限学术研究使用
  • 商业限制: 不得用于商业或非法用途
  • 伦理考量: 添加了高频噪声以防止恶意使用

技术限制

  • 音频长度: 较长音频可能出现质量下降
  • 计算需求: 需要较高的GPU计算资源
  • 语言支持: 目前主要支持中英文

常见问题

  • 生成速度: 可通过优化硬件配置和参数调整改善
  • 音频质量: MP3压缩格式可能影响最终质量
  • 稳定性: 自回归模型可能出现不稳定输出

总结

ChatTTS作为专门针对对话场景设计的TTS模型,在以下方面表现突出:

🎯 专业性: 专门为对话场景优化,在聊天机器人、AI助手等应用中表现优异

🚀 技术先进性: 采用最新的深度学习技术,在韵律控制和多说话人支持方面领先

🌟 开源价值: 提供完整的开源解决方案,降低了高质量TTS技术的使用门槛

🤝 社区活跃: 拥有活跃的开发者社区和丰富的生态资源

⚡ 实用性: 提供了从基础使用到高级控制的完整功能,满足不同层次的需求

ChatTTS的出现填补了对话场景专用TTS模型的空白,为构建更自然的人机语音交互体验提供了强有力的技术支撑。随着技术的不断发展和社区的持续贡献,相信ChatTTS将在语音合成领域发挥越来越重要的作用。