Gradium has open-sourced Phonon, a family of text-to-speech models that all fit under 50 million parameters. The smallest, phonon-31m-en, is released under Apache 2.0, ships as a 64.5 MB 8-bit file, and is small enough to run in a browser tab, on a phone or on a laptop CPU. It streams audio while it is still generating.
That makes Phonon a candidate for offline assistants, accessibility tools and voice agents that cannot wait for a cloud round trip. The catch is licensing: only the 31M English model is Apache 2.0, and the larger 40M models are noncommercial. This post covers what is in the family, the benchmark claims, how to run it and what to check. For earlier local TTS options, see our Kokoro local CPU TTS guide.
TL;DR: the Phonon family
| Model | Parameters | q8 weights | Languages | License |
|---|---|---|---|---|
| phonon-31m-en | 31M | 64.5 MB | English | Apache 2.0 |
| phonon-40m-en | 40M | 74.6 MB | English | CC BY-NC 4.0 |
| phonon-40m-fr, de, es, pt | 40M | 74.6 MB | French, German, Spanish, Portuguese | CC BY-NC 4.0 |
| phonon-40m-multilingual | 40M | 74.6 MB | All five | CC BY-NC 4.0 |
All use the same runtime and file layout, so switching models means changing the repository ID. Output is mono 24 kHz audio. The model cards credit Kyutai: Phonon builds on Pocket TTS and the Mimi codec.
How does it work?
According to the model card, a flow-matching transformer predicts audio latents from the text one 80 ms frame at a time, and the Mimi codec's decoder turns those latents into audio. Parameter counts exclude the audio tokenizer. Generating frame by frame is what allows streaming: audio starts playing before the sentence has finished.
The runtime is a separate project (licensed MIT or Apache 2.0) written in Rust, with bindings for Python, JavaScript through WebAssembly, Swift and Core ML, Android including a preview for Snapdragon NPUs, C and C++, and a Docker server with an OpenAI-compatible API. There is also an Android system TTS engine meant for TalkBack and any app that uses the standard text-to-speech interface, plus a Home Assistant integration.
What do the benchmarks say?
Gradium's model card compares Phonon with Kokoro, Magpie and NeuTTS on three measures: blind pairwise human preference (Elo), word error rate on a "hard set" of sentences full of numbers, dates, codes and units, and word error rate on the Seed-TTS evaluation sentences. In English (468 raters, 8,290 votes):
| Model | Elo | Hard-set WER | Seed-TTS WER |
|---|---|---|---|
| phonon-31m-en | 2098 | 1.5% | 0.51% |
| phonon-40m-en | 2117 | 2.3% | 0.45% |
| Kokoro | 2043 | 3.5% | 0.45% |
| NeuTTS | 2034 | 8.7% | 0.62% |
| Magpie | 1939 | 28% | 0.46% |
The card states that "in every language, a Phonon model is first on all three measures." The table shows a nuance: on Seed-TTS WER, Kokoro ties phonon-40m-en at 0.45%, and phonon-31m-en is slightly worse at 0.51%. For French, German, Spanish and Portuguese, the gaps in Elo are larger (for example French: 2072 for phonon-40m-fr against Kokoro at 1578), though the rater pools are smaller (about 170 to 200 raters per language).
How to read it: these are the vendor's own tests, with its own selection of competitors and its own hard set. The hard-set WER is "LLM-assisted," so scoring depends on an ASR plus language-model comparison step. The approximately 2,000 votes per language give a reasonable preference signal but not a definitive ranking. Run your own blind listen with your own text before you switch.
The 10 ms claim
A post relayed from a voice-agent developer says a browser demo using an optimized WebGPU stack reaches a time-to-first-byte of about 10 ms, versus the 100 to 150 ms that cloud systems typically target in production. We saw the claim in social posts but not in the model card, which gives no latency table. Time-to-first-byte also depends on the device, browser, and what is warm in memory, and it excludes everything else in a voice pipeline (speech recognition, the language model). Treat 10 ms as a best case on a favorable setup and measure on your target hardware.
For how voice agents are built at the API level, see our coverage of OpenAI's GPT-Live-1 voice API and ElevenLabs Eleven Realtime.
How to try it
- Command line:
uvx ptts --lang en --quant q8 --voice Easton "Hello from Phonon." -o speech.wavruns the Python package's command without installing it. A standalone binary is available via GitHub releases or Homebrew. - Python:
pip install ptts, then create the TTS object fromhf://gradium/phonon-31m-enwithlang="en"andquant="q8", save to a file, or stream chunks as they are generated. - Browser: the
phonon-ttsnpm package, plus a hosted demo Space on Hugging Face. - Transformers: install Transformers from source and use the Gradium Phonon TTS classes. The card notes the tokenizer there does not spell out numbers, amounts, symbols or addresses, unlike the runtime, and that long text needs splitting.
- Server: the Docker image exposes an OpenAI-compatible API, which makes it a drop-in for tools that already call a speech endpoint.
The lang argument controls text normalization (numbers, currency, dates, emails), so choose it to match your text. About 100 voices are in the gradium/phonon-voices repository. Instant voice cloning and voice design are available through Gradium's hosted studio, not the open weights.
Licensing and responsible use
The Apache 2.0 license covers the weights, tokenizer and voices for phonon-31m-en and allows commercial use. For the 40m models, CC BY-NC 4.0 prohibits commercial use, so a product that wants French or German speech needs a separate arrangement with Gradium. This is a major practical difference from Apache-licensed alternatives and worth checking before you build on a 40m model.
Gradium's responsible-use note asks you not to impersonate a real person, deceive listeners about who is speaking, or clone a voice without consent, and to disclose synthetic speech where it matters. Limits listed on the card: other languages are read with wrong pronunciation, normalization needs the right language setting, and very long inputs are split into sentences, so prosody does not carry across a whole text.
Where it fits
| If you need | Phonon fits? |
|---|---|
| Offline or private English assistant | Yes, with phonon-31m-en under Apache 2.0 |
| Multilingual commercial product | Check licensing: 40m models are noncommercial |
| Lowest-latency in-browser voice | Promising; verify TTFB on your devices |
| Voice cloning from open weights | No, cloning sits in the hosted studio |
| Accessibility on Android | Yes, via the system TTS engine, with testing |
Small on-device models are also a privacy story, a theme in our coverage of private personal AI products and Brave Leo's encrypted AI chat. Voice that never leaves the device also removes a data-handling question for regulated apps.
Questions builders will ask
Is 31M parameters enough for natural speech? The model card claims human listeners preferred it in blind tests, but it also shows the 40M models score slightly higher on Elo in English (2117 against 2098). The gap is small, which suggests the architecture, not raw size, is doing the work. Judge naturalness with your own ears on long, emotional or noisy-text samples, because short benchmark sentences flatter small models.
What about voice quality in noisy real text? The card's hard set is built from structured data such as numbers, dates, codes and units, which is where cheap TTS usually breaks, and Phonon's 1.5% word error rate there is the most interesting claim. It does not cover slang, code-switching or heavy markup, so test those separately.
Can I swap it into an existing app? The Docker server exposes an OpenAI-compatible API, so an app that already calls an OpenAI-style speech endpoint can often point at a local base URL. Expect to adjust voice names and streaming handling, and verify audio format and sample rate (24 kHz mono) against your player.
What is the privacy upside? Text never has to leave the device, which helps with health, legal and children's apps. It does not remove consent issues for voice cloning; the cloning feature is in the hosted studio and carries its own terms.
Where does it sit next to cloud voice APIs? Cloud APIs still offer more languages, more expressive voices and cloning at scale. Phonon trades those for cost, latency and privacy: no per-character fee, no network hop, and no vendor outage in the speech path.
Where tiny TTS is heading
Phonon is part of a pattern of speech models shrinking to the size of a few photos. A year ago, a quality neural voice usually meant a server GPU. A 65 MB quantized file now fits inside a web page's download budget, which opens up use cases such as offline reading aids, in-game dialog and embedded devices that cannot rely on connectivity. The strategic question for builders is less about whether the models are good enough and more about licensing, because the best-scoring variants here are the noncommercial ones.
A speech translation bridge, illustrating on-device Phonon text-to-speech turning text into streamed audio
What to check next
- Listen to the demo Space with your own scripts, especially numbers, names and code.
- Measure real time-to-first-byte and CPU use on your lowest-end target.
- Confirm which license applies to the exact model repository you will ship.
- Wait for independent comparisons: so far the only head-to-head numbers are Gradium's.
Related reading
-
Amazon Polly Generative engine upgrade: 14 voices, Hindi and Finnish
-
Official: phonon-31m-en on Hugging Face, the Phonon collection and Kyutai Pocket TTS
Details are accurate as of October 22, 2026 and come from the Hugging Face model cards. Benchmarks are Gradium's own.
