QnVoice Urdu Matcha TTS, Three Steps

Introduction
An on-device Urdu voice just landed on Hugging Face: CholoAsis/qnvoice-urdu-matcha-tts (created 2026-11-07T23:44Z). It is the research release of the Matcha-TTS acoustic model behind Urdu speech in the QnVoice iOS app, shipped as two ONNX files (acoustic model + HiFi-GAN vocoder) that read Urdu script and output 22.05 kHz mono audio fully offline after setup.
The trick is speed: QnVoice kept the teacher's text encoder, flow estimator, and vocabulary, cut the flow solver to three steps, and trained a tiny 75,920-parameter mel correction layer on synthetic teacher output to win back quality.
What Shipped
- Vendor / product: QnVoice Urdu Matcha TTS (CholoAsis), distilled from AhsanTalal/urdu-matcha-tts
- Modality: open-weight Urdu text-to-speech, single voice, no cloning
- Open vs closed: acoustic model derived from an Apache-2.0 checkpoint; HiFi-GAN vocoder under MIT (
LICENSE,NOTICEin the repo) - Runnable today:
hf downloadthe repo and run the includedspeak-urdu-tts.pywith onnxruntime on Python 3.11 - Concrete fact: acoustic inference p50 drops from about 274 ms (teacher) to about 94 ms (three-step student) on two CPU threads in the repo's
evaluation.json
The Numbers in the Repo
- CPU eval (24 prompts, 2 threads): full pipeline p50 about 1.30 s for the teacher versus about 1.11 s for the student; real-time factor p50 about 0.49 versus 0.41
- Intelligibility check: the repo's automated transcript check reports WER about 22.1% for the teacher and 19.3% for the student (CER 9.0% versus 7.5%) on the same 181-word set
- iPhone 15 Pro: median warm synthesis 1.30 s for the distilled model versus 1.50 s for the original across 72 runs per model, covering acoustic inference plus vocoding after load
- Size: about 74 MB for the student pipeline, roughly the same as the teacher; the gain is steps, not bytes
Pro Tip
Most of the remaining latency sits in the vocoder, not the three-step acoustic model. If you are chasing a snappier phone UX, stream or chunk sentences rather than expecting another acoustic-side win.
How to Run It
hf download CholoAsis/qnvoice-urdu-matcha-tts --local-dir qnvoice-urdu-matcha-tts
cd qnvoice-urdu-matcha-tts
python3.11 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
shasum -a 256 -c SHA256SUMS
python speak-urdu-tts.py --model-dir . --text-file glass-of-water.txt --output example.wavThe bundled glass-of-water.txt is a short Urdu request for a glass of water; swap in your own UTF-8 Urdu text file to test longer lines.
Limits to Know
- One voice, Urdu script only, no speaker cloning
- Teacher training data is UrduSpeech, derived from the Rasa dataset; the author's paper flags a remaining review of gated dataset terms and speaker rights before commercial deployment
- Native-speaker listening tests are listed as future work, so the quality claims today are automated metrics plus paired samples on GitHub
- Paper: Urdu preprint on Zenodo
Where It Fits
- Offline Urdu read-aloud for mobile and edge apps where a cloud TTS call is too slow or too private
- A clean, reproducible example of step-reduction distillation on Matcha-TTS, with benchmarks and checksums you can verify yourself
- A small but real gap-filler: Urdu has far fewer polished open TTS options than Hindi or English
Conclusion
QnVoice is not a giant multilingual model; it is a focused Urdu voice made faster by doing fewer flow steps and patching the difference with a tiny correction layer. Grab the repo, run the water sentence, and judge the paired samples with your own ears.
—Anabel ♡
