ChatTTS - A generative speech model for daily dialogue

ChatTTS

A generative speech model for daily dialogue.

Introduction

Note

This repo contains the algorithm infrastructure and some simple examples.

Tip

For the extended end-user products, please refer to the index repo Awesome-ChatTTS maintained by the community.

ChatTTS is a text-to-speech model designed specifically for dialogue scenarios such as LLM assistant.

Supported Languages

  • English
  • Chinese
  • Coming Soon…

Highlights

You can refer to this video on Bilibili for the detailed description.

    1. Conversational TTS: ChatTTS is optimized for dialogue-based tasks, enabling natural and expressive speech synthesis. It supports multiple speakers, facilitating interactive conversations.
    1. Fine-grained Control: The model could predict and control fine-grained prosodic features, including laughter, pauses, and interjections.
    1. Better Prosody: ChatTTS surpasses most of open-source TTS models in terms of prosody. We provide pretrained models to support further research and development.

Dataset & Model

Important

The released model is for academic purposes only.

  • The main model is trained with Chinese and English audio data of 100,000+ hours.
  • The open-source version on HuggingFace is a 40,000 hours pre-trained model without SFT.

Roadmap

  • Open-source the 40k-hours-base model and spk_stats file.
  • Streaming audio generation.
  • Open-source DVAE encoder and zero shot inferring code.
  • Multi-emotion controlling.
  • ChatTTS.cpp (new repo in 2noise org is welcomed)

Licenses

The Code

The code is published under AGPLv3+ license.

The model

The model is published under CC BY-NC 4.0 license. It is intended for educational and research use, and should not be used for any commercial or illegal purposes. The authors do not guarantee the accuracy, completeness, or reliability of the information. The information and data used in this repo, are for academic and research purposes only. The data obtained from publicly available sources, and the authors do not claim any ownership or copyright over the data.

Disclaimer

ChatTTS is a powerful text-to-speech system. However, it is very important to utilize this technology responsibly and ethically. To limit the use of ChatTTS, we added a small amount of high-frequency noise during the training of the 40,000-hour model, and compressed the audio quality as much as possible using MP3 format, to prevent malicious actors from potentially using it for criminal purposes. At the same time, we have internally trained a detection model and plan to open-source it in the future.

Get Started

Clone Repo

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

Install requirements

1. Install Directly

Terminal window
pip install --upgrade -r requirements.txt

2. Install from conda

Terminal window
conda create -n chattts python=3.11
conda activate chattts
pip install -r requirements.txt

Optional: Install vLLM (Linux only)

Terminal window
pip install safetensors vllm==0.2.7 torchaudio

Unrecommended Optional: Install TransformerEngine if using NVIDIA GPU (Linux only)

Warning

DO NOT INSTALL! The adaptation of TransformerEngine is currently under development and CANNOT run properly now. Only install it on developing purpose. See more details on at #672 #676

Note

The installation process is very slow.

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

Unrecommended Optional: Install FlashAttention-2 (mainly NVIDIA GPU)

Warning

DO NOT INSTALL! Currently the FlashAttention-2 will slow down the generating speed according to this issue. Only install it on developing purpose.

Note

See supported devices at the Hugging Face Doc.

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

Quick Start

Make sure you are under the project root directory when you execute these commands below.

1. Launch WebUI

Terminal window
python examples/web/webui.py

2. Infer by Command Line

It will save audio to ./output_audio_n.mp3

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

Installation

  1. Install the stable version from PyPI
Terminal window
pip install ChatTTS
  1. Install the latest version from GitHub
Terminal window
pip install git+https://github.com/2noise/ChatTTS
  1. Install from local directory in dev mode
Terminal window
pip install -e .

Basic Usage

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)
for i in range(len(wavs)):
"""
In some versions of torchaudio, the first line works but in other versions, so does the second line.
"""
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)

FAQ

1. How much VRAM do I need? How about infer speed?

For a 30-second audio clip, at least 4GB of GPU memory is required. For the 4090 GPU, it can generate audio corresponding to approximately 7 semantic tokens per second. The Real-Time Factor (RTF) is around 0.3.

2. Model stability is not good enough, with issues such as multi speakers or poor audio quality.

This is a problem that typically occurs with autoregressive models (for bark and valle). It’s generally difficult to avoid. One can try multiple samples to find a suitable result.

3. Besides laughter, can we control anything else? Can we control other emotions?

In the current released model, the only token-level control units are [laugh], [uv_break], and [lbreak]. In future versions, we may open-source models with additional emotional control capabilities.

Acknowledgements

  • bark, XTTSv2 and valle demonstrate a remarkable TTS result by an autoregressive-style system.
  • fish-speech reveals capability of GVQ as audio tokenizer for LLM modeling.
  • vocos which is used as a pretrained vocoder.

Special Appreciation


← Back to projects