大模型 活跃维护

ChatTTS

2noise/ChatTTS

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

39861
Stars 标星
4261
Forks 分支
210
Watchers 关注
62
Open Issues
Python
主要语言
AGPL-3.0
开源协议
10.5 MB
仓库大小
5 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:2noise/ChatTTS
git clone https://github.com/2noise/ChatTTS.git
git clone git@github.com:2noise/ChatTTS.git
README.md main

机器翻译正文由机器翻译自项目原始文档(英文),排版经程序统一处理,可能存在偏差,请以原项目仓库为准。

ChatTTS

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

English | 简体中文 | 日本語 | Русский | Español | Français | 한국어

注意

注意此版本可能不是最新版,所有内容请以英文版为准。

简介

[!注意]
这个仓库包含算法架构和一些简单的示例。

[!提示]
由本仓库衍生出的用户端产品,请参见由社区维护的索引仓库 Awesome-ChatTTS
您可以在这里查看代码库的图解。

ChatTTS 是一款专门为对话场景(例如 LLM 助手)设计的文本转语音模型。

支持的语种

  • 英语
  • 中文
  • 敬请期待...

亮点

你可以参考 Bilibili 上的这个视频,了解本项目的详细情况。

  1. 对话式 TTS: ChatTTS 针对对话式任务进行了优化,能够实现自然且富有表现力的合成语音。它支持多个说话者,便于生成互动式对话。
  2. 精细的控制: 该模型可以预测和控制精细的韵律特征,包括笑声、停顿和插入语。
  3. 更好的韵律: ChatTTS 在韵律方面超越了大多数开源 TTS 模型。我们提供预训练模型以支持进一步的研究和开发。

数据集和模型

  • 主模型使用了 100,000+ 小时的中文和英文音频数据进行训练。
  • HuggingFace 上的开源版本是一个在 40,000 小时数据上进行无监督微调的预训练模型。

路线图

  • 开源 4 万小时基础模型和 spk_stats 文件。
  • 支持流式语音输出。
  • 开源 DVAE 编码器和零样本推理代码
  • 开源具有多情感控制功能的 4 万小时版本。
  • ChatTTS.cpp (欢迎在 2noise 组织中新建仓库)。

免责声明

[!重要]
此仓库仅供学术用途。

本项目旨在用于教育和研究目的,不适用于任何商业或法律目的。作者不保证信息的准确性、完整性和可靠性。此仓库中使用的信息和数据仅供学术和研究目的。数据来自公开来源,作者不声称对数据拥有任何所有权或版权。

ChatTTS 是一款强大的文本转语音系统。但是,负责任和道德地使用这项技术非常重要。为了限制 ChatTTS 的使用,我们在 40,000 小时模型的训练过程中添加了少量高频噪声,并使用 MP3 格式尽可能压缩音频质量,以防止恶意行为者将其用于犯罪目的。同时,我们内部训练了一个检测模型,并计划在未来开源它。

联系方式

欢迎随时提交 GitHub issues/PRs。

合作洽谈

如需就模型和路线图进行合作洽谈,请发送邮件至 open-source@2noise.com

线上讨论

1. 官方 QQ 群
  • 群 1, 808364215 (已满)
  • 群 2, 230696694 (已满)
  • 群 3, 933639842 (已满)
  • 群 4, 608667975
2. 不和

点击加入 Discord

体验教程

克隆仓库

git clone https://github.com/2noise/ChatTTS
cd ChatTTS

安装依赖

1. 直接安装

pip install --upgrade -r requirements.txt

2. 使用 conda 安装

conda create -n chattts
conda activate chattts
pip install -r requirements.txt

可选 : 如果使用 NVIDIA GPU(仅限 Linux),可安装 TransformerEngine。

[!注意]
安装过程可能耗时很长。

[!警告]
TransformerEngine 的适配目前正在开发中,运行时可能会遇到较多问题。仅推荐出于开发目的安装。

pip install git+https://github.com/NVIDIA/TransformerEngine.git@stable

可选 : 安装 FlashAttention-2 (主要适用于 NVIDIA GPU)

[!注意]
支持设备列表详见 Hugging Face Doc.

pip install flash-attn --no-build-isolation

快速启动

确保在执行以下命令时,处于项目根目录下。

1. WebUI 可视化界面

python examples/web/webui.py

2. 命令行交互

生成的音频将保存至 ./output_audio_n.mp3

