Chatterbox-Flash T3 W4A16 NVFP4
This is an unofficial community NVFP4 derivative of ResembleAI/chatterbox-flash. It is not affiliated with or endorsed by Resemble AI or NVIDIA.
The package replaces all 120 Chatterbox-Flash T3 transformer projection operators with source-free NVFP4 weights. Weights use native FP4 (E2M1) with E4M3 block scales; activations remain BF16, so the precise description is T3 all-projection W4A16 NVFP4. Embeddings, norms, conditioning layers, speech head, S3Gen, and the voice encoder remain at their upstream precision. This is not a whole-pipeline 4-bit model.
The canonical artifact does not contain the original BF16 T3 projection
weights. Its custom loader constructs those parameters on the meta device,
prepares the canonical FP4 codes/scales directly for FlashInfer, and never
calls nvfp4_quantize at load time. Engine rebuilds reuse the model-attached
projection provider.
What this release actually improves
The primary benefit is much lower storage and VRAM with a modest speed gain, not a claim that NVFP4 makes the complete TTS pipeline dramatically faster. S3Gen and several small T3 operations remain high precision, and some irregular prefix projections are slower in FP4 than BF16.
On the tested RTX 5060 Ti, the recommended D16 quality profile delivered:
- 83.97% smaller T3 checkpoint: 341 MB instead of 2.13 GB.
- 55.88% less complete model-asset storage/download after adding the unchanged S3Gen, voice encoder, and tokenizer: 1.412 GB instead of 3.200 GB.
- 33.2% lower allocated VRAM immediately after full pipeline load: 1.444 GB instead of 2.162 GB.
- 18.82% lower maximum allocated VRAM in the natural eight-text suite: 5.215 GB instead of 6.424 GB. Fixed-work peak allocation was 34.09% lower.
- 1.0811x aggregate-RTF speedup (7.50% lower duration-normalized latency) and 1.1131x valid-token T3 throughput. The fixed-work T3 speedup was 1.1260x; fixed whole-pipeline speedup was 1.0631x.
The D24 fast profile reaches 25.13% lower RTF than the D16 BF16 baseline, but that is a combined block-size-plus-NVFP4 result. Against matched D24 BF16, NVFP4 alone provides only a 1.0309x RTF speedup. This distinction matters when deciding whether the model is useful for your deployment.
How quality was evaluated
A Gemma Audio evaluator listened to eight English test utterances generated from one zero-shot reference voice. It transcribed each output, scored intelligibility, pronunciation, voice similarity, naturalness, and artifacts, and flagged hard failures. BF16 and NVFP4 were also compared blindly in both A/B orders to expose position bias.
- D16 BF16/NVFP4 means were 94.125/94.625. Both produced exact transcripts for 8/8 texts with zero hard failures. After reversing A/B order, the per-case result resolved to seven ties and one consistent BF16 preference.
- D24 BF16/NVFP4 means were 95.0/93.125. Both produced exact transcripts for 8/8 texts with zero hard failures. Order control resolved to six ties, one BF16 preference, and one NVFP4 preference.
This is encouraging automated evidence, not human MOS, a standard Seed-TTS benchmark, proof of perceptual identity, or a multi-speaker evaluation. The audio was intentionally not published because consent for public redistribution of the reference voice was not established.
Hardware and software
The accepted release configuration is intentionally narrow:
- Linux x86-64 and Python 3.12
- NVIDIA RTX 50-series SM120/SM121 (tested on RTX 5060 Ti)
- PyTorch 2.7.1+cu128 and CUDA 12.8 wheels
- FlashInfer 0.6.14 with
nvidia-cutlass-dsl4.5.2 - BF16 activations, FlashInfer CUDA graphs, user batch size 1
There is no CPU, MLX, Torch-SDPA, older-GPU, or non-NVFP4 fallback because the
BF16 projection sources are deliberately absent. RTX 5080 and SM121 are
allowed by the loader but have not yet been benchmarked. This is custom code,
not a Transformers AutoModel checkpoint or a standard Hub quantization
format, so the hosted inference widget is disabled.
nvidia-cutlass-dsl is installed under NVIDIA's separate software license.
Review THIRD_PARTY_NOTICES.md before installation.
Install
Clone the model repository, then use the included lock. Plain pip install
does not honor the upstream Torch override or the official cu128 wheel source.
git clone https://huggingface.co/ajh-code/chatterbox-flash-t3-w4a16-nvfp4
cd chatterbox-flash-t3-w4a16-nvfp4
uv sync \
--project runtime/chatterbox-flash \
--locked \
--extra flashinfer \
--python 3.12
The lock resolves the exact validated critical stack. A dry verification is:
runtime/chatterbox-flash/.venv/bin/python - <<'PY'
import importlib.metadata as md
import flashinfer
import torch
assert torch.__version__ == "2.7.1+cu128"
assert torch.version.cuda == "12.8"
assert md.version("flashinfer-python") == "0.6.14"
assert md.version("nvidia-cutlass-dsl") == "4.5.2"
assert hasattr(flashinfer, "prepare_bf16_fp4_weights")
assert hasattr(flashinfer, "mm_bf16_fp4")
assert torch.cuda.get_device_capability() in {(12, 0), (12, 1)}
print(torch.cuda.get_device_name(), "is ready")
PY
Zero-shot voice cloning
Use only reference audio that you have permission to clone.
runtime/chatterbox-flash/.venv/bin/python example.py \
--prompt-wav your-reference.wav \
--text "This is Chatterbox Flash running native NVFP4 projections." \
--output output.wav \
--block-size 16
The example downloads only the unchanged S3Gen, voice-encoder, and tokenizer
assets from the immutable base revision
4385507288b8197e6dab8b4e6b1603328d549d9d. It verifies their sizes and
SHA-256 fingerprints from nvfp4_config.json. It never downloads the original
2.13 GB t3_flash.safetensors.
The first decode for a new GPU/exact block shape invokes FlashInfer setup and tuning. On the RTX 5060 Ti, a fresh process with the selected D16 tactic already cached took 10.57 seconds for the first 1.28-second utterance versus 0.154 seconds for the same-process warm repeat. A completely missing tactic has taken roughly 25 seconds in development. Autotune results are GPU-specific, so this repository does not ship a universal cache.
Profiles
D=16 is the quality-default profile. D=24 is an explicitly optional fast
profile: it is materially faster overall but had a slightly lower automated
mean score and less consistent pairwise preference. D=32 was tested and
rejected after token-cap failures and an OOM in the natural suite; its cached
prior remains serialized for research provenance, but the release loader
refuses it.
| Profile | Intended use | NVFP4 aggregate RTF | NVFP4 T3 tok/s | Automated mean |
|---|---|---|---|---|
| D16 | Quality default | 0.08725 | 365.4 | 94.625 |
| D24 | Optional fast | 0.07062 | 483.3 | 93.125 |
RTX 5060 Ti results
The natural test is an eight-text, one-reference suite. Pipeline and T3 times
are sums of per-case medians; aggregate RTF divides summed pipeline time by
summed generated-audio duration. Memory is the maximum per-case median
PyTorch CUDA peak, not total nvidia-smi process memory.
| Profile | Comparison | RTF speedup | T3 throughput | Peak allocated reduction |
|---|---|---|---|---|
| D16 | W4A16 vs matched BF16 | 1.0811x | 1.1131x | 18.82% / 1.209 GB |
| D24 | W4A16 vs matched BF16 | 1.0309x | 1.0450x | 21.57% / 1.410 GB |
A fixed capped-work control removes sampled-length attribution. D16 T3 is
1.1260x faster and D24 T3 is 1.0656x faster; each reduces fixed-work peak
allocated memory by about 34%. D16 fixed whole-pipeline speedup is 1.0631x.
Do not quote the larger raw natural-suite wall-time ratios as pure NVFP4 speedups: the BF16 and W4A16 models sampled different token counts. The D24-versus-D16 speed difference is primarily the larger block size, not FP4 alone. Complete numeric records and caveats are in benchmark_results.json.
Automated quality was close but is not proof of perceptual identity:
- D16 BF16/NVFP4 means were 94.125/94.625; both transcribed 8/8 exactly with zero hard failures. Order-controlled pairwise scoring resolved to seven ties and one BF16 win.
- D24 BF16/NVFP4 means were 95.0/93.125; both transcribed 8/8 exactly with zero hard failures. Order control resolved to six ties, one BF16 win, and one NVFP4 win.
This was not human MOS, a standard Seed-TTS evaluation, or a multi-speaker release study.
Artifact and load behavior
t3_nvfp4.safetensors: 341,439,040 bytes, 447 tensors, SHA-256c5ea2d1d1441f657b383d8dad54bbae3778447d675822fb15918cb99b3587f1e- 360 canonical NVFP4 tensors cover 30 layers × 4 fused projection kinds × FP4 codes/E4M3 scales/FP32 alpha.
- 82 non-projection T3 tensors remain BF16; three fixed priors and two rotary buffers support source-free construction.
- Original T3 checkpoint: 2,129,657,904 bytes. The derivative T3 file is 83.97% smaller.
- Derivative T3 plus the three unchanged downloaded base assets totals 1,412,035,402 bytes versus 3,200,254,266 bytes upstream: 55.88% less model asset storage/download, excluding small runtime files and cache.
In the final source-free release smoke, fresh-process pipeline load with base hash verification and warm JIT state took 2.675 seconds and settled at 1.444 GB PyTorch allocated / 1.478 GB reserved before the first generation. It prepared 120 projections into 283,116,000 bytes, without materializing BF16 projection weights or calling the quantizer. The short generation peaked at 2.548 GB allocated. These are one-machine diagnostics; first-generation setup is reported separately above.
The canonical D16 loader regression reproduced the accepted stripped runtime bit-for-bit: token history, waveform tensor SHA-256, and saved WAV SHA-256 all matched. A longer request also rebuilt the engine successfully while retaining the same source-free projection provider.
Limitations and responsible use
- Only RTX 5060 Ti / SM120, batch one, and the documented settings received the complete technical and small automated-audio gate.
- D16 is the only quality-default profile. D24 is optional; D32 is rejected.
- S3Gen and voice-encoder execution are not quantized by this artifact.
- Prefix projections can remain slower than BF16 at irregular shapes; the decode block projections provide the measured NVFP4 gain.
- Streaming, multi-request throughput, RTX 5080 tuning, and human multi-voice listening remain future work.
- Generated length can change after quantization, affecting latency, memory, pauses, and termination even when transcripts are correct.
- Voice cloning can enable impersonation or deception. Obtain the speaker's consent, disclose synthetic audio where appropriate, and comply with local law and platform policies.
No evaluation audio is included because the reference clip's redistribution and voice-consent status was not established for a public model repository.
Attribution and citation
Chatterbox-Flash model weights and vendored runtime code are Copyright (c) 2026
Resemble AI and licensed under MIT. This runtime is based on source commit
74e05baa8ce574bf2cc571702391a21f1b0d48c5; the derivative modifies the
FlashInfer projection path and adds the canonical NVFP4 loader. See
THIRD_PARTY_NOTICES.md.
@misc{seo2026chatterboxflashpriorcalibratedblockdiffusion,
title={Chatterbox-Flash: Prior-Calibrated Block Diffusion for Streaming Zero-Shot TTS},
author={Deokjin Seo and Gangin Park and Kihyun Nam},
year={2026},
eprint={2605.30748},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2605.30748}
}
Repository files
t3_nvfp4.safetensors: canonical source-free checkpointnvfp4_config.json: complete schema, fingerprints, revisions, and profilesruntime/chatterbox-flash/: pinned installable derivative runtime and lockexample.py: tested local-bundle zero-shot generation entry pointbenchmark_results.json: machine-readable release measurementsSHA256SUMS: release integrity manifest
Model tree for ajh-code/chatterbox-flash-t3-w4a16-nvfp4
Base model
ResembleAI/chatterbox-flash