Ming-3.0 TTS 0.5B — oQ6 with protected oQ6 speech codec
A local conversion of inclusionAI/Ming-3.0-tts-0.5B, with a custom speech-specific oMLX allocation. Uses the installed oMLX quantizer at commit 70f44cfd652d2013dc0f9776dca7518e32101b00, starting from a strict MLX Audio BF16 export of checkpoint revision 8d66b70a00f05ad183fa8a863b4ce609fc83cbc0.
Precision distribution
oQ6 is the base level, not a claim that every tensor uses 6 bits or that the package averages 6 bits. All quantized matrices use affine format and group size 64. The actual stored tensor payload averages 7.261 bits per source parameter, including quantization metadata and preserved BF16 tensors. Weight file: 1.343 GB.
- Quantized matrices: 425 at 6-bit, 204 at 8-bit; 629 total.
- 551 tensors preserved exactly at BF16: speaker/stop heads, non-transformer control and codec boundaries, norms, biases, rotary parameters and small embeddings.
- The tied text embedding/output table stays at 8-bit.
- The audio encoder and decoder retain the calibrated oQ6 allocation, including its 8-bit promotions. The lower-bit text backbone, flow head and aggregator remain selectively compressed.
Four English/Spanish calibration utterances were used to capture actual BF16 Linear inputs. For each transformer projection, candidate 4/5/6/8-bit oMLX activation-importance-weighted clipping was evaluated using relative output MSE. oMLX calibrated per-stack structural floors and local error caps determine the distribution. This uses oMLX's quantization primitives with a speech adapter, not the unchanged text-only CLI/budget planner or GPTQ/oQ+. The full per-matrix choices and errors are in quantization-report.json and calibration-sensitivity.json.
The initial oQ5/oQ4 codecs each produced two Spanish ASR discrepancies. Component checks found that protecting the reference encoder resolved them. The final variants also retain the oQ6 decoder to preserve numerical waveform fidelity. Two original test phrases informed this refinement; six fresh phrases were then checked separately.
Use
conda create -n ming-mlx python=3.11 pip -y
conda activate ming-mlx
pip install "mlx-audio==0.6.2"
import mlx.core as mx
import numpy as np
from mlx_audio.tts.utils import load_model
from mlx_audio.audio_io import write
model = load_model("groxaxo/Ming-3.0-tts-0.5B-MLX-oQ6-HQ6Speech-G64", strict=True)
mx.random.seed(42)
result = next(model.generate(
text="Hello, this is a portable Ming speech model.",
voice="US_Emma", raw_text=True, max_tokens=200,
))
mx.eval(result.audio)
write("sample.wav", np.array(result.audio), result.sample_rate, format="wav")
For Spanish reference conditioning, supply lang_code="es", ref_audio="reference.wav" and ref_text="Exact transcript of reference.wav.". A precomputed 192-value CAM++ speaker embedding may be passed as spk_emb. Automatic extraction is not implemented in MLX Audio's dense runtime; validation computed the embedding separately with the original ONNX encoder, then synthesized through MLX. Reference recordings, embeddings and generated reference-voice audio are not included in this model package.
Measured validation
Apple M5, 24 GiB unified memory, macOS 27.0.1; MLX Audio 0.6.2 and MLX 0.32.4.
| Language | Standard phrases | RTF | Peak MLX allocation | Fresh phrase ASR matches |
|---|---|---|---|---|
| English | 5/5 ASR matches | 0.366 | 1.96 GB | 3/3 |
| Spanish | 5/5 ASR matches | 0.371 | 1.96 GB | 3/3 |
All 16 generated clips stopped normally and had finite, non-silent, unclipped waveforms. ASR was local Parakeet; case, punctuation and accent marks were normalized for word comparison. RTF includes reference loading/encoding and synthesis with evaluated output; excludes model loading, untimed warm-up, file encoding, ASR and network. Peak memory means MLX allocations, not RSS. See validation.json for sample timings and complete methodology.
The protected codec's same-latent decoder comparison against BF16 measured 36.98 dB SNR, correlation 0.999901, on four seconds of speech. Strict reload and built-in synthesis passed from a relocated copy, empty Hugging Face cache and offline mode, without importing PyTorch or ONNX Runtime. Preserved tensors and serialization were verified exactly.
Limits
These are small engineering checks. ASR is not an accent, naturalness or speaker-similarity score. Earlier original-runtime Spanish samples sounded unnatural / Spain-like to the listener; this quantization is not established to fix that. Write numbers and units in words because text normalization is not ported. Other prompts may expose stopping or pronunciation issues. The high-precision codec makes the package larger than a uniform 6-bit export; that is intentional.
MIT license inherited from inclusionAI. Audit files: quantization-report.json, calibration.json, calibration-sensitivity.json, provenance.json, validation.json, SHA256SUMS.