Subscribe
AI Voice
6 min read

Klein TTS X1.5 and Linnet: Tiny On-Device Voices

Klein-TTS X1.5 and VoxRT's LinnetTTS are small text-to-speech models for devices. Sizes, languages, speeds and licenses from the vendors' own pages.

Olivetti-style cover reading KLEIN TTS X1.5 AND LINNET, with blocks for 0.4M-13M Klein parameters, 41.4M Linnet parameters and an 80 ms streaming step
Olivetti-style cover reading KLEIN TTS X1.5 AND LINNET, with blocks for 0.4M-13M Klein parameters, 41.4M Linnet parameters and an 80 ms streaming step

Two text-to-speech releases from the past two days are built to run on the device itself, without a cloud service. Klein ML published the Klein-TTS X1.5 family on Hugging Face on November 3, 2026 (UTC). VoxRT put its LinnetTTS weights and runtime on GitHub on November 4 (UTC). Both ship small models, both write 24 kHz audio, and both say they run faster than real time on a CPU.

They take different routes, though. Klein offers three sizes, several languages and an Apache 2.0 license. Linnet offers one English model that streams audio in 80 millisecond steps, under a weights license that is not open source. Every figure below comes from the vendors' own model cards, READMEs and pages, so treat them as self-reported.

Klein-TTS X1.5: three sizes, four languages

The Klein-TTS-X1.5-Pro model card describes "small, fast, multilingual text-to-speech models that run faster than real time on a plain CPU." The family has three sizes:

  • Flash Lite: 0.4 million parameters, English, French and Italian, three voices, weights of 1.6 MB in float32.
  • Flash: 1.7 million parameters, English, French and Italian, five voices, weights of 6.8 MB in float32.
  • Pro: 13 million parameters, American and British English, Spanish, French and Italian, 17 voices that can be blended.

All three use the Apache 2.0 license. The models turn phonemes into speech, so a text front end converts your text first. The cards say they were trained by distillation on synthetic speech, using text from the FineWeb datasets. The Pro card also says Pro "ships as a ternary (1.58-bit) + FP4 quantized version." The Klein ML site lists "Pro QAT" as "Coming soon" at the time of writing, so check which files are actually in the repository before you plan around it.

What Klein reports

Three Klein-TTS X1.5 sizes with parameters, languages, voices, UTMOS, word error rate and CPU real-time factor

The cards score each model on 300 English sentences from FineWeb and a private set of 97 English sentences. UTMOS and SCOREQ are scores that predict how natural speech sounds, on a scale of 1 to 5, where higher is better. WER is the word error rate of Whisper small transcripts of the output, where lower is better. The card warns that the quality scores are "predictions of listener opinion, not listener opinion."

On the public set, Pro scores 4.44 UTMOS, 4.70 SCOREQ and 2.51% WER. Flash scores 4.36, 4.42 and 2.36%. Flash Lite scores 4.28, 4.32 and 2.86%, and the card says its pronunciation is less exact than Flash and that its word error rate is the highest in the family.

The Pro card compares itself with other small models. It says Pro matches the 31M Phonon model on UTMOS and beats it on SCOREQ, DNSMOS and word accuracy at 42% of its size. It also says Kokoro 82M, which is about six times larger, still scores higher on UTMOS (4.52 against 4.44) and SCOREQ (4.87 against 4.70). On the card's own TTS Index, Pro is at 1311 and Kokoro at 1332, which the card calls close to a tie.

For speed, the card reports a CPU real-time factor of 0.022 for Pro, which it describes as about 45 times faster than real time. Flash is 0.013 and Flash Lite is 0.0066. A real-time factor is the time to generate audio divided by the length of that audio, so lower is faster. The card says these timings come from a desktop PC and cover the generator only, meaning phonemes in and audio out, without the text front end.

What to watch for

The cards say only English was benchmarked. Spanish, French and Italian are supported but not scored. The cards also say the models have no emotion or style control beyond voice and speed, that blended voices are experimental because the checkpoint was not trained on blends, and that Flash Lite has three voices, all female, with no British English and no Spanish. The Pro card says it uses the step-100,000 weights of a 150,000-step run, so a later checkpoint may replace it.

