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, NOTICE in the repo)
  • Runnable today: hf download the repo and run the included speak-urdu-tts.py with 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.wav

The 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 ♡