IntermediateAI

KittenTTS 2 Packs a 1.7B Speech Model Into 1.58-Bit Weights

KittenTTS 2, published to Hugging Face on September 30, 2026, is a 1.7-billion-parameter speech model with in-context voice cloning — a very different animal from the 25-megabyte KittenTTS the same team shipped in February. What makes it notable is how it is stored: the language model’s linear layers hold ternary weights packed at roughly 1.6 bits each, taking the checkpoint from 3.47 GB to 954 MB without, the model card says, changing a single sample of audio.

KittenTTS 2 announcement banner with a cartoon cat mascot, a waveform, and the text Ultra-efficient speech AI, runs on CPUs and consumer GPUs
Image credit: KittenML

What Changed

The earlier KittenTTS models were exercises in miniaturisation: a nano model near 15 million parameters, a mini at 80 million, both small enough to fit in tens of megabytes and run on a CPU with no ceremony. KittenTTS 2 goes the other way. It is a 1.7B speech language model that reads text and writes S3 codec tokens, which a vocoder turns into 24 kHz audio.

It ships built-in voices — the project README counts 47, and the model card’s list runs longer — across 20 languages, with eight speakers carried over from the 0.8 release so existing code keeps working. Cloning takes a reference clip of five to thirty seconds from a single speaker. Expression control is the other new capability: ten emotion tags, ten inline vocal events such as <laugh> and <sigh>, and triple-parenthesis emphasis, all parsed as markup rather than spoken. The card labels that feature beta and notes it steers delivery rather than guaranteeing it, and only those twenty tags are recognised — anything else bracketed is read aloud as text.

Why the Packing Is Free

A 1.7B model at 16 bits needs about 3.5 GB before you run anything. KittenTTS 2 avoids that with ternary weights: within every group of 128 values, each weight is exactly -scale, 0 or +scale, with the scale kept at full precision. A trit carries log₂3 ≈ 1.585 bits of information, and the release packs five of them into each byte, which works out to about 1.6 bits per weight and a 0.95 GB file for the language model.

The subtlety is why this costs nothing in quality. The ternary values are the weights the model uses; the 16-bit file is the same values written out at sixteen bits each. Packing them into trits is therefore exact, and the card says the two builds produce bit-identical audio. That is a different claim from post-training quantization, where you round an existing bf16 model and accept some drift.

Not everything gets that treatment. The token embedding is 324 million parameters that are not ternary, so the default packed build leaves it at bf16. The optional emb4 build halves the download to 469 MB by coding that embedding at 4.21 bits per weight across three frequency tiers, and the card is explicit that this one is lossy: all 313 non-embedding tensors still reproduce the full model exactly, but the embedding sits at an L2 relative error of 0.118 against the bf16 export. Hence packed as the default.

KittenTTS 2 feature card showing ternary weight grids, a 3.47 GB to 0.51 GB size comparison, five-second voice cloning, markup-based expression control, and realtime inference on CPUs and GPUs
Image credit: KittenML

What It Costs

Two variants control the footprint further. The default decoder is 459 MB; a distilled single-step student packs to 39 MB at four bits. The card is careful about what that buys — quantization shrinks storage and memory bandwidth, not arithmetic, so a smaller decoder saves space rather than compute.

Total weights are listed at 947 MiB: 910 for the language model and 37 for the decoder. Python packaging arrives through the kittenml package, which has iterated from 0.9.0 on September 29 to 0.9.6 on October 21, and CPU inference is fastest through kitten-tts-2-cpp, a llama.cpp fork that reads GGUF weights and is MIT-licensed. The card also warns that the text normaliser is English-tuned and will mangle numbers and dates in other languages unless you pass normalize=False.

The licence is not an open-source one. The weights fall under the Stellon Labs Community License: research, non-commercial and limited commercial use are free, but the commercial grant ends once you or your affiliates pass $1 million in annual revenue or total cumulative funding, and distributing the weights or a product built on them carries attribution requirements. The speaker/ embedding model is pyannote’s under MIT, and the Python package is Apache 2.0.

What This Means

KittenTTS 2 is a good illustration of where small-model engineering has moved. A year ago the pitch was parameter count; now it is weight format. A 1.7B speech model that fits in under a gigabyte and runs on a CPU is not smaller than a 25 MB model, but it is small enough to ship — and ternary weights are what make that arithmetic work without a GPU-specific kernel.

The caveats are ordinary but worth stating. There are no independent word-error or naturalness numbers here, only the vendor’s framing and a feature card; the expressive tags are beta; the languages are reached through voices rather than a language setting; and the licence stops being free at a revenue threshold most startups cross. For a research group testing local speech, none of that blocks use. For a product, the licence is the first thing to read.

This post was drafted with AI assistance and reviewed by RITS staff.

Sources

Related stories

AI

KittenTTS: State-of-the-Art Voice Synthesis in Under 25 MB

Key points KittenTTS was released on February 19, 2026 by KittenML as an open-source text-to-speech model that fits in under 25 MB. Its smallest configuration uses 14–15 million parameters and runs entirely on CPUs without any GPU requirement. It ships in three variants: Nano at 14–15M parameters and about 25 MB INT8, Micro at 40M […]

Never miss a RITS update

Subscribe to the RSS feed for AI, emerging technology, and digital scholarship news curated for the NYU Shanghai community, or get in touch to suggest a story.