CoolFace
Modelpublic

EryriLabs/pocket-tts-GGUF

sourceHugging Facecc-by-4.0updated 13d agoView on Hugging Face
0likes964downloads
Model Card

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.

LanguageFilesModel sizeTested voice
Englishpocket-tts-en.gguf + mmproj-pocket-tts-en.gguf (repo root)152 MBunmute-prod-website/default_voice.wav
Frenchfrench/pocket-tts-french.gguf + french/mmproj-pocket-tts-french.gguf584 MBcml-tts/fr/10087_11650_000028-0002_enhanced.wav
Germangerman/pocket-tts-german.gguf + german/mmproj-pocket-tts-german.gguf152 MBunmute-prod-website/default_voice.wav
Italianitalian/pocket-tts-italian.gguf + italian/mmproj-pocket-tts-italian.gguf152 MBunmute-prod-website/default_voice.wav
Portugueseportuguese/pocket-tts-portuguese.gguf + portuguese/mmproj-pocket-tts-portuguese.gguf152 MBunmute-prod-website/default_voice.wav
Spanishspanish/pocket-tts-spanish.gguf + spanish/mmproj-pocket-tts-spanish.gguf152 MBunmute-prod-website/default_voice.wav
Welsh (community, trained from scratch)welsh/pocket-tts-welsh.gguf + welsh/mmproj-pocket-tts-welsh.gguf613 MBany 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](https://github.com/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](https://github.com/dwain-barnes/llama-tts-server) and its Jetson edition [jetson-voice-assistant](https://github.com/dwain-barnes/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.