Kyutai Pocket TTS 2026: MIT Voice Cloning on a CPU, From One WAV File
TL;DR: Pocket TTS is Kyutai’s 100M-parameter text-to-speech model that runs entirely on CPU — about 6x real-time on a MacBook Air M4 — and clones a voice from a plain WAV file, all under a clean MIT license. Quality lands below big GPU models, but for an always-on, private voice on hardware you already own, nothing this small comes close.
| Pocket TTS | Kokoro-82M | MOSS-TTS 1.5 | |
|---|---|---|---|
| Best for | CPU voice cloning, always-on assistants | Fast fixed voices on CPU | Highest cloning quality, GPU owners |
| Hardware | 2 CPU cores, no GPU benefit | CPU or GPU | ~8GB VRAM GPU |
| Voice cloning | Yes — any WAV reference | No — preset voice packs only | Yes |
| License | MIT (code + weights) | Apache 2.0 | Apache 2.0 |
| The catch | Quality ceiling below GPU models; no pause control | Can’t clone your own voice | Needs a real GPU, heavier setup |
Honest take: if you want your voice (or any specific voice) speaking locally on a machine without a GPU, Pocket TTS is the default choice in 2026. If you just need a pleasant preset voice, Kokoro is fine; if you own a 12GB+ GPU and want the best cloning fidelity, run MOSS-TTS 1.5 instead.
Zero-shot voice cloning used to be a GPU feature. XTTS wanted CUDA, MOSS-TTS wants around 8GB of VRAM, and most of the 2025-generation cloning models assume you have a graphics card doing nothing. Kyutai — the French non-profit lab behind the Moshi real-time voice model — went the other way: Pocket TTS is a 100M-parameter model built to saturate two CPU cores and nothing more. The repo sits at roughly 8.6k GitHub stars as of August 2026, and the pitch is simple: hand it a WAV file of someone talking, and it speaks any text in that voice, on the same laptop you’re reading this on.
This guide covers install, first generation, voice cloning from your own sample, the performance numbers that matter, and where Pocket TTS genuinely loses to the alternatives.
What Pocket TTS is
Pocket TTS is a Python package (with the model weights on Hugging Face at kyutai/pocket-tts) that does streaming text-to-speech with zero-shot voice cloning. Three design decisions define it:
- 100M parameters. That’s small enough that the model is compute-bound on almost nothing. Kyutai reports that running it on a GPU gives no meaningful speedup over CPU — the model is simply too lean to benefit.
- Streaming-first. You get the first audio chunk in roughly 200ms, which is what makes it usable for interactive assistants rather than just batch narration.
- Voice-as-state. A reference voice is processed once into a model state, which you can export to a safetensors file and reload instantly later. Cloning isn’t a fine-tune; it’s a prompt.
License check, since that’s the first question for this audience: the GitHub repo (kyutai-labs/pocket-tts) carries a plain MIT license, and the weights are distributed openly on Hugging Face. No revenue caps, no attribution clauses, no non-commercial rider. That puts it in the cleanest license tier we track in our open-source LLM license shootout — rarer than it should be for voice cloning models, where restrictive terms are common.
Supported languages: English, French, German, Portuguese, Italian, and Spanish.
Install and first run
The package is on PyPI:
pip install pocket-tts
# or, with uv:
uv add pocket-tts
The fastest way to hear it is the CLI — with uv installed you don’t even need a persistent environment:
uvx pocket-tts generate
That pulls the weights from Hugging Face on first run and synthesizes with a default voice. In Python, the whole API is four lines:
from pocket_tts import TTSModel
tts_model = TTSModel.load_model()
voice_state = tts_model.get_state_for_audio_prompt("alba")
audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.")
"alba" is one of the pre-made voices from Kyutai’s catalog. The get_state_for_audio_prompt / generate_audio split matters: the expensive-ish part (processing the voice) happens once, and every generation after that reuses the state.
Cloning a voice from your own WAV
This is the feature that earned Pocket TTS its attention. To clone, you pass a plain WAV file instead of a catalog name — on the CLI, the --voice flag accepts a path to any WAV file; in Python, you point get_state_for_audio_prompt at your sample.
Three practical rules from Kyutai’s own guidance and community testing:
- Clean audio in, clean audio out. The model reproduces the recording quality of your sample, not just the voice. Background hum, room echo, and phone-mic compression all come through in the output. Record close to the mic in a quiet room, or denoise the sample first.
- Length: more than the minimum helps. The viral claim is cloning from 5 seconds, and short clips do work — but community testing consistently finds 10–20 second references produce a noticeably more stable clone than 3–5 second ones. If you control the recording, read two or three sentences naturally.
- Export the state. Once a voice sounds right, save it:
voice_state = tts_model.get_state_for_audio_prompt("my_voice.wav")
# export to safetensors for instant loading later
The repo supports exporting voice states to safetensors files — loading one later is fast because it’s essentially just reading a KV cache from disk. For a home assistant setup, this means you process each household voice once and ship the states around like config files.
The obvious note on ethics and law: a tool that clones any voice from a few seconds of audio is a tool that clones any voice. Cloning someone’s voice without consent ranges from rude to illegal depending on jurisdiction and use. Keep it to your own voice or voices you have permission to use.
Performance: what “runs on CPU” actually means
The numbers Kyutai publishes, which line up with community reports:
- ~6x real-time on a MacBook Air M4 — one minute of speech takes about ten seconds to generate. On an Apple MacBook Air M4, that’s fanless, silent synthesis.
- ~200ms to first audio chunk, which is the number that matters for conversational use.
- Two CPU cores. The model doesn’t scale past that, which is good news: it runs alongside your other workloads instead of monopolizing the box. Any recent desktop CPU — a Ryzen 9 7950X is overkill — stays comfortably above real-time, and reports of usable speeds extend down to mini-PC and SBC-class hardware.
- Quantization exists but is CPU-only.
TTSModel.load_model(quantize=True)shrinks the footprint further; the flag only works on CPU, which is fine because that’s where you’re running it anyway.
There’s also a C++ path: audio.cpp ships a PocketTTS backend that benchmarks 3.22x faster than the Python reference implementation (confirmed upstream in the Pocket TTS issue tracker). If you want this in a no-Python pipeline, our audio.cpp setup guide covers the build.
How it compares
vs Kokoro-82M: Kokoro is the other famous small CPU TTS — 82M parameters, Apache 2.0, excellent preset voices. But Kokoro works from pre-built voice packs; it cannot clone an arbitrary voice from a sample. If a good generic voice is all you need, Kokoro remains a great pick. The moment you want a specific voice, Pocket TTS is the only one of the two that can do it.
vs MOSS-TTS 1.5: MOSS clones with higher fidelity and more expressive prosody — it’s a much bigger model — but it wants around 8GB of VRAM and a PyTorch GPU stack. We reviewed it in our MOSS-TTS 1.5 review. If you have the GPU and quality is the priority (audiobook narration, voice-over), MOSS wins. No local GPU but still want to experiment with the big model? A cheap RunPod instance covers occasional batch jobs without buying hardware.
vs Coqui XTTS: the former default answer for local cloning. The original company shut down in early 2024; the code lives on in community forks, but the XTTS weights carry a non-commercial license and the stack is heavy. In 2026 it’s hard to recommend starting there when an MIT-licensed model does cloning on CPU.
vs piper: piper is still the right choice for embedded boards where even 100M parameters is too much — but it has no cloning and a lower quality ceiling.
When NOT to use Pocket TTS
- You need broadcast-quality narration. The quality ceiling of a 100M model is real. For audiobooks or published voice-over, use MOSS-TTS on a GPU.
- You need fine pause control. Pocket TTS currently doesn’t support inserting silence via the text input to create pauses — a real limitation for scripted narration with deliberate pacing.
- You need languages outside the six supported. No Chinese, Japanese, or Korean as of August 2026.
- You only need one nice generic voice. Kokoro’s presets are excellent and the model is even smaller.
Where it fits in a self-hosted stack
Pocket TTS slots naturally as the speech output stage of a local voice pipeline: pair it with faster-whisper for input and a local LLM for the middle, as in the HuggingFace speech-to-speech pipeline we covered — the TTS stage there is swappable, and a CPU-only model frees your entire GPU for the LLM. That’s the practical win: on a single-GPU home server, every gigabyte of VRAM the TTS doesn’t use is VRAM your LLM keeps. For the hardware side of always-on assistant boxes, see the GPU-accelerated TTS alternatives guide at runaihome.com.
FAQ
Does Pocket TTS really clone a voice from 5 seconds of audio? Yes, it works from very short samples — but treat 5 seconds as the floor, not the target. A clean 10–20 second reference produces a noticeably more stable and accurate clone. Recording quality matters as much as length: the model reproduces the acoustics of your sample.
Can I use Pocket TTS commercially? Yes. The code is MIT-licensed and the weights are openly distributed on Hugging Face under the same permissive terms — no revenue caps or attribution requirements. The usual caveat: commercial use of a cloned voice still requires rights to that voice, which is a consent and publicity-law question, not a software-license one.
Do I need a GPU at all? No, and it wouldn’t help — Kyutai reports no speedup from GPU inference because the model is too small to be GPU-bound. It saturates about two CPU cores and reaches ~6x real-time on a laptop-class chip. This is one of the few modern AI models where the correct hardware answer is “whatever you already have.”
Sources
- kyutai-labs/pocket-tts — GitHub repository (MIT license, install, API, performance claims)
- kyutai/pocket-tts — Hugging Face model card
- Kyutai blog: Pocket TTS announcement
- Pocket TTS issue #203 — audio.cpp backend 3.22x speedup confirmation
- scriptbyai.com — Pocket TTS hands-on
Recommended Gear
- Apple MacBook Air M4 — the reference machine for Kyutai’s 6x real-time benchmark; fanless Pocket TTS.
- AMD Ryzen 9 7950X — far more CPU than Pocket TTS needs, with headroom to run your LLM stack beside it.
Was this article helpful?
Thanks for the feedback — it helps improve future articles.
Need hands-on help?
I offer 1-on-1 technical consulting for local AI setup, GPU selection, and AI coding tool configuration — same topics covered on this site.
Book a session — $49 / hour →What self-hosting actually costs
Real cost breakdowns for self-hosted AI: hardware floors, power, maintenance hours, and the honest comparison against paying for it. No spam, unsubscribe anytime.