Instructions to use cstr/pocket-tts-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Pocket-TTS
How to use cstr/pocket-tts-GGUF with Pocket-TTS:
from pocket_tts import TTSModel import scipy.io.wavfile tts_model = TTSModel.load_model("cstr/pocket-tts-GGUF") voice_state = tts_model.get_state_for_audio_prompt( "hf://kyutai/tts-voices/alba-mackenna/casual.wav" ) audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.") # Audio is a 1D torch tensor containing PCM data. scipy.io.wavfile.write("output.wav", tts_model.sample_rate, audio.numpy()) - Notebooks
- Google Colab
- Kaggle
Pocket TTS — GGUF (ggml-quantised)
GGUF / ggml conversion of kyutai/pocket-tts for use with CrispStrobe/CrispASR.
Pocket TTS is a lightweight (~100M param) continuous-latent autoregressive TTS model from Kyutai, based on the CALM paper (arXiv:2509.06926). Unlike codebook-based TTS models, Pocket TTS emits continuous float vectors — no discrete tokens, no softmax sampling:
- FlowLM backbone — causal transformer (1024D, 16 heads, 6 layers; 24 layers for the French preview, RoPE, GELU) operating at 12.5 Hz
- Consistency head — SimpleMLPAdaLN (512D, 6 ResBlocks) with timestep embedding → one-step LSD decode → 32-dim continuous latent vectors
- Mimi VAE decoder — SEANet upsample convolutions + 2-layer transformer → 24 kHz PCM
- Mimi VAE encoder (voice-cloning builds only) — SEANet downsample + 2-layer transformer + speaker projection → reference conditioning
- Text tokenizer — SentencePiece BPE (4000 vocab, embedded in GGUF)
Single GGUF file — no separate codec companion needed (Mimi weights and the tokenizer are embedded).
Released under CC-BY-4.0 license.
Voice cloning
Pocket TTS is zero-shot: it clones the timbre of a short reference clip. The
voice-cloning builds (the files without novc in the name) embed the Mimi
VAE encoder and speaker projection needed to condition on a reference; the
English-only novc builds omit that encoder and are ~20 MB smaller.
# clone the timbre of ref.wav (any sample rate; mono is used)
./build/bin/crispasr --backend pocket-tts -m pocket-tts-english-f16.gguf \
--voice ref.wav \
--tts "The quick brown fox jumps over the lazy dog." \
--tts-output fox.wav --seed 42
Pocket TTS produces near-silence without voice conditioning, so if you omit
--voice a built-in default reference is used automatically. Use a clean,
single-speaker reference of a few seconds for best results.
Files
The multilingual Q8_0/F16 files are full voice-cloning models. German, Spanish,
Italian, and Portuguese are Kyutai's distilled 6-layer releases; French is the
larger, undistilled 24-layer preview. The decoder-only novc alternatives
are currently English-only.
| File | Voice clone | Quant | Size | Notes |
|---|---|---|---|---|
pocket-tts-english-f16.gguf |
✅ | F16 | 219 MB | Reference quality, cloning |
pocket-tts-english-q8_0.gguf |
✅ | Q8_0 | 124 MB | Near-F16, cloning |
pocket-tts-english-q4_k.gguf |
✅ | Q4_K | 73 MB | Smallest with cloning |
pocket-tts-english-novc-f16.gguf |
— | F16 | 200 MB | Decoder only |
pocket-tts-english-novc-q8_0.gguf |
— | Q8_0 | 110 MB | Decoder only |
pocket-tts-english-novc-q4_k.gguf |
— | Q4_K | 62 MB | Decoder only, smallest |
pocket-tts-german-q8_0.gguf |
✅ | Q8_0 | 124 MB | German, distilled 6L |
pocket-tts-spanish-q8_0.gguf |
✅ | Q8_0 | 124 MB | Spanish, distilled 6L |
pocket-tts-italian-q8_0.gguf |
✅ | Q8_0 | 124 MB | Italian, distilled 6L |
pocket-tts-portuguese-q8_0.gguf |
✅ | Q8_0 | 124 MB | Portuguese, distilled 6L |
pocket-tts-french_24l-q8_0.gguf |
✅ | Q8_0 | 365 MB | French, undistilled 24L preview |
F16 equivalents of every multilingual Q8_0 file are also available (about 219 MB for each 6-layer model and 673 MB for French).
Quick start
# 1. Build CrispASR
git clone https://github.com/CrispStrobe/CrispASR
cd CrispASR
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j --target crispasr-cli
# 2. Download a model (voice-cloning F16 shown)
huggingface-cli download cstr/pocket-tts-GGUF pocket-tts-english-f16.gguf --local-dir .
# 3. Synthesize
./build/bin/crispasr --backend pocket-tts -m pocket-tts-english-f16.gguf \
--tts "Hello, how are you today?" \
--tts-output hello.wav --seed 42
Or with auto-download. -l de, es, it, pt, or fr selects and caches
the matching Q8_0 checkpoint; omit -l for English:
./build/bin/crispasr --backend pocket-tts -m auto --auto-download -l es \
--accept-license pocket-tts-terms \
--voice ref.wav --i-have-rights \
--tts "Hola, este modelo ya habla español." \
--tts-output hola.wav
Python binding
from crispasr import Session
sess = Session("pocket-tts-english-f16.gguf")
sess.set_tts_seed(42)
pcm = sess.synthesize("Hello world.")
sess.write_wav("hello.wav", pcm)
Conversion
Converted with models/convert-pocket-tts-to-gguf.py from the CrispASR repo
(--voice-cloning bakes in the Mimi encoder + speaker projection). The Mimi
codec and SentencePiece tokenizer are embedded in the single GGUF.
- Downloads last month
- 1,972
8-bit
16-bit
Model tree for cstr/pocket-tts-GGUF
Base model
kyutai/pocket-tts