To try it, the card shows pip install kleintts and a Transformers path that uses trust_remote_code=True, which runs custom code from the repository. The card also lists ONNX files for CPU runtimes and a Node.js package, @kleinml/kleintts.

LinnetTTS: one English model that streams

VoxRT's LinnetTTS repository describes lightweight on-device text-to-speech that "streams audio from the first 80 ms step, and runs in real time on a single phone CPU core." The model is named linnet-en-35m, but the README says the number is a label from the original parameter budget. The total is 41.4 million parameters, made of a 31.5 million parameter language model and a 9.9 million parameter decoder. The fp16 weights file is 83 MB.

Unlike Klein, Linnet takes plain text. The VoxRT product page says no phonemizer or pronunciation dictionary is needed, and that the text front end is a 102 KB tokenizer. It ships two built-in American English voices, a female and a male one.

The speed numbers

The README lists the real-time factor as a percentage of real time for one step of 80 ms of audio. On one thread, it reports 7% on an iPhone 13 Pro Max, 9% on a Core i9-13900K desktop, 53% on a Snapdragon 662 phone (a Redmi 9T) and 198% on a Raspberry Pi Zero 2 W. Anything under 100% is faster than real time, so the Pi Zero 2 W needs more than one thread: the README gives 75% with four. First audio arrives 50 to 130 ms after the text on the phones tested, and about 250 ms in the Android sample app on the Snapdragon 662.

The README also compares Linnet with other CPU models on the same machine, including text processing. With one thread, Linnet scores 10.6%, against 5.8% for Piper en_US-ljspeech-medium, 23.8% for pocket-tts (the README marks that figure as measured on 2 cores) and 51.7% for Kokoro-82M. So the smaller Piper model is faster in that table. The README says this comparison covers speed only and that quality is not measured there.

Bar chart of Linnet real-time factor on one thread: 7% on iPhone 13 Pro Max, 9% on Core i9-13900K, 53% on Snapdragon 662, 198% on Pi Zero 2 W

The license is the catch

The code is Apache 2.0, but the weights, tokenizer and voices are under the Linnet Weights License, which the README says "is not an open-source license." Per the README summary, you can run the unmodified weights with the built-in voices inside your own products, including paid and closed-source ones, and sell audio you generate.

A separate written license from VoxRT is required to create or clone voices (including your own), to fine-tune or save modified or quantised copies, to train other models with the weights or their output, to offer general-purpose text-to-speech to others as an API, and to publish the weights outside your product. The README adds that "the license text governs," so read the license before you ship.

The README's opening line mentions voice cloning, but the release ships two built-in voices. The encoder that makes new voice prompts is not published and is offered under that separate license.

Limits VoxRT lists

Version 1 is English only. The model has no text normalization, so prices, dates and phone numbers should be written out as words first. The product page admits "a slight roughness is audible on headphones in some utterances," says words can occasionally be misread or dropped, and says the model is not certified as the sole channel for safety-critical or emergency information. The Python wheel on PyPI covers Linux on x86_64 and aarch64 and macOS on Apple silicon, and the weights are a separate download. The README lists Android and iOS packages, and the product page says a browser release is planned.

How to choose

The two vendors publish different tests, so there is no shared benchmark that ranks their audio quality. Klein reports predicted-naturalness scores on English text, and VoxRT's README reports speed and says it did not measure quality. Listen to both on your own text.

Based on what the cards and pages say, the choice follows from what you need:

  • Languages other than English: Klein. Pro covers four languages, and Flash and Flash Lite cover English, French and Italian. Linnet is English only.
  • Fine-tuning, quantizing or redistributing the model: Klein, since all three models are Apache 2.0. Linnet needs a separate license for each of those.
  • Streaming audio in 80 ms steps on a phone: Linnet, which documents streaming sessions and first-audio times. The Klein cards read for this post do not report streaming or time to first audio.
  • The smallest possible download: Klein Flash Lite at 1.6 MB of float32 weights, with the caveat that it has the highest word error rate in its family.

For cloud and open-weight alternatives, see our guides to the best AI voice generators, Audio8-TTS Realistic Air and LAION's open podcast TTS.

Sources

AI VoiceOpen WeightsModel Releases