| --- |
| license: apache-2.0 |
| base_model: FireRedTeam/FireRedTTS3 |
| pipeline_tag: text-to-speech |
| library_name: comfyui |
| tags: |
| - tts |
| - text-to-speech |
| - voice-cloning |
| - voice-design |
| - speech-editing |
| - fireredtts |
| - qwen3 |
| - comfyui-custom-node |
| - int8 |
| - convrot |
| - quantized |
| language: |
| - zh |
| - en |
| - yue |
| - ja |
| - ko |
| - es |
| - fr |
| - ru |
| - ar |
| - tr |
| - id |
| - pt |
| - it |
| - nl |
| - vi |
| - de |
| - uk |
| - th |
| - pl |
| - ro |
| - el |
| - cs |
| - fi |
| - hi |
| --- |
| |
| # FireRedTTS3-int8 (community INT8 ConvRot mirror) |
|
|
| INT8 ConvRot conversion of [FireRedTeam/FireRedTTS3](https://huggingface.co/FireRedTeam/FireRedTTS3) for |
| [FireRedTTS3-ComfyUI](https://github.com/Saganaki22/FireRedTTS3-ComfyUI), produced with the official |
| comfy-kitchen quantizer (`TensorWiseINT8Layout.quantize`, registry `quantize_int8_convrot_weight`). |
|
|
| Format per quantized Linear (current ComfyUI representation): |
|
|
| - `weight` β `torch.int8`, original `[out, in]` shape, contains the **offline Hadamard-rotated** weight (`W @ H^T` per 256-column group) |
| - `weight_scale` β `torch.float32`, `[out, 1]` per-output-row scale |
| - `bias` β original float bias |
| - `comfy_quant` β uint8 JSON: `{"format": "int8_tensorwise", "convrot": true, "convrot_groupsize": 256}` |
|
|
| At inference the companion custom node rotates activations online via |
| `comfy_kitchen.int8_linear(..., convrot=True, convrot_groupsize=256)` β dynamic per-row INT8 activation |
| quantization + INT8 GEMM, rescaled by `scale_x * scale_w`. No whole-weight dequantization on the hot path. |
|
|
| ## What is quantized (safe profile, group size 256) |
|
|
| | Component | Quantized | Kept float | |
| | --- | --- | --- | |
| | `fireredtts3_base` | 321/332 Linears (1.73B params, 81.5% of core): all `backbone_llm.layers.*`, `patch_encoder.blocks.*`, `dit.blocks.*` | embeddings, norms, `spk_proj_*`, `patch_encoder.in_proj/out_proj`, `dit_head`, `dit.in_proj` (1600 % 256 != 0), `dit.t_embedder`, `dit.final_layer`, `stop_head`, Conv1d | |
| | `fireredtts3_instruct` | 321/331 Linears (1.73B params, 71.2% of core): same block families (`backbone_llm.model.layers.*`) | same exclusions | |
| | `redae` | nothing | everything | |
| | `campp` | nothing | everything | |
|
|
| ## Sizes |
|
|
| | Core | Official fp32 | This repo | |
| | --- | --- | --- | |
| | `fireredtts3_base` | 8.48 GB | 3.30 GB | |
| | `fireredtts3_instruct` | 8.48 GB | 3.30 GB | |
| | `redae` / `campp` / tokenizer | copied through unchanged | | |
|
|
| ## Validation (base variant, full suite; instruct smoke-tested) |
|
|
| - Per-layer weight roundtrip (official quantize -> official dequantize): worst rel-L2 **0.00967**, worst cosine **0.999953** over 321 layers |
| - Real-activation comparison vs fp32 through the same `comfy_kitchen.int8_linear` runtime: worst rel-L2 **0.01162**, worst cosine **0.999932** |
| - On-disk structure: all 677 original keys preserved, scales fp32 `[N,1]` and positive, Conv1d/RedAE/CAM++ untouched |
| - Runtime proof: 321 `ConvRotInt8Linear` modules, >42k counted INT8 ConvRot kernel calls during generation, weights stay int8 across unload/reload |
| - BF16 vs INT8 generation (same seed/settings): identical patch counts (200/200), finite latents, EN/ZH ASR-verified, speaker-similarity parity (0.9007 vs 0.8991) |
| - Peak VRAM 13.1 -> 8.3 GiB; generation ~1.3x slower (memory optimization, honestly reported) |
|
|
| ## Usage Disclaimer |
|
|
| - The project incorporates zero-shot voice cloning functionality; Please note that this capability is intended **solely for academic research purposes**. |
| - **DO NOT** use this model for **ANY illegal activities**βοΈβοΈ |
| - The developers assume no liability for any misuse of this model. |
| - If you identify any instances of **abuse**, **misuse**, or **fraudulent** activities related to this project, **please report them to our team immediately.** |
|
|
|
|
| ## Citation |
|
|
| ```bib |
| @article{fireredtts3, |
| title = {FireRedTTS3: Unified Speech Generation and Editing with Semantically Enriched Speech Representations}, |
| author = {FireRed Team}, |
| journal = {arXiv preprint}, |
| year = {2026}, |
| } |
| ``` |
|
|
|
|
| ## Acknowledgements |
|
|
| - [Qwen3](https://github.com/QwenLM/Qwen3) and [Qwen2-Audio](https://github.com/QwenLM/Qwen2-Audio) for the language model and audio understanding foundations |
| - [DiTAR](https://arxiv.org/abs/2502.03930) for the patch-level diffusion autoregressive formulation |
| - [X-Codec](https://github.com/zhenye234/xcodec) for the discriminator design used in RedAE training |
| - [CAM++](https://modelscope.cn/models/iic/speech_campplus_sv_en_voxceleb_16k) for speaker embedding extraction |
| - [fastText](https://fasttext.cc/docs/en/language-identification.html) for automatic language identification |
| - [WeTextProcessing](https://github.com/wenet-e2e/WeTextProcessing) (wetext) for the Chinese / English text normalization front-end |
|
|
|
|
| All credit to the FireRed Team β see the upstream repo and model card. Apache-2.0. |
|
|