Pocket TTS — GGUF (all languages)
GGUF conversions of Kyutai's Pocket TTS, for use with llama.cpp. Pocket TTS has been ported to ONNX, CoreML and MLX, and other GGUF conversions exist — but they ship without the multimodal projector. To our knowledge these are the first complete model + mmproj pairs that run directly on llama.cpp's built-in Pocket TTS support (llama-tts).
Pocket TTS is a ~100M-parameter (24-layer French: ~300M) text-to-speech model designed by Kyutai to run efficiently on CPUs. On a desktop CPU these GGUFs synthesize at ~5.5–6x realtime (French ~2.9x) — no GPU needed.
Languages
Pocket TTS ships one complete model per language. Each is converted to a
llama.cpp GGUF pair: a model file and an mmproj file (the Mimi codec and
speaker encoder). Pass both to llama-tts. The mmproj files are per-language —
same size, different weights — so keep each pair together.
| Language | Files | Model size | Tested voice |
|---|---|---|---|
| English | pocket-tts-en.gguf + mmproj-pocket-tts-en.gguf (repo root) | 152 MB | unmute-prod-website/default_voice.wav |
| French | french/pocket-tts-french.gguf + french/mmproj-pocket-tts-french.gguf | 584 MB | cml-tts/fr/10087_11650_000028-0002_enhanced.wav |
| German | german/pocket-tts-german.gguf + german/mmproj-pocket-tts-german.gguf | 152 MB | unmute-prod-website/default_voice.wav |
| Italian | italian/pocket-tts-italian.gguf + italian/mmproj-pocket-tts-italian.gguf | 152 MB | unmute-prod-website/default_voice.wav |
| Portuguese | portuguese/pocket-tts-portuguese.gguf + portuguese/mmproj-pocket-tts-portuguese.gguf | 152 MB | unmute-prod-website/default_voice.wav |
| Spanish | spanish/pocket-tts-spanish.gguf + spanish/mmproj-pocket-tts-spanish.gguf | 152 MB | unmute-prod-website/default_voice.wav |
| Welsh (community, trained from scratch) | welsh/pocket-tts-welsh.gguf + welsh/mmproj-pocket-tts-welsh.gguf | 613 MB | any Welsh reference clip, a few seconds is enough |
French is converted from upstream's french_24l checkpoint — the only French
variant Kyutai publishes. It has 24 transformer layers instead of 16, hence the
larger file and the lower real-time factor.
All six pairs were verified on CPU by synthesizing a native-language sentence and checking the output is valid, non-silent audio.
Welsh (Cymraeg): a community model, not a Kyutai repackage
Every other pack in this repository is a GGUF conversion of Kyutai's own weights. The welsh/
folder is not. It is a community model trained from scratch in Welsh by EryriLabs on 173 hours of
openly licensed Welsh speech, using Kyutai's Pocket TTS recipe and their frozen Mimi codec. None of
Kyutai's language weights are in it.
As far as we can find, the first Welsh TTS that can speak in a custom voice from a few seconds of reference audio, running locally on a CPU.
Measured with llama-tts on an i9-13900K: real time factor 0.65 on a single thread and 0.24 on
eight, so roughly four times faster than real time. Word error rate against the PyTorch original is
the same within the sampling noise.
It has a real weakness worth knowing before you use it: about 40% of draws fail a voicing check,
and they are mostly the long sentences. Split long text into sentences, generate more than one
draw, and keep the best. Pass --temp 0.3, which is what the model was tuned at.
Reference voices must be your own or used with permission. Licence CC-BY-4.0, the same as the rest
of the repository. Full details, training data and licences are in
welsh/README.md.
Usage
Requires official ggml-org/llama.cpp at or after commit 9f0d017 — Pocket TTS support is merged upstream, so a stock build of llama-tts works; no fork or patch needed. A speaker reference file is effectively mandatory — the model produces almost no audio without one.
llama-tts -m pocket-tts-en.gguf -mm mmproj-pocket-tts-en.gguf \
-p "Hello, this is Pocket TTS running locally." \
--tts-speaker-file default_voice.wav --output out.wav
Output is 24 kHz mono WAV at ~12.5 frames/sec.
Voices: reference clips only supply timbre; the language is fixed by the
weights. An English reference clip drives every language correctly, so you do
not need a native-language sample. Voices come from
kyutai/tts-voices, which currently
carries a dedicated non-English set for French only (cml-tts/fr).
Spanish note: avoid starting prompts with a leading ¡ — it can truncate
generation after a fraction of a second. Begin with the word itself.
For a warm, OpenAI-compatible HTTP server (POST /v1/audio/speech) and a full local voice-assistant chain (Gemma 4 audio-in → Pocket TTS out, ~1.3s to first audio), see llama-tts-server and its Jetson edition jetson-voice-assistant.
Provenance
Converted with llama.cpp's convert_hf_to_gguf.py at master commit 9f0d017, from kyutai/pocket-tts languages/<name> (base checkpoints; French from french_24l), F16/F32 tensors as emitted by the converter (no quantization).
License and attribution
CC-BY-4.0, same as the upstream model. Original model by Kyutai (kyutai/pocket-tts, paper). This repo only repackages the weights in GGUF format.