Kyutai Pocket TTS
Pocket TTS is a 100M-parameter text-to-speech model from Kyutai designed to run efficiently on CPU, generating audio faster than real-time (~6x on a MacBook Air M4) with ~200ms latency to first audio chunk and voice cloning from short audio samples. It supports English, French, German, Portuguese, Italian, and Spanish, ships a Python library and CLI, and has spawned numerous community ports (WASM, ONNX, Rust/Candle, MLX, C++, C#) and fine-tuned language variants (Czech, Hindi, Korean, Persian, Indonesian, Estonian, Welsh, Polish).
What it claims
Pocket TTS is a 100M-parameter streaming TTS model that runs on 2 CPU cores. It handles arbitrarily long text and can run client-side in a browser. Training code was released in August 2026, and the README invites community-trained models.
Beyond the default models, non-English languages have slower, higher-quality 24-layer variants, selected with e.g. --language italian_24l. Community fine-tunes come in different depths: Indonesian and Polish at 6 layers, Welsh at 24 layers, and a 300M Korean model.
Evidence
The only hardware comparison on the page is a GPU measurement:
- Apple Silicon: the authors saw no GPU speedup, because batch size is 1 and the model is small.
- Cloud x86 VM (4 vCPUs) with a Tesla T4: the GPU gave a consistent ~2.6x speedup, with an RTF of ~2.3–2.5x on CPU versus ~6.28x on GPU, for both short and long text.
- Android: the community LiteRT port reports ~1x real-time on a Pixel 8a GPU.
So the "~6x real-time" headline is specific to the M4. Weaker or thread-limited CPUs land nearer 2.5x.
How to use it
Access is gated. You must log in and accept the conditions, including sharing your contact information, before downloading the files.
Install on Linux. A plain pip install pulls the CUDA build of PyTorch, roughly 3 GB instead of 200 MB. Use the CPU index instead:
pip install pocket-tts --extra-index-url https://download.pytorch.org/whl/cpu
uvx --index https://download.pytorch.org/whl/cpu pocket-tts generateRequirements: Python 3.10–3.14 and PyTorch 2.5+.
CLI commands:
generate: takes--voice,--text,--language,--configand--device.serve: a web UI and HTTP server atlocalhost:8000that keeps the model in memory between requests.export-voice: converts a reference wav/mp3 into a safetensors voice state. The README says processing raw audio is slow, while loading the saved file is fast because it only reads the KV cache.
Python API:
from pocket_tts import TTSModel, export_model_state
model = TTSModel.load_model()
model_state = model.get_state_for_audio_prompt("some_voice.wav")
export_model_state(model_state, "./some_voice.safetensors")
audio = model.generate_audio(model_state, "Hello world!") # 1D torch PCM tensorload_model() and get_state_for_audio_prompt() are slow, so keep the model and voice states in memory.
Built-in voices: 26 preset voices; the page links a separate list of licences per voice. For cloning, clean the reference sample first, because its audio quality is reproduced in the output.
Community models load via --config, which accepts a local YAML path, an https:// URL or an hf://repo/path@revision. Pin a commit hash to avoid breaking changes. The preset voices are embeddings computed with Kyutai's weights, so they do not work with community models; the default falls back to cloning alba's audio.
Alternative runtimes and integrations (community-built):
- sherpa-onnx: Raspberry Pi, Jetson and RK3588, with bindings for 12 languages.
- PocketTTS.cpp: C++ with a C FFI.
- A word-level timestamp fork.
- OpenAI-compatible servers.
- A Wyoming/Home Assistant container.
Limits
- GPU is unofficial.
load_model()has no device argument, so you call.to("cuda")yourself and.cpu()the output.serveand the Docker image always run on CPU. - CUDA driver mismatch fails silently. If the PyPI torch build needs a newer CUDA than your driver supports,
torch.cuda.is_available()just returns False with only a warning. - Quantization is CPU-only.
quantize=True(int8 dynamic) raisesNotImplementedErroron CUDA. - The
[quantize]extra can break pinned torch. It requirestorch>=2.11, and installing it alongside an older pinned torch can break quantization even on CPU. - Browser and WASM use are community-only, with no official support.
- Usage restrictions: the terms prohibit cloning or impersonating voices without explicit, lawful consent, and presenting generated audio as genuine recordings of real people or events.
- Not stated on the page: no weights licence beyond these terms, and no quality metrics such as WER or MOS. Those are presumably in the linked tech report and paper.
Organisations named here
- Kyutai
- Hugging Face
- Saryps Labs
- EryriLabs
- PyPI
- PyTorch
- Alexandre Défossez
- Gabriel De Marmiesse
- Manu Orsini
- Neil Zeghidour
- Simon Rouard
- Václav Volhejn
Technologies named here
- Pocket TTS
- Pocket TTS non-english 24-layer variants
- uv / uvx
- Pocket TTS Czech
- pip
- Pocket TTS Hindi
- PyTorch
- torchao
- Pocket TTS Korean
- Pocket TTS Persian
- pocket-tts serve
- export-voice command
- Pocket TTS Indonesian
- Docker image
- Pocket TTS Estonian
- wasm-pocket-tts
- Pocket TTS Cymraeg
- pocket-tts-onnx-export
- Pocket TTS Polish
- jax-js
- pocket-tts-mlx
- pocket-tts-xn
- PocketTTS.cpp
- sherpa-onnx
- pocket-tts-csharp
- pocket-tts-timestamped
- Pocket-TTS-LiteRT
- ComfyUI-Pocket-TTS
- pocket-tts-server
- pocket-tts-openai_streaming_server
- pocket-tts-wyoming
- pocket-tts-unity
- pocket-tts-deno
- FrontPocket
- openclaw-pockettts
- openclaw-pocketts.cpp
- Hugging Face
- Docker
- Rust
- WebAssembly
- MLX
- ONNX Runtime
- GGUF
- Python
Techniques named here
- Voice cloning
- int8 dynamic quantization
- Voice state export to safetensors
- Audio streaming generation
Related in models


