Home

Awesome

๐ŸธCoqui TTS News

<img src="https://raw.githubusercontent.com/idiap/coqui-ai-TTS/main/images/coqui-log-green-TTS.png" height="56"/>

๐ŸธTTS is a library for advanced Text-to-Speech generation.

๐Ÿš€ Pretrained models in +1100 languages.

๐Ÿ› ๏ธ Tools for training new models and fine-tuning existing models in any language.

๐Ÿ“š Utilities for dataset analysis and curation.


Discord License PyPI version Downloads DOI

GithubActions GithubActions GithubActions Docs

</div>

๐Ÿ’ฌ Where to ask questions

Please use our dedicated channels for questions and discussion. Help is much more valuable if it's shared publicly so that more people can benefit from it.

TypePlatforms
๐Ÿšจ Bug Reports, Feature Requests & IdeasGitHub Issue Tracker
๐Ÿ‘ฉโ€๐Ÿ’ป Usage QuestionsGitHub Discussions
๐Ÿ—ฏ General DiscussionGitHub Discussions or Discord

The issues and discussions in the original repository are also still a useful source of information.

๐Ÿ”— Links and Resources

TypeLinks
๐Ÿ’ผ DocumentationReadTheDocs
๐Ÿ’พ InstallationTTS/README.md
๐Ÿ‘ฉโ€๐Ÿ’ป ContributingCONTRIBUTING.md
๐Ÿš€ Released ModelsStandard models and Fairseq models in ~1100 languages

Features

Model Implementations

Spectrogram models

End-to-End Models

Attention Methods

Speaker Encoder

Vocoders

Voice Conversion

You can also help us implement more models.

Installation

๐ŸธTTS is tested on Ubuntu 22.04 with python >= 3.9, < 3.13..

If you are only interested in synthesizing speech with the released ๐ŸธTTS models, installing from PyPI is the easiest option.

pip install coqui-tts

If you plan to code or train models, clone ๐ŸธTTS and install it locally.

git clone https://github.com/idiap/coqui-ai-TTS
cd coqui-ai-TTS
pip install -e .

Optional dependencies

The following extras allow the installation of optional dependencies:

NameDescription
allAll optional dependencies
notebooksDependencies only used in notebooks
serverDependencies to run the TTS server
bnBangla G2P
jaJapanese G2P
koKorean G2P
zhChinese G2P
languagesAll language-specific dependencies

You can install extras with one of the following commands:

pip install coqui-tts[server,ja]
pip install -e .[server,ja]

Platforms

If you are on Ubuntu (Debian), you can also run following commands for installation.

make system-deps  # intended to be used on Ubuntu (Debian). Let us know if you have a different OS.
make install

If you are on Windows, ๐Ÿ‘‘@GuyPaddock wrote installation instructions here (note that these are out of date, e.g. you need to have at least Python 3.9).

Docker Image

You can also try TTS without install with the docker image. Simply run the following command and you will be able to run TTS without installing it.

docker run --rm -it -p 5002:5002 --entrypoint /bin/bash ghcr.io/coqui-ai/tts-cpu
python3 TTS/server/server.py --list_models #To get the list of available models
python3 TTS/server/server.py --model_name tts_models/en/vctk/vits # To start a server

You can then enjoy the TTS server here More details about the docker images (like GPU support) can be found here

Synthesizing speech by ๐ŸธTTS

๐Ÿ Python API

Running a multi-speaker and multi-lingual model

import torch
from TTS.api import TTS

# Get device
device = "cuda" if torch.cuda.is_available() else "cpu"

# List available ๐ŸธTTS models
print(TTS().list_models())

# Init TTS
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)

# Run TTS
# โ— Since this model is multi-lingual voice cloning model, we must set the target speaker_wav and language
# Text to speech list of amplitude values as output
wav = tts.tts(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en")
# Text to speech to a file
tts.tts_to_file(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")

Running a single speaker model

# Init TTS with the target model name
tts = TTS(model_name="tts_models/de/thorsten/tacotron2-DDC", progress_bar=False).to(device)

# Run TTS
tts.tts_to_file(text="Ich bin eine Testnachricht.", file_path=OUTPUT_PATH)

# Example voice cloning with YourTTS in English, French and Portuguese
tts = TTS(model_name="tts_models/multilingual/multi-dataset/your_tts", progress_bar=False).to(device)
tts.tts_to_file("This is voice cloning.", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")
tts.tts_to_file("C'est le clonage de la voix.", speaker_wav="my/cloning/audio.wav", language="fr-fr", file_path="output.wav")
tts.tts_to_file("Isso รฉ clonagem de voz.", speaker_wav="my/cloning/audio.wav", language="pt-br", file_path="output.wav")

Example voice conversion

Converting the voice in source_wav to the voice of target_wav

tts = TTS(model_name="voice_conversion_models/multilingual/vctk/freevc24", progress_bar=False).to("cuda")
tts.voice_conversion_to_file(source_wav="my/source.wav", target_wav="my/target.wav", file_path="output.wav")

Other available voice conversion models:

Example voice cloning together with the default voice conversion model.

This way, you can clone voices by using any model in ๐ŸธTTS. The FreeVC model is used for voice conversion after synthesizing speech.


tts = TTS("tts_models/de/thorsten/tacotron2-DDC")
tts.tts_with_vc_to_file(
    "Wie sage ich auf Italienisch, dass ich dich liebe?",
    speaker_wav="target/speaker.wav",
    file_path="output.wav"
)

Example text to speech using Fairseq models in ~1100 languages ๐Ÿคฏ.

For Fairseq models, use the following name format: tts_models/<lang-iso_code>/fairseq/vits. You can find the language ISO codes here and learn about the Fairseq models here.

# TTS with fairseq models
api = TTS("tts_models/deu/fairseq/vits")
api.tts_to_file(
    "Wie sage ich auf Italienisch, dass ich dich liebe?",
    file_path="output.wav"
)

Command-line tts

<!-- begin-tts-readme -->

Synthesize speech on command line.

You can either use your trained model or choose a model from the provided list.

If you don't specify any models, then it uses LJSpeech based English model.

Single Speaker Models

Multi-speaker Models

Voice Conversion Models

$ tts --out_path output/path/speech.wav --model_name "<language>/<dataset>/<model_name>" --source_wav <path/to/speaker/wav> --target_wav <path/to/reference/wav>
<!-- end-tts-readme -->

Directory Structure

|- notebooks/       (Jupyter Notebooks for model evaluation, parameter selection and data analysis.)
|- utils/           (common utilities.)
|- TTS
    |- bin/             (folder for all the executables.)
      |- train*.py                  (train your target model.)
      |- ...
    |- tts/             (text to speech models)
        |- layers/          (model layer definitions)
        |- models/          (model definitions)
        |- utils/           (model specific utilities.)
    |- speaker_encoder/ (Speaker Encoder models.)
        |- (same)
    |- vocoder/         (Vocoder models.)
        |- (same)
    |- vc/         (Voice conversion models.)
        |- (same)