Views
No views yet
kyutai/hibiki-zero-3b-pytorch-bf16,
a simultaneous speech-to-speech + speech-to-text translation model
(FR / ES / PT / DE → EN) with voice transfer.group_size=32 is intentional: stock moshi-mlx (and the moshi-swift iOS
loader) hardcode gs32 for .q4.safetensors, so a larger group size would not
load without patching the loader.leon.wav, FR→EN)| Value | |
|---|---|
| LM weights | 5.8 GB bf16 → 2.2 GB q4 (578 layers quantized) |
| Speed | 16.5 tok/s ≈ 1.3× real-time — vs ~0.7× for the PyTorch/MPS path (~1.9× faster) |
| Quality | Coherent FR→EN — correctly translated the Léon Marchand / Paris 2024 Olympics commentary; minor q4 artifacts (e.g. one "Paris 1024" slip) |
| Audio out | 24 kHz wav ✅ |
| File | Description |
|---|---|
hibiki.q4.safetensors | 4-bit quantized LM (MLX) |
config.json | model config (needed to build the LmConfig) |
mimi-pytorch-e351c8d8@125.safetensors | Mimi codec (bf16) |
tokenizer_spm_48k_multi6_2.model | SentencePiece tokenizer |
mlx_hibiki_patch.py | runtime patches for moshi-mlx (required) |
verify_mlx_q4.py | example inference script |
moshi-mlx (0.3.0) targets
moshi / older hibiki and misses three hibiki-zero deltas, so these weights will
not load without mlx_hibiki_patch.py:hidden_scale (feedforward dim) and kv_repeat=2
instead of the hardcoded 4*dim / kv_repeat=1.kv_repeat=2).rope_concat == RoPE with interleave=False
(MLX traditional=False).1pip install moshi-mlx
2
3python - <<'PY'
4import mlx_hibiki_patch # patches moshi_mlx for hibiki-zero — import first
5from moshi_mlx import run_inference
6import sys
7sys.argv = [
8 "run_inference",
9 "--lm-config", "config.json",
10 "--moshi-weights", "hibiki.q4.safetensors",
11 "--mimi-weights", "mimi-pytorch-e351c8d8@125.safetensors",
12 "--tokenizer", "tokenizer_spm_48k_multi6_2.model",
13 "input_fr.wav", "output_en.wav",
14]
15run_inference.main()
16PYverify_mlx_q4.py for a ready-to-run example.kyutai/hibiki-zero-3b-pytorch-bf16.