Nodes/ZONOS2 TTS/ZONOS2 Model Loader
ComfyUI Node

ZONOS2 Model Loader

Where your 14 GB TTS model actually lands

By Saganaki22·Created 3 months ago·Updated 3 months ago· 12
ZONOS2 Model Loader
    • zonos2_model
    model
    dtypeauto
    attentionauto
    download_if_missingtrue

    Every ZONOS2 workflow starts here. This is the node that pulls the checkpoint down from Hugging Face, decides whether your GPU can actually hold it, and hands a zonos2_model bundle to the two generation nodes in this pack. It's the least glamorous node on the page and the one beginners trip on first, mostly because they don't realize how much is about to download.

    ZONOS2 is Zyphra's open-weights TTS model - a big MoE thing trained on 6+ million hours of multilingual speech, Apache-2.0 weights. This pack (Saganaki22's Zonos2_TTS-ComfyUI, released June 2026) wraps it to run natively in ComfyUI, and the loader is where the heavy lifting lives.

    What it loads, and how

    The loader's model dropdown offers two presets plus anything you drop into ComfyUI/models/zonos2/ yourself:

    • ZONOS2 BF16 (drbaph/ZONOS2-BF16) - the full-quality checkpoint, roughly 14.3 GiB for the main model alone.
    • ZONOS2 FP8 Mixed (drbaph/ZONOS2-FP8) - ~9.78 GiB. FP8 only on the MoE expert gate/up projections, everything sensitive kept in BF16. This is a memory-saver, not a speed hack; the README says outright it's not guaranteed faster than BF16.

    First run auto-downloads the main checkpoint plus two supporting pieces into ComfyUI/models/zonos2/: the dac_44khz decoder (turns the model's audio tokens into actual sound) and the speaker_encoder (only needed for voice cloning, fetched lazily). That's why the first load takes a while. Existing folders get reused, and with download_if_missing on, only the missing bits come down - flip it off for a fully offline setup.

    Beyond the model choice, three settings matter:

    • dtype - auto (default) preserves the checkpoint's native dtype; mixed FP8 accepts auto or bf16 but rejects fp16.
    • attention - auto uses FlashAttention when it's installed and compatible, otherwise falls back to PyTorch SDPA.
    • download_if_missing - described above.

    The one output, zonos2_model (ZONOS2_MODEL type), wires straight into ZONOS2 Voice Generation or ZONOS2 Voice Clone. That's the whole graph.

    Where the memory magic happens

    This is the part ComfyUI has been moving toward for years: the model is registered as a real module with ComfyUI's model management and AIMDO, not just dumped into VRAM. If your GPU's total VRAM is below ~17.3 GiB (BF16) or ~12.8 GiB (FP8), the main model runs through AIMDO's file-backed paging - only the MoE experts that are actually being routed get paged into VRAM, and the Memory Visualization graph shows real residency. Above that, you get the static GPU path. Change model, dtype, or attention and it hard-unloads the old bundle first, so a settings change that looks like a freeze is actually the node freeing tensors.

    Installing it

    Via ComfyUI Manager, search ZONOS2 TTS, or install straight from the pack's repo. From ComfyUI/custom_nodes:

    git clone https://github.com/Saganaki22/Zonos2_TTS-ComfyUI.git
    ../venv/bin/python Zonos2_TTS-ComfyUI/install.py
    

    Then restart ComfyUI. The installer only adds lightweight deps (accelerate, huggingface-hub, safetensors, tqdm) and leaves torch/torchaudio alone. The one dependency you do have to watch: this pack needs Transformers 5.0–5.12 (tested baseline 5.3.0) and won't work on the 4.x most ComfyUI installs still pin. install.py will tell you if you're out of range, but it won't upgrade Transformers for you - that's your job.

    Common issues

    • FP8 reports an unsupported format. Update the pack and fully restart ComfyUI. Version 0.1.7 rejects the retired all-layer FP8 layout.
    • FlashAttention unavailable. Use auto or SDPA; auto handles the fallback.
    • CUDA out of memory. Switch to the FP8 preset, unload other models, or lower max_new_tokens in the generation node. BF16 plus the DAC sits around 14.7 GiB before you even start generating.

    If you don't have room for the full BF16 beast, reach for the FP8 preset - it's the difference between running this and watching it OOM.

    CategoryZONOS2 TTS

    Inputs (4)

    NameTypeDefaultDescription
    modelCOMBOCheckpoint in ComfyUI/models/zonos2. The BF16 and mixed FP8 presets download from their own Hugging Face repositories. Mixed FP8 is detected from metadata and uses FP8 only for MoE expert gate/up weights.
    dtypeCOMBOautoRuntime weight dtype. Auto preserves a standard checkpoint's dtype and uses BF16 compute for mixed FP8. Mixed FP8 accepts auto or bf16, not fp16. Changing this setting hard-unloads the previous bundle.
    attentionCOMBOautoAttention backend. Auto selects FlashAttention on compatible CUDA BF16/FP16 systems and otherwise uses PyTorch SDPA. Changing this setting hard-unloads the previous bundle.
    download_if_missingBOOLEANtrueWhen enabled, independently download only missing assets from the selected preset's Hugging Face repository. An existing DAC or speaker encoder is reused, while a missing selected checkpoint is still downloaded. When disabled, every required asset must already exist under ComfyUI/models/zonos2.

    Outputs (1)

    NameTypeDescription
    zonos2_modelZONOS2_MODELLoaded ZONOS2 model bundle containing the native language model and DAC decoder, managed by ComfyUI/AIMDO.