OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  ChatTTS — 优化级文本转语音模型

ChatTTS — 优化级文本转语音模型

 
  cluster ·  2025-12-30 07:50:37 · 9 次点击  · 0 条评论  
2noise%2FChatTTS | Trendshift # ChatTTS 专为日常对话场景设计的生成式语音模型。 [![Licence](https://img.shields.io/github/license/2noise/ChatTTS?style=for-the-badge)](https://github.com/2noise/ChatTTS/blob/main/LICENSE) [![PyPI](https://img.shields.io/pypi/v/ChatTTS.svg?style=for-the-badge&color=green)](https://pypi.org/project/ChatTTS) [![Huggingface](https://img.shields.io/badge/🤗%20-Models-yellow.svg?style=for-the-badge)](https://huggingface.co/2Noise/ChatTTS) [![Open In Colab](https://img.shields.io/badge/Colab-F9AB00?style=for-the-badge&logo=googlecolab&color=525252)](https://colab.research.google.com/github/2noise/ChatTTS/blob/main/examples/ipynb/colab.ipynb) [![Discord](https://img.shields.io/badge/Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/Ud5Jxgx5yD) **English** | [**简体中文**](docs/cn/README.md) | [**日本語**](docs/jp/README.md) | [**Русский**](docs/ru/README.md) | [**Español**](docs/es/README.md) | [**Français**](docs/fr/README.md) | [**한국어**](docs/kr/README.md)

简介

[!Note]
本仓库包含算法基础设施和一些简单示例。

[!Tip]
关于面向终端用户的扩展产品,请参考社区维护的索引仓库 Awesome-ChatTTS
你可以在此处查看代码库的图解可视化:链接

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

支持语言

  • [x] 英语
  • [x] 中文
  • [ ] 即将推出...

亮点

详细描述可参考 Bilibili 上的这个视频

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

数据集与模型

[!Important]
发布的模型仅供学术研究使用。

  • 主模型使用了超过 10 万小时的中英文音频数据进行训练。
  • HuggingFace 上的开源版本是一个 4 万小时的预训练模型,未经过 SFT(监督微调)。

路线图

  • [x] 开源 4 万小时基础模型和 spk_stats 文件。
  • [x] 流式音频生成。
  • [x] 开源 DVAE 编码器和零样本推理代码。
  • [ ] 多情感控制。
  • [ ] ChatTTS.cpp(欢迎在 2noise 组织下创建新仓库)

许可证

代码

代码基于 AGPLv3+ 许可证发布。

模型

模型基于 CC BY-NC 4.0 许可证发布。它仅供教育和研究使用,不得用于任何商业或非法目的。作者不保证信息的准确性、完整性或可靠性。本仓库中使用的信息和数据仅供学术和研究目的。数据来源于公开可用的渠道,作者不对数据主张任何所有权或版权。

免责声明

ChatTTS 是一个强大的文本转语音系统。然而,负责任且合乎道德地利用这项技术非常重要。为了限制 ChatTTS 的使用,我们在训练 4 万小时模型时添加了少量高频噪声,并尽可能使用 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 python=3.11
conda activate chattts
pip install -r requirements.txt

可选:安装 vLLM(仅限 Linux)

pip install safetensors vllm==0.2.7 torchaudio

不推荐的可选项:如果使用 NVIDIA GPU,安装 TransformerEngine(仅限 Linux)

[!Warning]
请勿安装!
TransformerEngine 的适配目前正在开发中,尚无法正常运行。
仅出于开发目的安装。更多详情请参见 #672 #676。

[!Note]
安装过程非常缓慢。

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

不推荐的可选项:安装 FlashAttention-2(主要针对 NVIDIA GPU)

[!Warning]
请勿安装!
根据此问题,当前 FlashAttention-2 会降低生成速度。
仅出于开发目的安装。

[!Note]
支持的设备请参见 Hugging Face 文档

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

快速上手

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

1. 启动 WebUI

python examples/web/webui.py

2. 通过命令行推理

音频将保存为 ./output_audio_n.mp3

python examples/cmd/run.py "你的文本 1。" "你的文本 2。"

安装

  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) # 设置为 True 以获得更好的性能

texts = ["在此处输入您的第 1 段文本", "在此处输入您的第 2 段文本"]

wavs = chat.infer(texts)

for i in range(len(wavs)):
    """
    在某些 torchaudio 版本中,第一行代码有效,而在其他版本中,第二行代码有效。
    """
    try:
        torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).unsqueeze(0), 24000)
    except:
        torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]), 24000)

进阶用法

###################################
# 从高斯分布中采样一个说话人。

rand_spk = chat.sample_random_speaker()
print(rand_spk) # 保存下来以便后续恢复音色

params_infer_code = ChatTTS.Chat.InferCodeParams(
    spk_emb = rand_spk, # 添加采样得到的说话人
    temperature = .3,   # 使用自定义温度
    top_P = 0.7,        # top P 解码
    top_K = 20,         # top K 解码
)

###################################
# 用于句子级别的手动控制。

# 使用 oral_(0-9), laugh_(0-2), break_(0-7)
# 在文本中生成特殊标记以进行合成。
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)
"""
在某些 torchaudio 版本中,第一行代码有效,而在其他版本中,第二行代码有效。
"""
try:
    torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0]).unsqueeze(0), 24000)
except:
    torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0]), 24000)

示例:自我介绍

inputs_en = """
chat T T S is a text to speech model designed for dialogue applications. 
[uv_break]it supports mixed language input [uv_break]and offers multi speaker 
capabilities with precise control over prosodic elements like 
[uv_break]laughter[uv_break][laugh], [uv_break]pauses, [uv_break]and intonation. 
[uv_break]it delivers natural and expressive speech,[uv_break]so please
[uv_break] use the project responsibly at your own risk.[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("self_introduction_output.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 个语义标记对应的音频。实时因子(RTF)约为 0.3。

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

这是自回归模型(如 bark 和 valle)常见的问题。通常很难避免。可以尝试多次采样以找到合适的结果。

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

在当前发布的模型中,唯一的标记级别控制单元是 [laugh][uv_break][lbreak]。在未来的版本中,我们可能会开源具有额外情绪控制能力的模型。

致谢

  • barkXTTSv2valle 通过自回归风格系统展示了卓越的 TTS 效果。
  • fish-speech 揭示了 GVQ 作为 LLM 建模音频标记器的能力。
  • vocos,被用作预训练的声码器。

特别感谢

感谢所有贡献者的努力

contributors

![counter](https://counter.seku.su/cmoe?name=chattts&theme=mbs)
9 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私政策 ·  服务条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 20 ms
Developed with Cursor