ZYLU-TTS-1.0

About

ZYLU-TTS-1.0 is an English single-speaker TTS model: a Glow-TTS acoustic model and a HiFi-GAN v1 vocoder, both trained from scratch on LJSpeech (no pre-trained weights), on a single NVIDIA A100-SXM4-80GB. It follows the recipe of SupraTTS-0.1-Beta.

  • Acoustic model: ~28.6M parameters, same encoder/decoder layout as SupraTTS-0.1-Beta, with the deterministic duration predictor instead of the stochastic one.
  • Vocoder: HiFi-GAN v1, ~13.9M parameters (generator), trained on ground-truth mels.
  • Fixes applied vs. Coqui defaults: LR scheduler of the acoustic model stepped per step (not per epoch), blank tokens between input tokens, bf16, large batch. Both models share one audio configuration.
  • The two models were trained at the same time on the same GPU.

Benchmarks

Evaluated on 10 out-of-domain sentences + 10 held-out LJSpeech sentences, 5 seeds each (the held-out utterances were excluded from the training of both models). UTMOS is an automatic MOS estimate (1-5), F0-Std is pitch variation inside a sentence in semitones, WER is Whisper (openai/whisper-small.en) word error rate used as a mispronunciation check, tempo is synthesised duration over real duration on the held-out sentences. Ground truth is measured on the held-out recordings with the same code.

System UTMOS (higher is better) F0-Std [st] WER % (lower is better) Tempo vs. Ground Truth
Ground Truth (held-out recordings) 4.35 ± 0.14 3.86 3.70 1.000
Vocoder alone (copy-synthesis of held-out recordings) 3.52 ± 0.32 3.67 2.96 -
ZYLU-TTS-1.0 (this model) 3.09 ± 0.27 2.96 6.82 0.979

Numbers from different evaluation setups are not directly comparable, so they are not placed side by side with other models.

Config

  • Acoustic: Glow-TTS (12 flow blocks, 192 hidden channels, rel-pos-transformer encoder, 6 layers), deterministic duration predictor
  • Vocoder: HiFi-GAN v1 (upsample 8x8x2x2, 512 initial channels), feature-matching weight 108, L1 mel weight 45
  • Input: espeak phonemes (en-us), blank tokens between tokens
  • Sample rate: 22050 Hz, 80 mel bands
  • Dataset: LJSpeech-1.1 (single English female speaker, ~24h), 200 utterances held out

Training

Acoustic model Vocoder
Steps 19440 (96 epochs) 27720 (68 epochs)
Batch size 64 32 (8192-sample segments)
Precision bf16 fp32
Optimizer / LR Coqui default (RAdam), NoamLR, peak 0.001, warmup 4000, stepped per step AdamW, 0.0002, ExponentialLR 0.999 per epoch
Hardware 1x NVIDIA A100-SXM4-80GB (shared with the vocoder run) 1x NVIDIA A100-SXM4-80GB (shared with the acoustic run)
Wall-clock time ~13.0 h ~13.0 h

How to Run Locally

Requirements: Python 3.10+, PyTorch with CUDA, pip install "coqui-tts[codec]" "transformers<5", and espeak-ng (apt install espeak-ng).

python3 infer.py "Hello, this is a test." --out output.wav

Or from Python:

import infer
b = infer.load()
wav = infer.synth(b, "Hello, this is a test.")

Limitations

English only, one speaker. Pitch variation is below the real recordings, and the deterministic duration predictor gives identical timing on every run (only the acoustic noise changes with the seed).

Thanks

What's Next

  • Stochastic duration predictor and stochastic pitch
  • Other languages (Portuguese) and more than one speaker
  • Inline style tags and zero-shot cloning
Downloads last month
14
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train caikybaldo999/ZYLU-TTS-1.0

Collection including caikybaldo999/ZYLU-TTS-1.0

Papers for caikybaldo999/ZYLU-TTS-1.0