PiVo
Two English Voices in 1.4 Million Inference Parameters
Both voices read “NASA is ready for the next mission.” These are the samples from the model card, generated by PiVo-1.4M.
How many parameters does a voice need, counting everything between a line of text and the waveform, vocoder included? PiVo is our current answer. It speaks English in two fixed synthetic voices, Pi and Vo, with 1,401,562 learned parameters: a 584,965-parameter acoustic model that predicts 20 vocoder features every 10 ms, and an 816,597-parameter vocoder derived from FARGAN that turns them into 16 kHz audio. That is about 1,200 times smaller than the 1.7-billion-parameter Qwen3-TTS teacher whose recordings it learned from.
Trained on 8,628 teacher-generated utterances, PiVo is easy to understand: on 266 held-out utterances, Whisper transcribes it with word error rates of 0.863% on validation and 0.532% on test. Sounding natural is harder. Some sentences keep a metallic or robotic texture, and adapting the vocoder to fix it made no consistent difference in 20 blind paired comparisons.
We release the weights, four ONNX graphs and a runtime that needs only NumPy and ONNX Runtime. All evaluation text is in-domain, the listening review had one listener, and speed on phone-class ARM hardware is not measured yet.
- The whole stack is 1.40M parameters.Acoustic model and vocoder together, 5.6 MB in FP32. No teacher, speaker encoder, aligner or discriminator is needed at inference.
- Intelligible is not the same as natural.Held-out word error stays below 1% for both voices, yet some text still comes out metallic or robotic, especially around sibilants and pauses.
- The vocoder fix did not survive a blind test.Adapting the vocoder cleaned up one reference example, but 20 fresh paired comparisons gave 18 ties and one win each way. The release keeps the original vocoder.
- It runs on a plain CPU without PyTorch.Four ONNX graphs and NumPy are enough, and the graphs match the PyTorch model to within 7 × 10⁻⁶. Audio streams in 10 ms frames once the text is encoded.

@techreport{lehmann2026pivo,
title = {PiVo: two English voices in 1.4 million inference parameters},
author = {Lehmann, Leon},
institution = {Empero Research},
type = {Empero AI Technical Report},
year = {2026},
month = {November},
note = {Technical report, version 1.0},
url = {https://huggingface.co/empero-ai/PiVo-1.4M}
}Questions and corrections: [email protected]. The repository holds the code, the results of every run and the paper.