Gradium Phonon: Open On-Device TTS at 31M and 40M Parameters, Apache 2.0 for English

Introduction
On-device voice just got a lot more crowded, in the best way. A few hours after Kyutai shipped its tiny Pocket TTS 4.0 models, Paris voice startup Gradium open-sourced Phonon, a family of text-to-speech models at 31M and 40M parameters that run on phones, laptops, single-board computers and right inside a browser tab. The launch post went up on October 20, and the weights are already on Hugging Face. The English Phonon 31m is Apache 2.0, so you can ship it in a commercial app today. I ran it on our test box and it spoke about eight times faster than real time on a plain CPU.
What Shipped
The Phonon family
Phonon is the open release of a model Gradium first announced in April and kept in private beta since. It builds on Kyutai's Pocket TTS and the Mimi audio codec, and it streams 24 kHz mono audio one 80 ms frame at a time. There are three flavors:
- Phonon 31m (English): 64 MB as 8-bit weights, 37 built-in voices (25 regular plus 12 character voices), Apache 2.0. The smallest footprint.
- Phonon 40m (one model per language): English, French, German, Spanish and Portuguese, 74.6 MB each, 12 to 37 voices per language, CC BY-NC 4.0. Gradium's pick when expressiveness and tricky text matter most.
- Phonon 40m multilingual: all five languages in a single 74.6 MB model with 102 built-in voices, CC BY-NC 4.0.
The 31m English repo is open to download. The 40m repos are gated behind a quick Hugging Face access request, and Gradium asks you to contact them for commercial use of the non-commercial models.
Text that usually trips small models
Every Phonon model includes text normalization, so phone numbers, dates, times, version numbers and temperatures are meant to be read out the way a person would say them. Gradium built a public test set of 500 hard sentences per language from cases developers sent them, gradium/tts-hard-sentences-202610. On the English set, Gradium reports these word error rates:
- Phonon 31m: 1.70%
- Phonon 40m multilingual: 2.11%
- Phonon 40m: 2.22%
- Kokoro: 3.50%
- Kitten TTS: 7.40%
Gradium also ran blind listening tests against Kokoro, Magpie, NeuTTS and Pocket TTS with 1,189 raters and 17,270 votes. These are the vendor's own numbers, so treat them as a starting point and trust your ears.
Runs almost anywhere
Phonon ships with its own inference stack, xn-ptts (Apache 2.0), with backends for CPU, Metal, CUDA, Vulkan, WebGPU and Apple Core ML, plus a Snapdragon NPU preview. There's a Python package, an npm package for the browser, Swift and Android guides, an Android system TTS engine, and an OpenAI-compatible Docker server that also plugs into Home Assistant. Gradium's own speed numbers include:
- MacBook Air M5 CPU: first audio in about 7 ms with four threads, versus 517 ms for Kokoro
- Raspberry Pi 5: Phonon 31m starts speaking in 38 ms and runs 3.7x faster than real time
- Snapdragon 8 Elite Gen 5: first audio in 7.5 ms at 24x real time, measured with Qualcomm
Kyutai says it used the same open-source inference framework from Gradium to speed up its new Pocket TTS models, so the two releases are close cousins.
Custom voices
Beyond the built-in voices, you can clone a voice from a short consented recording or describe a new one in plain text with Gradium's voice design, in Gradium Studio or through the API. You then download the voice file and load it into Phonon, and it runs fully on device. Gradium says creating voices is free and unlimited.
How Fast Is It?
I installed the official ptts 0.4.0 package from PyPI on our 8-core cloud box (CPU only, no GPU) and ran Phonon 31m with q8 weights on Gradium's benchmark sentence, "The quick brown fox jumps over the lazy dog, then naps in the warm afternoon sun."
- Model load: about 0.7 seconds after the first download
- Generation: 0.54 to 0.68 seconds for 4.96 seconds of audio
- Speed: roughly 7.3x to 9.2x faster than real time across three runs
One snag: the model card's quickstart uses the voice en_us_Easton, but in my test that voice wasn't registered out of the box, and only the default voice was available. The named voices live in the separate gradium/phonon-voices repo, so expect to load them from there until the docs catch up.
Try It Yourself
The fastest way in is the browser demo Space, where the voice is generated inside your own tab. On your machine, one command does it:
uvx ptts --lang en --quant q8 --voice default "Hello from Phonon." -o speech.wavOr from Python:
import ptts
tts = ptts.TTS("hf://gradium/phonon-31m-en", lang="en", quant="q8")
tts.save("speech.wav", "Hello from Phonon.", voice="default")Lines that show off the normalization:
Your delivery window is 9:30 to 11:30, and the driver will call 020 7946 0018.
Version 3.10 fixed the login bug, and it's minus three degrees outside.
Welcome aboard, captain. The engines are warm and the stars are waiting.My tip: switching models only means changing the repo ID, so try gradium/phonon-40m-multilingual if you want one model that speaks all five languages.
Why It Matters for Makers
A 64 MB voice that starts talking in milliseconds on a laptop CPU opens up offline game NPCs, reading apps, fitness coaches, smart toys, robots and browser extensions with no cloud bill and no text leaving the device. Gradium's own demos include a Pipecat voice bot on Modal, a sci-fi game voiced on the player's machine, an Apple Watch coffee guide with Wi-Fi off, and a Chrome extension that reads any page aloud.
The trade-offs: only the English 31m model is Apache 2.0, and the stronger 40m models are non-commercial unless you strike a deal with Gradium. Voice cloning and voice design happen in Gradium's cloud, even though the resulting voice runs locally. And the benchmarks are Gradium's own. As always, only clone voices you have permission to use.
Conclusion
Phonon gives makers a 31M-parameter English voice under Apache 2.0, 40M-parameter models in five languages for non-commercial use, 100+ built-in voices, and a runtime that covers browsers, phones, Raspberry Pi and servers. On a regular CPU it spoke about 8x faster than real time in my test. Open the browser demo, type something dramatic, and hear how much voice fits in 64 MB. Happy voice-making!
Original source:
https://gradium.ai/blog/release-phonon-open-weight
Weights: gradium/phonon-31m-en (Apache 2.0) · gradium/phonon-40m-en and gradium/phonon-40m-multilingual (CC BY-NC 4.0) · Runtime: gradium-ai/xn-ptts · Announcement:
—Anabel ♡
