Paradee-8M v1.2
Paradee is a small English text-to-speech model. It has 7.88M parameters and is distilled from Kokoro-82M. Version 1.2 speaks four voices, two American and two British.
| Voice | Accent | UTMOS (Kokoro) | WER (Kokoro) |
|---|---|---|---|
af_heart |
American, female | 4.40 (4.52) | 5.8% (5.7%) |
bf_isabella |
British, female | 4.06 (4.41) | 5.7% (5.6%) |
am_puck |
American, male | 4.32 (4.47) | 5.4% (6.3%) |
bm_fable |
British, male | 4.18 (4.32) | 5.7% (5.7%) |
- Small. The int8 model is one 8.5 MB ONNX file for all four voices, against 325 MB for Kokoro.
- Fast. It runs about 62x faster than real time on one CPU thread, with no GPU, the same as v1.1.
- Same quality on af_heart.
af_heartscores 4.40 on UTMOS, against 4.39 for v1.1.
The code, the training scripts and the Python package are at github.com/sahilmahendrakar/paradee. The paper, Paradee: Distilling Kokoro-82M into an 8M-Parameter Single-Voice Text-to-Speech Model, describes v1.0.
What changed since v1.1
The model is the same size and shape as Paradee-8M v1.1. Each half now has a small table with one learned vector per voice, and the voice you pick chooses the row. Everything else is shared between the four voices.
Both halves started from v1.1 and were trained further on Kokoro reading 12,000 sentences in each
of the four voices. bf_isabella was the hardest voice to learn, so it was shown three times as
often in the last round.
The British voices need British phonemes. For bf_isabella and bm_fable, the Python package
uses misaki's British pronunciation (for example "bath" becomes bˈɑːθ and "go" becomes ɡˈQ),
which is what Kokoro used when it read their training sentences.
Samples
Five sentences read by each voice, by Paradee v1.2 and by its teacher. The sentences are in
samples/sentences.txt.
| # | af_heart | bf_isabella | am_puck | bm_fable |
|---|---|---|---|---|
| 1 | Paradee · Kokoro | Paradee · Kokoro | Paradee · Kokoro | Paradee · Kokoro |
| 2 | Paradee · Kokoro | Paradee · Kokoro | Paradee · Kokoro | Paradee · Kokoro |
| 3 | Paradee · Kokoro | Paradee · Kokoro | Paradee · Kokoro | Paradee · Kokoro |
| 4 | Paradee · Kokoro | Paradee · Kokoro | Paradee · Kokoro | Paradee · Kokoro |
| 5 | Paradee · Kokoro | Paradee · Kokoro | Paradee · Kokoro | Paradee · Kokoro |
Usage
pip install git+https://github.com/sahilmahendrakar/paradee
python -m paradee "Paradee is a small voice that runs anywhere." --voice bf_isabella -o hello.wav
from paradee import Paradee, SAMPLE_RATE
import soundfile as sf
tts = Paradee() # v1.2; Paradee(version="1.1") loads the previous release
sf.write("hello.wav", tts("Paradee is a small voice that runs anywhere.", voice="bm_fable"), SAMPLE_RATE)
Files
| File | What it is |
|---|---|
onnx/paradee_int8.onnx |
The whole model in one graph, weights in int8 (8.5 MB). Use this one. |
onnx/paradee.onnx |
The same graph in fp32 (35 MB). It sounds the same. |
config.json |
Kokoro's phoneme vocabulary, the sample rate and the list of voices in model order |
tokenizer.json |
The same vocabulary in the format transformers.js and kokoro-js load |
pytorch/text_side.pt, pytorch/decoder.pt |
PyTorch weights for the two halves, for the training code on GitHub |
samples/ |
The audio above |
The ONNX graph goes from phoneme ids to audio.
- Inputs.
input_idsis int64[1, T], phoneme ids fromconfig.jsonwith a0pad token at each end, at most 512 in total.speedis float32[1], where 1.0 is normal speed.voiceis int64[1], the voice's position in thevoiceslist inconfig.json(0 isaf_heart). - Output.
waveformis float32[1, samples]at 24 kHz.
The only change from v1.1 is the new voice input. The graph draws its own random noise, so two
runs on the same text differ slightly in the noisy parts of the sound.
Phonemes must be written the way misaki, Kokoro's own
grapheme-to-phoneme library, writes them, with its American dictionary for af_heart and
am_puck and its British dictionary for bf_isabella and bm_fable. In the browser, kokoro-js
phonemizes with eSpeak NG instead. There,
web/misaki.js converts
eSpeak's spelling to misaki's, for both accents.
Results
All numbers are on the same 200 held-out sentences, scored the same way as for v1.0 and v1.1. Paradee's numbers are for the int8 ONNX file.
| Model (voice) | Params | File size | UTMOS | WER |
|---|---|---|---|---|
| Paradee v1.2 (af_heart) | 7.88M | 8.46 MB | 4.40 | 5.8% |
| Paradee v1.2 (bf_isabella) | 4.06 | 5.7% | ||
| Paradee v1.2 (am_puck) | 4.32 | 5.4% | ||
| Paradee v1.2 (bm_fable) | 4.18 | 5.7% | ||
| Paradee v1.1 (af_heart) | 7.88M | 8.46 MB | 4.39 | 5.9% |
| Kokoro-82M, teacher (af_heart) | 81.8M | 325 MB | 4.52 | 5.7% |
| Kokoro-82M, teacher (bf_isabella) | 4.41 | 5.6% | ||
| Kokoro-82M, teacher (am_puck) | 4.47 | 6.3% | ||
| Kokoro-82M, teacher (bm_fable) | 4.32 | 5.7% |
v1.2 runs at the same speed as v1.1. Measured side by side in onnxruntime on one CPU thread, the two files are within 1% of each other. v1.1 runs about 62x faster than real time on an Apple M4 Pro.
UTMOS is a neural network trained on human ratings. It predicts how natural a clip sounds, on a scale from 1 to 5. WER is the share of words that Whisper (base) transcribes wrongly.
How it was made
Paradee has a 4.23M text side and a 3.65M decoder. The two halves were trained separately against the frozen teacher, on 12,000 WikiText-103 sentences read by Kokoro in each voice.
- The text side learns to predict the teacher's phoneme durations, pitch, loudness and feature encodings from the phonemes. It is Kokoro's own code at smaller widths.
- The decoder learns to turn the teacher's durations, pitch, loudness and feature encodings into the teacher's audio, first with spectrogram losses and then with adversarial training. Its last part is the head introduced in v1.1.
- The halves are joined with no further training.
Training for v1.2 started from v1.1 and ran on one cloud GPU.
Limitations
- English only, and four voices.
- Numbers, abbreviations and unusual words are pronounced only as well as misaki handles them.
- In the browser, eSpeak's British voice says some words differently from misaki, mostly the vowel in words like "bath", "dance" and "fast".
License
Apache 2.0, the same as Kokoro-82M.
Citation
The paper describes v1.0.
@misc{mahendrakar2026paradee,
title = {Paradee: Distilling Kokoro-82M into an 8M-Parameter Single-Voice Text-to-Speech Model},
author = {Mahendrakar, Sahil},
year = {2026},
url = {https://huggingface.co/sahilmahendrakar/Paradee-8M-v1.0}
}