A few weeks ago I released Paradee, an 8M parameter voice model distilled from Kokoro-82M. Today I’m releasing Paradee-8M-v1.1. It sounds cleaner, and it runs more than three times faster.
Here’s one sentence read by both versions.
In the wild, parakeets fly in loud, colorful flocks across the open grasslands of Australia.
| Paradee-8M-v1.0 | Paradee-8M-v1.1 | |
|---|---|---|
| File size | 9.0 MB | 8.5 MB |
| Speed on one CPU thread | 18x real time | 62x real time |
| Naturalness score (out of 5) | 4.41 | 4.39 |
| Words misheard | 5.9% | 5.9% |
These are measured on the same 200 held-out sentences as before. UTMOS is a model trained on human ratings that predicts how natural a clip sounds. UTMOS wasn’t a reliable metric for the buzz or static noise listeners could hear in Paradee-8M-v1.0. So for this release I relied on listening to the two side by side rather than on UTMOS.
Here’s how v1.1 compares with Kokoro and other small open voice models on the same sentences. The area of each bubble shows the model’s file size.


What changed
Version 1.1 keeps the text side and most of the decoder, and replaces only the last part, the part that produces the waveform. In v1.0 that was a smaller copy of Kokoro’s waveform generator. It takes the decoder’s 80 frames per second and upsamples them step by step until it reaches 24,000 audio samples per second. That upsampling used most of Paradee’s compute, and the phase it predicted was slightly off, which caused the buzz. I needed a separate filter after it to clean that up.
For v1.1 I replaced it with a head based on Vocos. Vocos never upsamples. It predicts each frame’s spectrogram directly at the frame rate and turns that into audio with a fixed formula, so it is much faster. I also hoped a head like this would let me fix the buzz in the model itself instead of with a filter.
My head differs from Vocos for voiced sounds. A voiced sound, like a vowel, is made of a tone at the pitch plus tones at two, three, four times the pitch and so on. Since the text side already predicts the pitch, the head generates those tones directly, so their timing is always right, and the network only predicts how loud each one should be. Everything else is made by shaping random noise.
The result is faster inference and cleaner audio, without the filter from v1.0.
Here’s a close-up of the word “wild” between 1.5 and 4.5 kHz. Time goes left to right, frequency goes up, and brighter means louder. Kokoro has distinct stripes that rise and fall with the pitch. In v1.0 they are smeared, and in v1.1 they are clear again.

Try it
Paradee-8M-v1.1 is now the light voice in Chickadee, a Chrome extension that reads web pages aloud using local voice models. Install it, choose Paradee as the voice model, and have it read out a web page.
The Python package now uses v1.1 by default, and the model file is a drop-in replacement for v1.0.
pip install git+https://github.com/sahilmahendrakar/paradee
python -m paradee "Paradee is a small voice that runs anywhere." -o hello.wavLinks
- Model: Hugging Face
- Code: GitHub
- Chickadee: Chrome Web Store
- Paper (describes v1.0): arXiv
- First post: Paradee: Distilling a voice model to one-tenth its size
