a deep learning toolkit for Text-to-Speech, battle-tested in research and production
Go to file
a-froghyar 8be21ec387
Capacitron (#977)
* new CI config

* initial Capacitron implementation

* delete old unused file

* fix empty formatting changes

* update losses and training script

* fix previous commit

* fix commit

* Add Capacitron test and first round of test fixes

* revert formatter change

* add changes to the synthesizer

* add stepwise gradual lr scheduler and changes to the recipe

* add inference script for dev use

* feat: add posterior inference arguments to synth methods
- added reference wav and text args for posterior inference
- some formatting

* fix: add espeak flag to base_tts and dataset APIs
- use_espeak_phonemes flag was not implemented in those APIs
- espeak is now able to be utilised for phoneme generation
- necessary phonemizer for the Capacitron model

* chore: update training script and style
- training script includes the espeak flag and other hyperparams
- made style

* chore: fix linting

* feat: add Tacotron 2 support

* leftover from dev

* chore:rename parser args

* feat: extract optimizers
- created a separate optimizer class to merge the two optimizers

* chore: revert arbitrary trainer changes

* fmt: revert formatting bug

* formatting again

* formatting fixed

* fix: log func

* fix: update optimizer
- Implemented load_state_dict for continuing training

* fix: clean optimizer init for standard models

* improvement: purge espeak flags and add training scripts

* Delete capacitronT2.py

delete old training script, new one is pushed

* feat: capacitron trainer methods
- extracted capacitron specific training  operations from the trainer into custom
methods in taco1 and taco2 models

* chore: renaming and merging capacitron and gst style args

* fix: bug fixes from the previous commit

* fix: implement state_dict method on CapacitronOptimizer

* fix: call method

* fix: inference naming

* Delete train_capacitron.py

* fix: synthesize

* feat: update tests

* chore: fix style

* Delete capacitron_inference.py

* fix: fix train tts t2 capacitron tests

* fix: double forward in T2 train step

* fix: double forward in T1 train step

* fix: run make style

* fix: remove unused import

* fix: test for T1 capacitron

* fix: make lint

* feat: add blizzard2013 recipes

* make style

* fix: update recipes

* chore: make style

* Plot test sentences in Tacotron

* chore: make style and fix import

* fix: call forward first before problematic floordiv op

* fix: update recipes

* feat: add min_audio_len to recipes

* aux_input["style_mel"]

* chore: make style

* Make capacitron T2 recipe more stable

* Remove T1 capacitron Ljspeech

* feat: implement new grad clipping routine and update configs

* make style

* Add pretrained checkpoints

* Add default vocoder

* Change trainer package

* Fix grad clip issue for tacotron

* Fix scheduler issue with tacotron

Co-authored-by: Eren Gölge <egolge@coqui.ai>
Co-authored-by: WeberJulian <julian.weber@hotmail.fr>
Co-authored-by: Eren Gölge <erogol@hotmail.com>
2022-05-20 16:17:11 +02:00
.github Add CPU only Docker image (#1573) 2022-05-12 19:33:27 +02:00
TTS Capacitron (#977) 2022-05-20 16:17:11 +02:00
docs 🐍 Python 3.10.x support and drop Python 3.6 support (#1565) 2022-05-12 15:50:25 +02:00
images update the readme 2021-04-28 21:49:44 +02:00
notebooks Update model file extension (#1422) 2022-03-22 17:55:00 +01:00
recipes Capacitron (#977) 2022-05-20 16:17:11 +02:00
tests Capacitron (#977) 2022-05-20 16:17:11 +02:00
.cardboardlint.yml cardboard config update 2020-06-15 19:04:05 +02:00
.dockerignore Add Dockerfile and build/push CI 2022-04-15 02:17:10 +02:00
.gitignore Update model file extension (#1422) 2022-03-22 17:55:00 +01:00
.pre-commit-config.yaml delete separate tts training scripts and pre-commit configuration 2021-06-28 17:03:19 +02:00
.pylintrc Update pylintrc 2022-02-25 11:12:44 +01:00
.readthedocs.yml Fix readthedocs build 2021-06-30 16:22:48 +02:00
CITATION.cff Add CITATION.cff (#1404) 2022-03-16 12:05:17 +01:00
CODE_OF_CONDUCT.md Update CODE_OF_CONDUCT.md 2021-03-07 11:22:34 +01:00
CODE_OWNERS.rst add CODE_OWNERS.rst 2020-12-17 16:44:50 +01:00
CONTRIBUTING.md Update CONTRIBUTING.md (#1463) 2022-04-15 14:43:46 +02:00
Dockerfile Add CPU only Docker image (#1573) 2022-05-12 19:33:27 +02:00
LICENSE.txt Create LICENSE.txt 2018-02-13 22:37:59 +01:00
MANIFEST.in Add CITATION.cff (#1404) 2022-03-16 12:05:17 +01:00
Makefile 🐍 Python 3.10.x support and drop Python 3.6 support (#1565) 2022-05-12 15:50:25 +02:00
README.md Update CI badges 2022-05-13 14:56:49 +02:00
hubconf.py Fix #618 2021-07-24 11:23:55 +02:00
pyproject.toml 🐍 Python 3.10.x support and drop Python 3.6 support (#1565) 2022-05-12 15:50:25 +02:00
requirements.dev.txt 🐍 Python 3.10.x support and drop Python 3.6 support (#1565) 2022-05-12 15:50:25 +02:00
requirements.notebooks.txt bumpup librosa version to 0.8.0 2021-05-03 14:25:09 +02:00
requirements.txt 🐍 Python 3.10.x support and drop Python 3.6 support (#1565) 2022-05-12 15:50:25 +02:00
run_bash_tests.sh refactoring tests after Coqpit 2021-05-11 11:30:00 +02:00
setup.cfg Make running the server easier 2019-11-27 16:44:33 +01:00
setup.py 🐍 Python 3.10.x support and drop Python 3.6 support (#1565) 2022-05-12 15:50:25 +02:00

README.md

🐸TTS is a library for advanced Text-to-Speech generation. It's built on the latest research, was designed to achieve the best trade-off among ease-of-training, speed and quality. 🐸TTS comes with pretrained models, tools for measuring dataset quality and already used in 20+ languages for products and research projects.

Gitter License PyPI version Covenant Downloads DOI

GithubActions GithubActions GithubActions GithubActions GithubActions GithubActions GithubActions GithubActions GithubActions Docs

📰 Subscribe to 🐸Coqui.ai Newsletter

📢 English Voice Samples and SoundCloud playlist

📄 Text-to-Speech paper collection

💬 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.

Type Platforms
🚨 Bug Reports GitHub Issue Tracker
🎁 Feature Requests & Ideas GitHub Issue Tracker
👩‍💻 Usage Questions Github Discussions
🗯 General Discussion Github Discussions or Gitter Room
Type Links
💼 Documentation ReadTheDocs
💾 Installation TTS/README.md
👩‍💻 Contributing CONTRIBUTING.md
📌 Road Map Main Development Plans
🚀 Released Models TTS Releases and Experimental Models

🥇 TTS Performance

Underlined "TTS*" and "Judy*" are 🐸TTS models

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 underdataset_analysis.
  • Utilities to use and test your models.
  • Modular (but not too much) code base enabling easy implementation of new ideas.

Implemented Models

Text-to-Spectrogram

End-to-End Models

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

You can also help us implement more models.

Install TTS

🐸TTS is tested on Ubuntu 18.04 with python >= 3.7, < 3.11..

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

pip install TTS

If you plan to code or train models, clone 🐸TTS and install it locally.

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.

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

If you are on Windows, 👑@GuyPaddock wrote installation instructions here.

Use TTS

Single Speaker Models

  • List provided models:

    $ tts --list_models
    
  • Run TTS with default models:

    $ tts --text "Text for TTS"
    
  • Run a TTS model with its default vocoder model:

    $ tts --text "Text for TTS" --model_name "<language>/<dataset>/<model_name>
    
  • Run with specific TTS and vocoder models from the list:

    $ tts --text "Text for TTS" --model_name "<language>/<dataset>/<model_name>" --vocoder_name "<language>/<dataset>/<model_name>" --output_path
    
  • 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/config.json --config_path path/to/model.pth --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 as <speaker_id> 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/config.json --config_path path/to/model.pth --speakers_file_path path/to/speaker.json --speaker_idx <speaker_id>
    

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.)
      |- distribute.py              (train your TTS model using Multiple GPUs.)
      |- compute_statistics.py      (compute dataset statistics for normalization.)
      |- ...
    |- 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)