Chatterbox Multilingual โ€” GGUF

ResembleAI's Chatterbox Multilingual: expressive speech in 23 languages, with voice cloning.

Two files make one model, as with llama.cpp's multimodal projectors: the model file is the text-to-speech LM backbone, run by llama.cpp; the codec file holds the audio side (decoder / vocoder, speaker encoders and the adaptor between the two), run by codec.cpp. The runtimes below wire the two graphs together, on CPU or GPU (CUDA, Vulkan, Metal), fully offline.

Files

Every run needs one model file + one codec file from this repo.

--backbone --model (codec) Total
Recommended chatterbox-mtl-q8_0.gguf codec-q8_0.gguf 857 MB
Smallest chatterbox-mtl-q4_k_m.gguf codec-q4_k_m.gguf 496 MB
Best quality chatterbox-mtl-f16.gguf codec-f16.gguf 1.6 GB

The model file carries the T3 text tokenizer as its llama.cpp vocabulary (tokenizer.ggml.pre = chatterbox): it needs codec.cpp from 2026-10-21 on, or a llama.cpp with codec.cpp's chatterbox-tokenizer-llamacpp.patch. The files of earlier releases (chatterbox-mtl-t3-*.gguf, chatterbox-mtl-codec-*.gguf, chatterbox-mtl-s3t.gguf) remain at revision 44e18bb.

Other files
File Size
chatterbox-mtl-bf16.gguf 1.0 GB
chatterbox-mtl-f32.gguf 2.0 GB
chatterbox-mtl-q2_k.gguf 187 MB
chatterbox-mtl-q3_k_l.gguf 267 MB
chatterbox-mtl-q3_k_m.gguf 244 MB
chatterbox-mtl-q3_k_s.gguf 219 MB
chatterbox-mtl-q4_0.gguf 285 MB
chatterbox-mtl-q4_1.gguf 317 MB
chatterbox-mtl-q4_k_s.gguf 288 MB
chatterbox-mtl-q5_0.gguf 348 MB
chatterbox-mtl-q5_1.gguf 380 MB
chatterbox-mtl-q5_k_m.gguf 358 MB
chatterbox-mtl-q5_k_s.gguf 348 MB
chatterbox-mtl-q6_k.gguf 415 MB
codec-f32.gguf 1.2 GB
codec-q5_k_m.gguf 224 MB

Command line (codec.cpp)

With codec.cpp's tts-cli (build it; it bundles llama.cpp), then:

hf download BricksDisplay/Chatterbox-Multilingual-TTS-GGUF chatterbox-mtl-q8_0.gguf codec-q8_0.gguf --local-dir Chatterbox-Multilingual-TTS

./build/tts-cli synthesize --backbone Chatterbox-Multilingual-TTS/chatterbox-mtl-q8_0.gguf --model Chatterbox-Multilingual-TTS/codec-q8_0.gguf \
    --text "[en]hello, this is chatterbox speaking." --output out.wav

Clone a voice from a few seconds of clean speech (it works across languages):

./build/tts-cli synthesize ... --ref-audio my_voice.wav --text "[en]hello there." --output out.wav

All tts-cli options (voices, voice cloning, sampling, GPU) are described in the codec.cpp README.

Python

The codec_cpp package runs the same pipeline (it builds codec.cpp with its bundled llama.cpp, so it needs CMake and a C++ compiler):

pip install "codec-cpp @ git+https://github.com/mybigday/codec.cpp" huggingface_hub soundfile
import codec_cpp, soundfile
from huggingface_hub import hf_hub_download

tts = codec_cpp.TTS(hf_hub_download("BricksDisplay/Chatterbox-Multilingual-TTS-GGUF", "chatterbox-mtl-q8_0.gguf"),
                    hf_hub_download("BricksDisplay/Chatterbox-Multilingual-TTS-GGUF", "codec-q8_0.gguf"))
audio, sr = tts.synthesize("[en]hello, this is chatterbox speaking.")
soundfile.write("out.wav", audio, sr)

tts.voices() lists the builtin voices; ref_audio= clones a voice where the model supports it; tts.stream(text) yields audio as it is generated. More in the Python docs.

React Native (llama.rn)

llama.rn loads the same two files on iOS and Android:

const ctx = await initLlama({ model: 'chatterbox-mtl-q8_0.gguf', embedding: true })
await ctx.initVocoder({ path: 'codec-q8_0.gguf' })
const { prompt, grammar, embedding, flow } = await ctx.getFormattedAudioCompletion({
  prompt: 'Hello world',
})
const result = await ctx.completion({ prompt, grammar, embedding })
const pcm = flow === 'continuous_embd'
  ? await ctx.decodeAudioEmbeddings(result.embeddings, result.embedding_dim)
  : await ctx.decodeAudioTokens(result.audio_tokens)

Voice cloning, saved voices and per-model notes: llama.rn TTS docs.

Input text

Prepare the text as upstream MTLTokenizer does:

  1. lowercase it and apply Unicode NFKD normalization,
  2. for Japanese, convert to hiragana; for Chinese, convert to Cangjie codes (plain Chinese characters are not pronounced correctly),
  3. prefix the language tag: [en], [fr], [de], [es], [ja], [zh], โ€ฆ
import unicodedata
text = "[es]" + unicodedata.normalize("NFKD", "Hola, ยฟcรณmo estรกs hoy?".lower())

Skipping NFKD makes accented letters (รฉ, รณ, รผ, โ€ฆ) come out wrong.

Sampling

The model files carry the recommended sampling as llama.cpp's general.sampling.* metadata, the settings of the original ChatterboxTTS.generate(); tts-cli, tts-server, llama.rn and any llama.cpp host apply them unless you set your own.

Setting Value tts-cli flag
temperature 0.8 --temp 0.8
top-k 0 (off) --top-k 0
top-p 1.0 (off) --top-p 1.0
min-p 0.05 --min-p 0.05
repetition penalty 1.2 --repeat-penalty 1.2
repetition window -1 (all generated tokens) --repeat-last-n -1
sampler order penalties โ†’ temperature โ†’ min-p โ†’ top-p --samplers "penalties;temperature;min_p;top_p"

The speech head's penalty history starts with the start-of-speech token, as in the original. The original multilingual generate() uses a repetition penalty of 2.0, but only together with its attention-driven end forcing, which codec.cpp does not have; without it 2.0 often runs to the length limit, so 1.2 is recommended.

Voices

  • Builtin voice: default.
  • Voice cloning: --ref-audio with any short, clean clip. Save it with --save-speaker to reuse it without the clip.

License

mit, the same as the original model.

Downloads last month
2,667
GGUF
Model size
0.5B params
Architecture
llama
Hardware compatibility
Log In to add your hardware

2-bit

3-bit

4-bit

5-bit

6-bit

8-bit

16-bit

32-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for BricksDisplay/Chatterbox-Multilingual-TTS-GGUF

Quantized
(39)
this model

Collection including BricksDisplay/Chatterbox-Multilingual-TTS-GGUF