python examples/cmd/run.py "Your text 1." "Your text 2."

开发教程

安装 Python 包

  1. 从 PyPI 安装稳定版
pip install ChatTTS
  1. 从 GitHub 安装最新版
pip install git+https://github.com/2noise/ChatTTS
  1. 从本地文件夹安装开发版
pip install -e .

基础用法

import ChatTTS
import torch
import torchaudio

chat = ChatTTS.Chat()
chat.load(compile=False) # Set to True for better performance

texts = ["PUT YOUR 1st TEXT HERE", "PUT YOUR 2nd TEXT HERE"]

wavs = chat.infer(texts)

torchaudio.save("output1.wav", torch.from_numpy(wavs[0]), 24000)

进阶用法

###################################
# Sample a speaker from Gaussian.

rand_spk = chat.sample_random_speaker()
print(rand_spk) # save it for later timbre recovery

params_infer_code = ChatTTS.Chat.InferCodeParams(
    spk_emb = rand_spk, # add sampled speaker 
    temperature = .3,   # using custom temperature
    top_P = 0.7,        # top P decode
    top_K = 20,         # top K decode
)

###################################
# For sentence level manual control.

# use oral_(0-9), laugh_(0-2), break_(0-7) 
# to generate special token in text to synthesize.
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,
)

###################################
# For word level manual control.

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)
torchaudio.save("output2.wav", torch.from_numpy(wavs[0]), 24000)

示例: 自我介绍

inputs_en = """
chatTTS 是一个为对话应用设计的文本转语音模型。
[uv_break]它支持混合语言输入[uv_break]并提供多说话人功能,对韵律元素如
[uv_break]笑声[uv_break][laugh],[uv_break]停顿,[uv_break]和语调具有精确控制。
[uv_break]它能生成自然且富有表现力的语音,[uv_break]因此请
[uv_break]自担风险负责任地使用该项目。[uv_break]
""".replace('\n', '') # 英语仍然处于实验阶段。

params_refine_text = ChatTTS.Chat.RefineTextParams(
    prompt='[oral_2][laugh_0][break_4]',
)

audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text)
torchaudio.save("output3.wav", torch.from_numpy(audio_array_en[0]), 24000)
**男性音色** **女性音色**
[男性音色](https://github.com/2noise/ChatTTS/assets/130631963/e0f51251-db7f-4d39-a0e9-3e095bb65de1) [女性音色](https://github.com/2noise/ChatTTS/assets/130631963/f5dcdd01-1091-47c5-8241-c4f6aaaa8bbd)

常见问题

1. 我需要多少 VRAM? 推理速度如何?

对于 30 秒的音频片段,至少需要 4GB 的 GPU 内存。 对于 4090 GPU,它可以每秒生成大约 7 个语义 token 对应的音频。实时因子 (RTF) 约为 0.3。

2. 模型稳定性不够好,存在多个说话者或音频质量差等问题。

这是一个通常发生在自回归模型(例如 bark 和 valle)中的问题,通常很难避免。可以尝试多个样本以找到合适的结果。

3. 除了笑声,我们还能控制其他东西吗?我们能控制其他情绪吗?

在当前发布的模型中,可用的 token 级控制单元是 [laugh], [uv_break][lbreak]。未来的版本中,我们可能会开源具有更多情绪控制功能的模型。

致谢

  • bark, XTTSv2valle 通过自回归式系统展示了非凡的 TTS 效果。
  • fish-speech 揭示了 GVQ 作为 LLM 建模的音频分词器的能力。
  • vocos vocos 被用作预训练声码器。

特别鸣谢

项目浏览量

本站来源与版权声明
  • 本文标题:ChatTTS - 一个用于日常对话的生成型语音模型
  • 本文链接:https://www.cn121.com/llm/2noise-chattts.html
  • 原项目:2noise/ChatTTS 版权归原作者 2noise 及贡献者所有
  • 收录信息:本站于 2026-09-23 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 AGPL-3.0查看 LICENSE 原文),本站译文为其衍生内容;使用、修改、分发请以该仓库 LICENSE 原文为准。基于本页内容形成的衍生作品, 须同样以该协议发布。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 2noise/ChatTTS。
  • 翻译说明:本页正文为人工智能生成内容——由机器翻译对原项目 README 初译、经程序校验排版,可能存在错漏,请以原项目文档为准。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。