Chatterbox Multilingual oMLX / MLX Q6 G64
Native MLX affine 6-bit, group-64, packed using oMLX _quantize_chunked from the original FP32 source. 718.36 MB main checkpoint, versus 877.79 MB for Q8 and 2,711.11 MB for FP32. This is native affine packing without importance calibration or the stock oQ mixed-precision LLM calibration workflow.
651 main matrices are stored as Q6. The included load_q6.py additionally quantizes 37 external S3Tokenizer matrices at load time, 688 Q6 matrices in execution. Unsupported tensors keep FP32. The S3Tokenizer remains a separate 494.87 MB original disk download/cache. The standard mlx-audio loader quantizes the main checkpoint only; use the included loader for the evaluated full configuration.
This generic model requires your own authorized reference audio. It contains no Valentina recording or private voice conditioning.
Multilingual V3 runtime compatibility
This checkpoint uses the Multilingual V3 speech architecture. For
MLX-Audio builds whose HiFT V3 decoder applies a final LeakyReLU
negative slope of 0.1 before conv_post, the official V3 source uses
0.01 at that location. Check the runtime implementation or use a
version with the V3 decoder corrected; the intermediate slopes remain
unchanged. This is a decoder compatibility consideration and does not
require re-quantizing the model.
The LatAm regular Q8 release contains a source-guarded example and measured saturation checks. Those LatAm results do not certify this checkpoint; retain the model-specific evaluations and validate audio from your own runtime.
Multilingual fidelity follow-up using the Turbo tests — 10 October 2026
Full protocol, findings and reproduction · Per-clip CSV · Transcripts · Five-page figure PDF.
Fresh FP32/Q8/Q6 measurements following the pinned Turbo evaluation, adapted to Multilingual's voice cloning and native 10-step decoder. Six English/Spanish phrases × two seeds give 72 primary clips, plus 12 FP32 self-controls and 24 timing renders. All audio and reference-derived embeddings/tokens/conditioning remain private. This package publishes derived measurements and scripts only.
| Matched FP32 comparison, mean over 12 clips | Q8 G64 | Q6 G64 |
|---|---|---|
| Controlled decoder speaker cosine ↑ | 0.999778 | 0.998462 |
| Controlled log-mel RMS error, dB ↓ | 0.332138 | 1.000980 |
| Controlled mel magnitude cosine ↑ | 0.999722 | 0.997190 |
| Controlled spectral convergence ↓ | 0.034758 | 0.111073 |
| Controlled aligned waveform cosine ↑ | 0.978470 | 0.878268 |
| Whole-generation speaker cosine ↑ | 0.954568 | 0.917357 |
| Whole-generation strict ASR word edits | 29/216 (13.43%) | 43/216 (19.91%) |
| Warm generation median, seconds | 5.569 | 5.839 |
| Whole-process peak RSS, GiB | 1.510 | 1.362 |
Interpretation: Q8 preserves the original decoder more closely on this corpus. Whole-model token generation can diverge: sentence omissions in some ASR transcripts and a Q6 400-token/16-second pacing outlier are retained in the report. FP32 has 18/216 whole-generation ASR edits itself. Cosine is an in-family VoiceEncoder identity proxy, not MOS or a perceptual percentage; strict ASR is imperfect. Three phrases per language are insufficient for equivalence or a universal ranking. Timing ran on battery amid desktop activity; a separate Q6 recheck yielded a 5.941-second median. RSS and MLX allocations overlap. No new MOS, pitch or power measurements were made in this follow-up.
The weight audit confirms 651 main + 37 external runtime matrices per quantization, with all 1,836 unsupported tensors including convolutions unchanged FP32. This differs from the Turbo checkpoint's precision policy. No model weights were modified for this study.
Manifest, scientific validation, validation limits, evidence ledger. Source archive: groxaxo/experimentos at bb217a2. The prior naturalness/prosody corpus and historical evaluations below remain separate.
Complete FP32 / Q8 / Q6 experiment and model information
Experiment entry and reproduction · Performance/WER/power report · Naturalness and prosody · PDF · CSV.
The complete experiment package is included in this model repository: six prompts (three English, three Spanish), seeds 42 and 123, 36 matched recordings' derived measurements, five PNG/SVG figures, individual transcripts, pinned model and evaluator provenance, native quantization recipes, and an offline integrity/revalidation script. Private reference/generated recordings and the local audio listening panel are excluded. This is a generic checkpoint; supply reference audio you are authorized to use.
| Fresh 9 October 2026 run, MacBook Air M5 / 24 GiB | FP32 | Q8 G64 | Q6 G64 |
|---|---|---|---|
| Main checkpoint, decimal MB | 2711.114 | 877.794 | 718.359 |
| Mean warm generation, seconds | 4.925 | 2.687 | 2.580 |
| Aggregate real-time factor | 1.386 | 0.740 | 0.705 |
| Peak process RSS, GiB | 3.226 | 1.521 | 1.372 |
| Peak MLX allocation, GiB | 4.197 | 2.029 | 1.884 |
| Strict pooled Parakeet WER | 7.33% (11/150) | 6.67% (10/150) | 8.67% (13/150) |
| English UTMOSv2 predicted MOS | 3.032 | 3.117 | 3.121 |
| Spanish predicted MOS, exploratory | 2.643 | 2.737 | 2.749 |
| Pitch standard deviation, semitones | 2.617 | 2.567 | 2.632 |
Limits: predicted MOS is not human listener MOS. English Q6−Q8 was +0.003593, phrase-bootstrap 95% interval [−0.140297, +0.211669], with only three English prompts. This establishes neither a perceptual winner nor equivalence. Spanish calibration is unvalidated for this corpus. More pitch variation is not inherently better. Performance used battery power, active desktop and fixed FP32→Q8→Q6 order; speed/power differences need controlled replication. RSS and MLX allocations overlap. Only English and Spanish were evaluated, regardless of the upstream supported-language metadata.
Package manifest, figure source hashes, archive origin, validation methods and known limits. From the package directory, python3 scripts/audit_archive.py revalidates saved data without downloading any models. Root SHA256SUMS.json includes the unchanged model checkpoint and this documentation package.
Comparison
Full fresh FP32 / Q8 / Q6 report, 36 generations, English/Spanish, two seeds. Q6 used 1.37 GiB process peak RSS, versus 1.52 GiB Q8 and 3.23 GiB FP32. Mean warm generation was 2.58 s Q6, 2.69 s Q8 and 4.92 s FP32. Q6/Q8's small timing difference is not a general speed guarantee: desktop load varied, order was fixed and the Mac used battery power.
Strict pooled Parakeet WER: 8.67% Q6, 6.67% Q8, 7.33% FP32. This is a three-edit Q6/Q8 gap in only 150 reference words; ASR does not measure naturalness or voice similarity. All individual transcripts and measurement limitations are published. Only English and Spanish were evaluated; language metadata follows the multilingual source's supported set.
Naturalness and prosody follow-up
Full analysis and plots, PDF, and CSV metrics: the same 36 clips were evaluated with official UTMOSv2 (five folds, five crops per fold), pYIN pitch tracking, Praat HNR, speech rate, pauses and intensity. Predicted English MOS was 3.032 FP32 / 3.117 Q8 / 3.121 Q6. The Q6-Q8 gap was only 0.004 points, with a prompt-bootstrap interval spanning zero; this does not establish perceptual superiority or equivalence. Spanish MOS is exploratory. These are automatic estimates, not human listener ratings. Low-energy vocoder tails are excluded from intonation metrics, and all individual values, estimator variation and limitations are provided.
Apple Silicon usage
Tested with mlx-audio 0.5.7 and MLX 0.32.3 / Metal. oMLX supplied the packing primitive; its serving runtime is not required.
pip install -r requirements.txt
import sys
from pathlib import Path
from huggingface_hub import snapshot_download
import mlx.core as mx
import numpy as np
import soundfile as sf
folder = Path(snapshot_download("groxaxo/chatterbox-multilingual-MLX-Q6-G64"))
sys.path.insert(0, str(folder))
from load_q6 import load_model
model = load_model(folder)
conds = model.prepare_conditionals("your-reference.wav", 24000, 0.5)
mx.random.seed(42)
results = list(model.generate(
"Hola, esta es una prueba de voz.", conds=conds, lang_code="es",
exaggeration=0.5, cfg_weight=0.5, temperature=0.8,
repetition_penalty=1.2, min_p=0.05, top_p=0.95,
max_new_tokens=400, verbose=False,
))
mx.eval(*[r.audio for r in results]); mx.synchronize()
audio = np.concatenate([np.asarray(r.audio).reshape(-1) for r in results])
sf.write("output.wav", audio, 24000)
Use lang_code="en" for English. First use fetches the separate S3Tokenizer unless cached. Enable offline mode after both model and dependency are cached.
Provenance, rebuild and license
Source revision 03565773edd72e949572557597af8063bb49a18a. External tokenizer revision tested: e0c9886f0e1c35ae85b1f27277416fb19fc72bec. oMLX revision: 70f44cfd652d2013dc0f9776dca7518e32101b00. Source/quantized hashes and byte-identical untouched tensors: weight-validation.json. No fine-tuning, LoRA merging or voice adaptation was baked in. Upstream Resemble AI MIT license retained; this is an unofficial quantization.
python quantize_q6.py --source /path/to/fp32 --out ./rebuilt-q6
The standalone native MLX recipe was executed on Apple Silicon / Metal and reproduced the checkpoint byte-identically. See rebuild-validation.json. Backend, platform and library/serialization differences can change packed bytes; use the published SHA-256 to identify this evaluated artifact.