tts
๐ธ๐ฌ - a deep learning toolkit for Text-to-Speech, battle-tested in research and production
Science Score: 64.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
โCITATION.cff file
Found CITATION.cff file -
โcodemeta.json file
Found codemeta.json file -
โ.zenodo.json file
Found .zenodo.json file -
โDOI references
-
โAcademic publication links
Links to: arxiv.org, zenodo.org -
โCommitters with academic emails
5 of 163 committers (3.1%) from academic institutions -
โInstitutional organization owner
-
โJOSS paper metadata
-
โScientific vocabulary similarity
Low similarity (11.7%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
๐ธ๐ฌ - a deep learning toolkit for Text-to-Speech, battle-tested in research and production
Basic Info
- Host: GitHub
- Owner: coqui-ai
- License: mpl-2.0
- Language: Python
- Default Branch: dev
- Homepage: http://coqui.ai
- Size: 162 MB
Statistics
- Stars: 41,082
- Watchers: 313
- Forks: 5,316
- Open Issues: 14
- Releases: 98
Topics
Metadata Files
README.md
๐ธCoqui.ai News
- ๐ฃ โTTSv2 is here with 16 languages and better performance across the board.
- ๐ฃ โTTS fine-tuning code is out. Check the example recipes.
- ๐ฃ โTTS can now stream with <200ms latency.
- ๐ฃ โTTS, our production TTS model that can speak 13 languages, is released Blog Post, Demo, Docs
- ๐ฃ ๐ถBark is now available for inference with unconstrained voice cloning. Docs
- ๐ฃ You can use ~1100 Fairseq models with ๐ธTTS.
- ๐ฃ ๐ธTTS now supports ๐ขTortoise with faster inference. Docs
##
**๐ธ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.
______________________________________________________________________
[](https://discord.gg/5eXr5seRrv)
[
Underlined "TTS" and "Judy" are internal ๐ธTTS models that are not released open-source. They are here to show the potential. Models prefixed with a dot (.Jofish .Abe and .Janice) are real human voices.
Features
- High-performance Deep Learning models for Text2Speech tasks.
- Text2Spec models (Tacotron, Tacotron2, Glow-TTS, SpeedySpeech).
- Speaker Encoder to compute speaker embeddings efficiently.
- Vocoder models (MelGAN, Multiband-MelGAN, GAN-TTS, ParallelWaveGAN, WaveGrad, WaveRNN)
- Fast and efficient model training.
- Detailed training logs on the terminal and Tensorboard.
- Support for Multi-speaker TTS.
- Efficient, flexible, lightweight but feature complete
Trainer API. - Released and ready-to-use models.
- Tools to curate Text2Speech datasets under
dataset_analysis. - Utilities to use and test your models.
- Modular (but not too much) code base enabling easy implementation of new ideas.
Model Implementations
Spectrogram models
- Tacotron: paper
- Tacotron2: paper
- Glow-TTS: paper
- Speedy-Speech: paper
- Align-TTS: paper
- FastPitch: paper
- FastSpeech: paper
- FastSpeech2: paper
- SC-GlowTTS: paper
- Capacitron: paper
- OverFlow: paper
- Neural HMM TTS: paper
- Delightful TTS: paper
End-to-End Models
- โTTS: blog
- VITS: paper
- ๐ธ YourTTS: paper
- ๐ข Tortoise: orig. repo
- ๐ถ Bark: orig. repo
Attention Methods
- Guided Attention: paper
- Forward Backward Decoding: paper
- Graves Attention: paper
- Double Decoder Consistency: blog
- Dynamic Convolutional Attention: paper
- Alignment Network: paper
Speaker Encoder
Vocoders
- MelGAN: paper
- MultiBandMelGAN: paper
- ParallelWaveGAN: paper
- GAN-TTS discriminators: paper
- WaveRNN: origin
- WaveGrad: paper
- HiFiGAN: paper
- UnivNet: paper
Voice Conversion
- FreeVC: paper
You can also help us implement more models.
Installation
๐ธTTS is tested on Ubuntu 18.04 with python >= 3.9, < 3.12..
If you are only interested in synthesizing speech with the released ๐ธTTS models, installing from PyPI is the easiest option.
bash
pip install TTS
If you plan to code or train models, clone ๐ธTTS and install it locally.
bash
git clone https://github.com/coqui-ai/TTS
pip install -e .[all,dev,notebooks] # Select the relevant extras
If you are on Ubuntu (Debian), you can also run following commands for installation.
bash
$ 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.
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.
bash
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
```python 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("ttsmodels/multilingual/multi-dataset/xttsv2").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.ttstofile(text="Hello world!", speakerwav="my/cloning/audio.wav", language="en", filepath="output.wav") ```
Running a single speaker model
```python
Init TTS with the target model name
tts = TTS(modelname="ttsmodels/de/thorsten/tacotron2-DDC", progress_bar=False).to(device)
Run TTS
tts.ttstofile(text="Ich bin eine Testnachricht.", filepath=OUTPUTPATH)
Example voice cloning with YourTTS in English, French and Portuguese
tts = TTS(modelname="ttsmodels/multilingual/multi-dataset/yourtts", progressbar=False).to(device) tts.ttstofile("This is voice cloning.", speakerwav="my/cloning/audio.wav", language="en", filepath="output.wav") tts.ttstofile("C'est le clonage de la voix.", speakerwav="my/cloning/audio.wav", language="fr-fr", filepath="output.wav") tts.ttstofile("Isso รฉ clonagem de voz.", speakerwav="my/cloning/audio.wav", language="pt-br", filepath="output.wav") ```
Example voice conversion
Converting the voice in source_wav to the voice of target_wav
python
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")
Example voice cloning together with the voice conversion model.
This way, you can clone voices by using any model in ๐ธTTS.
```python
tts = TTS("ttsmodels/de/thorsten/tacotron2-DDC") tts.ttswithvctofile( "Wie sage ich auf Italienisch, dass ich dich liebe?", speakerwav="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.
```python
TTS with on the fly voice conversion
api = TTS("ttsmodels/deu/fairseq/vits") api.ttswithvctofile( "Wie sage ich auf Italienisch, dass ich dich liebe?", speakerwav="target/speaker.wav", file_path="output.wav" ) ```
Command-line tts
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
- List provided models:
$ tts --list_models
Get model info (for both ttsmodels and vocodermodels):
- Query by type/name:
The modelinfobyname uses the name as it from the --listmodels.
$ tts --model_info_by_name "<model_type>/<language>/<dataset>/<model_name>"For example:$ tts --model_info_by_name tts_models/tr/common-voice/glow-tts $ tts --model_info_by_name vocoder_models/en/ljspeech/hifigan_v2 - Query by type/idx: The modelqueryidx uses the corresponding idx from --list_models.
$ tts --model_info_by_idx "<model_type>/<model_query_idx>"For example:
$ tts --model_info_by_idx tts_models/3- Query info for model info by full name:$ tts --model_info_by_name "<model_type>/<language>/<dataset>/<model_name>"- Query by type/name:
The modelinfobyname uses the name as it from the --listmodels.
Run TTS with default models:
$ tts --text "Text for TTS" --out_path output/path/speech.wav
- Run TTS and pipe out the generated TTS wav file data:
$ tts --text "Text for TTS" --pipe_out --out_path output/path/speech.wav | aplay
- Run a TTS model with its default vocoder model:
$ tts --text "Text for TTS" --model_name "<model_type>/<language>/<dataset>/<model_name>" --out_path output/path/speech.wav
For example:
$ tts --text "Text for TTS" --model_name "tts_models/en/ljspeech/glow-tts" --out_path output/path/speech.wav
- Run with specific TTS and vocoder models from the list:
$ tts --text "Text for TTS" --model_name "<model_type>/<language>/<dataset>/<model_name>" --vocoder_name "<model_type>/<language>/<dataset>/<model_name>" --out_path output/path/speech.wav
For example:
$ tts --text "Text for TTS" --model_name "tts_models/en/ljspeech/glow-tts" --vocoder_name "vocoder_models/en/ljspeech/univnet" --out_path output/path/speech.wav
- Run your own TTS model (Using Griffin-Lim Vocoder):
$ tts --text "Text for TTS" --model_path path/to/model.pth --config_path path/to/config.json --out_path output/path/speech.wav
- Run your own TTS and Vocoder models:
$ tts --text "Text for TTS" --model_path path/to/model.pth --config_path path/to/config.json --out_path output/path/speech.wav
--vocoder_path path/to/vocoder.pth --vocoder_config_path path/to/vocoder_config.json
Multi-speaker Models
- List the available speakers and choose a
among them:
$ tts --model_name "<language>/<dataset>/<model_name>" --list_speaker_idxs
- Run the multi-speaker TTS model with the target speaker ID:
$ tts --text "Text for TTS." --out_path output/path/speech.wav --model_name "<language>/<dataset>/<model_name>" --speaker_idx <speaker_id>
- Run your own multi-speaker TTS model:
$ tts --text "Text for TTS" --out_path output/path/speech.wav --model_path path/to/model.pth --config_path path/to/config.json --speakers_file_path path/to/speaker.json --speaker_idx <speaker_id>
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>
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)
Owner
- Name: coqui
- Login: coqui-ai
- Kind: organization
- Email: info@coqui.ai
- Website: https://coqui.ai
- Twitter: coqui_ai
- Repositories: 17
- Profile: https://github.com/coqui-ai
Coqui, a startup providing open speech tech for everyone ๐ธ
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you want to cite ๐ธ๐ฌ, feel free to use this (but only if you loved it ๐)"
title: "Coqui TTS"
abstract: "A deep learning toolkit for Text-to-Speech, battle-tested in research and production"
date-released: 2021-01-01
authors:
- family-names: "Eren"
given-names: "Gรถlge"
- name: "The Coqui TTS Team"
version: 1.4
doi: 10.5281/zenodo.6334862
license: "MPL-2.0"
url: "https://www.coqui.ai"
repository-code: "https://github.com/coqui-ai/TTS"
keywords:
- machine learning
- deep learning
- artificial intelligence
- text to speech
- TTS
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Eren Gรถlge | e****e@c****i | 2,237 |
| Eren Golge | e****e@m****m | 865 |
| Edresson | e****1@g****m | 297 |
| WeberJulian | j****r@h****r | 170 |
| Eren | e****e@g****m | 68 |
| root | r****t@s****c | 47 |
| SanjaESC | a****v@g****m | 47 |
| Reuben Morais | r****s@g****m | 36 |
| Thomas Werkmeister | t****s@t****m | 35 |
| Thorsten Mueller | M****M@g****t | 29 |
| kirianguiller | k****r@g****m | 25 |
| gerazov | g****v@f****k | 22 |
| Jรถrg Thalheim | j****g@t****o | 13 |
| Aarni Koskela | a****x@i****i | 13 |
| Ayush Chaurasia | a****a@g****m | 12 |
| nmstoker | g****t@n****m | 11 |
| Katsuya Iida | k****a@g****m | 11 |
| Alexander Korolev | S****C | 11 |
| p0p4k | r****a@g****m | 10 |
| thllwg | t****7@u****e | 10 |
| Michael Hansen | m****e@r****g | 8 |
| rishikksh20 | r****0@g****m | 8 |
| mueller91 | n****m@g****t | 7 |
| Enno Hermann | e****n@i****h | 7 |
| Enno Hermann | E****d | 7 |
| Adonis Pujols | a****s | 7 |
| mueller | n****r@a****e | 7 |
| Aya Jafari | a****i@c****i | 6 |
| omahs | 7****s | 6 |
| mittimithai | m****i@g****m | 6 |
| and 133 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 697
- Total pull requests: 297
- Average time to close issues: about 2 months
- Average time to close pull requests: 24 days
- Total issue authors: 579
- Total pull request authors: 144
- Average comments per issue: 4.37
- Average comments per pull request: 2.2
- Merged pull requests: 147
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 93
- Pull requests: 34
- Average time to close issues: about 2 months
- Average time to close pull requests: about 1 month
- Issue authors: 88
- Pull request authors: 20
- Average comments per issue: 2.62
- Average comments per pull request: 2.32
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- vagreenleaf (12)
- phamkhactu (7)
- mllopartbsc (5)
- Lenos500 (5)
- domasofan (5)
- Yaodada12 (4)
- Parvezkhan0 (4)
- erogol (4)
- yukiarimo (4)
- chigkim (4)
- qyum (4)
- thoraxe (3)
- bensonbs (3)
- fakerybakery (3)
- Ca-ressemble-a-du-fake (3)
Pull Request Authors
- erogol (46)
- WeberJulian (21)
- Edresson (17)
- eginhard (14)
- akx (12)
- JaysonAlbert (6)
- Sovanndara1987 (6)
- manmay-nakhashi (4)
- Ben-Epstein (4)
- aaron-lii (4)
- rish106-hub (4)
- suxinsen (4)
- p0p4k (3)
- eltociear (3)
- Aya-AlJafari (3)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 6
-
Total downloads:
- pypi 263,330 last-month
- Total docker downloads: 371
-
Total dependent packages: 14
(may contain duplicates) -
Total dependent repositories: 23
(may contain duplicates) - Total versions: 257
- Total maintainers: 3
pypi.org: tts
Deep learning for Text to Speech by Coqui.
- Homepage: https://github.com/coqui-ai/TTS
- Documentation: https://github.com/coqui-ai/TTS/wiki
- License: MPL-2.0
-
Latest release: 0.22.0
published about 2 years ago
Rankings
proxy.golang.org: github.com/coqui-ai/TTS
- Documentation: https://pkg.go.dev/github.com/coqui-ai/TTS#section-documentation
- License: mpl-2.0
-
Latest release: v0.22.0
published about 2 years ago
Rankings
proxy.golang.org: github.com/coqui-ai/tts
- Documentation: https://pkg.go.dev/github.com/coqui-ai/tts#section-documentation
- License: mpl-2.0
-
Latest release: v0.22.0
published about 2 years ago
Rankings
pypi.org: tts2
Deep learning for Text to Speech by Coqui.
- Homepage: https://github.com/coqui-ai/TTS
- Documentation: https://github.com/coqui-ai/TTS/wiki
- License: MPL-2.0
-
Latest release: 0.7.0
published over 3 years ago
Rankings
Maintainers (1)
pypi.org: dtts
Deep learning for Text to Speech by Coqui.
- Homepage: https://github.com/coqui-ai/TTS
- Documentation: https://github.com/coqui-ai/TTS/wiki
- License: MPL-2.0
-
Latest release: 0.16.5
published over 2 years ago
Rankings
Maintainers (1)
conda-forge.org: tts
- Homepage: https://github.com/coqui-ai/TTS
- License: MPL-2.0
-
Latest release: 0.4.2
published about 4 years ago
Rankings
Dependencies
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v2 composite
- docker/build-push-action v2 composite
- docker/login-action v1 composite
- docker/setup-buildx-action v1 composite
- docker/setup-qemu-action v1 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v2 composite
- actions/download-artifact v2 composite
- actions/setup-python v2 composite
- actions/upload-artifact v2 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- ${BASE} latest build
- ubuntu 22.04 build
- numpy >=1.17.0
- umap-learn *
- furo *
- linkify-it-py *
- myst-parser ==2.0.0
- sphinx ==7.2.5
- sphinx_copybutton *
- sphinx_inline_tabs *
- black * development
- coverage * development
- isort * development
- nose2 * development
- pylint ==2.10.2 development
- mecab-python3 ==1.0.6
- unidic-lite ==1.0.8
- bokeh ==1.4.0
- aiohttp *
- anyascii *
- bangla ==0.0.2
- bnnumerizer *
- bnunicodenormalizer ==0.1.1
- coqpit >=0.0.16
- cython ==0.29.30
- einops *
- encodec *
- flask *
- fsspec ==2023.6.0
- g2pkk >=0.1.1
- gruut ==2.2.3
- inflect ==5.6.0
- jamo *
- jieba *
- k_diffusion *
- librosa ==0.10.0.
- matplotlib *
- nltk *
- numba ==0.57.0
- numba ==0.55.1
- numpy ==1.24.3
- numpy ==1.22.0
- packaging *
- pandas *
- pypinyin *
- pysbd *
- pyyaml *
- scipy >=1.11.2
- soundfile *
- torch >=1.7
- torchaudio *
- tqdm *
- trainer *
- transformers *
- umap-learn ==0.5.1
- unidecode *
- actions/checkout v3 composite
- actions/setup-python v4 composite
- faster_whisper ==0.9.0
- gradio ==4.7.1