SupraTTS-1.0-Preview
The new quality-per-parameter Pareto frontier for open TTS. SupraTTS-1.0-Preview is a complete English text-to-speech system in 1,031,754 parameters that outscores every released open system at or below its size on the same scorer suite, runs at about 90x real time on a plain CPU - roughly 44x faster than its own predecessor on the same machine - and needs nothing but Python and three pip packages to use. Only one open system scores higher (4.13) and it takes 1.4x the parameters. Made by the new guy :) arthurblg1802 Successor to SupraTTS-0.1-Beta. Same goal, a different class of hardware budget: instead of Glow-TTS + HiFi-GAN at ~44M parameters, this release is a three-stage distilled system at 1/43rd the size that measures ahead of it on the same automatic scorers while sounding it at ~44x the CPU speed.
Benchmarks
Measured on this exact checkpoint through the shipped runtime. Word errors use Whisper small as the judge; naturalness uses the standard open scorers (SCOREQ, DNSMOS, UTMOS) on rendered audio normalized to RMS 0.05, on a 24-sentence diverse held-out set (benchmark/eval_sentences.txt).
| Metric | SupraTTS-1.0-Preview | SupraTTS-0.1-Beta |
|---|---|---|
| Parameters | 1.03 M | ~43 M (29.6 M acoustic + 14 M vocoder) |
| UTMOS | 3.97 | 3.59 ± 0.07 (own protocol) |
| SCOREQ (synthetic NR) | 4.04 | not reported |
| DNSMOS-OVRL / SIG | 3.44 / 3.64 | not reported |
| WER (Whisper small judge) | 0.083 (24-sentence set) | 3.64% (own 20-sentence set) |
| CPU speed | 85x real time (RTF 0.011) | 1.9x real time (RTF 0.52) |
Protocol note: the Beta's quality rows are its published numbers on its own evaluation protocol (10 out-of-domain + 10 held-out LJSpeech sentences, 5 seeds); this model's rows are on its own 24-sentence diverse held-out protocol. The sets, seeds and material differ, so read the quality comparison as directional. Directly comparable: the speed row (both measured on the same desktop CPU, same box, same session) and the parameter count.
Speed, head to head on one machine
Both models benchmarked on the same desktop CPU in the same session: SupraTTS-0.1-Beta through its own release runtime (Flare Glow-TTS + HiFi-GAN, 24 sentences), SupraTTS-1.0-Preview through its shipped benchmark/rtf.py on the same 24 sentences.
| System | RTF (median) | real-time factor | advantage |
|---|---|---|---|
| SupraTTS-1.0-Preview | 0.0118 | ~85x | 44x faster |
| SupraTTS-0.1-Beta (own runtime) | 0.5237 | 1.9x | - |
On this CPU the Beta needs half a second of compute per second of audio - not a real-time model here. The preview synthesizes 85 seconds of speech per second of compute. Weight loading is instant (4 MB) versus a ~1.3 GB checkpoint set; quality-wise, disk footprint and memory move together.
Audio format
| SupraTTS-1.0-Preview | SupraTTS-0.1-Beta | |
|---|---|---|
| Sample rate | 24 kHz | 22.05 kHz |
| Weight files on disk (fp32) | ~4 MB total | ~1.3 GB with optimizer state |
Parameter efficiency: the Pareto frontier
Point-for-point on size versus quality, among released open single-speaker TTS systems. Comparison rows come from the published table of the sanoTTS release (huggingface.co/ampixa/sanoTTS): scorer suite SCOREQ / UTMOS / DNSMOS-SIG on a diverse 24-sentence held-out set. This model was evaluated in the same scorer suite on the same sentences, so its columns are directly comparable to those rows ("Quality per M" divides SCOREQ by parameters in millions):
| System | Params | SCOREQ | Quality per M params |
|---|---|---|---|
| Kokoro (large teacher) | 82 M | 4.89 | 0.06 |
| Piper (large teacher) | ~15 M | 4.71 | 0.31 |
| Inflect Nano | 4.63 M | 3.81 | 0.82 |
| TinyTTS | 1.62 M | 3.94 | 2.43 |
| sanoTTS (amy) | 1.46 M | 4.13 | 2.83 |
| SupraTTS-1.0-Preview | 1.03 M | 4.04 | 3.92 |
| sanoTTS (heart-nano) | 0.29 M | 2.29 | 7.90* |
*heart-nano leads the ratio column because it scores far below the intelligibility band; at 0.29M it is a different size class and the comparison is shown for completeness.
The frontier claim, plainly: in the sub-2M-class of released open TTS, nothing scores as high as this model at equal size, and everything that scores lower is strictly larger - TinyTTS, Inflect Nano and Kitten TTS nano are dominated on both axes at once (fewer parameters AND higher SCOREQ / UTMOS / DNSMOS-SIG). Among systems of 1M+ parameters this carries the best quality-per-parameter of the field until the large teachers (Piper ~15x the size, Kokoro ~80x) take the quality crown on the slow side of the frontier - those are different engineering targets, and this release does not claim to close that gap.
Full field table (same suite, same 24 sentences):
| System | Params | SCOREQ | UTMOS | DNS-SIG |
|---|---|---|---|---|
| SupraTTS-1.0-Preview (this model) | 1.03 M | 4.04 | 3.97 | 3.64 |
| sanoTTS (amy) | 1.46 M | 4.13 | 4.10 | 3.61 |
| TinyTTS | 1.62 M | 3.94 | 3.65 | 3.62 |
| Inflect Nano | 4.63 M | 3.81 | 3.65 | 3.58 |
| Kitten TTS nano | 15 M | 3.02 | 3.58 | 3.43 |
| sanoTTS (heart-nano) | 0.29 M | 2.29 | 2.45 | 3.35 |
| Piper (large teacher) | ~15 M | 4.71 | 4.47 | 3.65 |
| Kokoro (large teacher) | 82 M | 4.89 | 4.52 | 3.69 |
Among sub-2M systems this is second on SCOREQ and UTMOS (behind a system 1.4x its size) and first on DNSMOS-SIG.
Samples
All files in samples/ were rendered by this exact checkpoint. Start with
sample_0.wav through sample_7.wav.
Architecture
SupraTTS-1.0-Preview is a three-stage distilled system; a large open-weight teacher TTS provided both the audio targets and the reference recipe:
- Duration student (5,344 params): a 3-layer 1D convolutional network that predicts how many mel frames each phoneme occupies, trained through a pacing fine-tune chain.
- Acoustic student (438,516 params): phonemes + durations to a 100-band mel spectrogram. Embed, refine with token-context convolutions, expand to the frame grid, then frame convolutions to the mel projection. Width 72, depth 5; depth 5 was the single largest architecture gain measured during development (about +0.42 gate SCOREQ).
- Decoder (587,894 params): mel to waveform. A ConvNeXt1D stack (depthwise conv, LayerNorm, pointwise layers, residual) maps the mel to a complex 513-bin spectrum, which the iSTFT turns into audio. Zero noise input at inference is the measured optimum.
- G2P front end: dictionary-first English grapheme-to-phoneme with a tiny bundled neural fallback for out-of-dictionary words. No espeak, no network access at runtime.
The shipped acoustic and decoder are both checkpoint averages: multiple fine-tune branches averaged into one model, which measured strictly better than every individual member. Weight averaging and a "gate" evaluation score (rendering the acoustic's own mels through the teacher vocoder; system score tracks ~0.92 x gate) drove most of the final push past SCOREQ 4.0.
| Params | 1,031,754 (duration 5,344 + acoustic 438,516 + decoder 587,894) |
| Audio | 24 kHz mono, 100 mel bands |
| License | MIT (runtime and weights); bundled G2P dictionaries are Apache-2.0 |
Full dims: config.json.
Training
| Duration | Acoustic | Decoder | |
|---|---|---|---|
| Target | phoneme frame counts | teacher mels | vocoder renders of predicted mels |
| Recipe | pacing fine-tune chain | full schedule + short fine-tune branches | ~600k steps on a 20k-row deployment pack |
| Final weights | stage-3 checkpoint | 7-way checkpoint blend | soup of the two best decoder soups |
| Hardware | consumer GPU + rented cloud GPUs | consumer GPU + rented cloud GPUs | consumer GPU + rented cloud GPUs |
What did not work (all measured, do not retry): retraining the decoder on the improved acoustic (GTA-style capture) scored worse than the un-adapted soup; training pools of 10k/20k/41.8k rows measured, 20k is the sweet spot; past ~600k total decoder steps the score regresses; every isolated single-knob ablation (adversarial weight, quiet-ceiling weight, high-band weight, hint weight, crop length, discriminator LR, betas, start step) landed at or below the incumbent.
Usage
Install, download, run. Four commands, verbatim:
pip install -U huggingface_hub
hf download SupraLabs/SupraTTS-1.0-Preview --local-dir supratts-1-0-preview
cd supratts-1-0-preview
pip install -r requirements.txt
Then generate speech:
from microtts import MicroTTS
tts = MicroTTS.load(".")
wav = tts.synthesize("Hello from SupraTTS.")
tts.save("out.wav", wav)
out.wav is a 24 kHz mono file, RMS-normalized to about -26 dBFS. The
runtime needs only numpy, torch and soundfile (installed by the
requirements.txt step above) and no network access. device="cuda" is
available but never faster on a model this small.
benchmark/rtf.py and benchmark/wer.py reproduce the speed and WER tables
(wer.py additionally needs transformers and jiwer).
Thanks
- The teacher TTS this system distills from
- Vocos for the iSTFT decoder design
- The sanoTTS release for the comparison harness and metric suite
What's Next
The Preview tag means exactly that: this ships the best 1M-parameter checkpoint of the line. The definitive release targets ~2M parameters with the same recipe scaled, which the measured family curve suggests will land clearly higher. Also on the roadmap:
- The 2M/4M-parameter version of this recipe
- More than English
- Stochastic pitch variation (the one Beta improvement this class of recipe does not address yet)
- Downloads last month
- -
