Nodes/FL Voxtral TTS/FL Voxtral TTS Model Loader
ComfyUI Node

FL Voxtral TTS Model Loader

Loading Mistral's Voxtral TTS into ComfyUI

By filliptm·Created 5 months ago·Updated 8 days ago· 12
FL Voxtral TTS Model Loader
    • model
    deviceauto
    dtypebfloat16
    force_reloadfalse

    Every TTS workflow in this pack starts here, because this is where the heavy lifting happens. FL Voxtral TTS Model Loader doesn't look like much - three widgets and one output - but it's the node that downloads Mistral's Voxtral-4B weights and assembles the whole speech pipeline in memory. It's also the reason your first run of this pack feels like it's hung. It isn't. It's pulling an 8 GB checkpoint off HuggingFace.

    What it does

    On first use, the node downloads the mistralai/Voxtral-4B-TTS-2603 repo - roughly 8 GB of weights plus the tokenizer and 20 small voice-embedding files - into ComfyUI/models/tts/VoxtralTTS/Voxtral-4B-TTS-2603/. Then it loads four sub-models: the LLM backbone (a Ministral-3 base), a flow-matching acoustic transformer, an audio codec decoder, and the tokenizer. The source actually renames Mistral's checkpoint keys to match its own module layout as it loads, which is the sort of fiddly detail that usually means "this will break after an update" - so far it holds together.

    Here's the part people miss: the loaded pipeline is cached in RAM, keyed by device + dtype. Run it once, and every later load in the same session is instant. Change device or dtype and it reloads, because that's a different cache entry. There's also a consolidated.safetensors marker file that tells it the download is complete, so a half-finished download gets picked up and finished rather than restarted.

    The three inputs

    That's all there is, and only the first two matter on a normal day:

    • device - auto (default) picks CUDA → MPS → CPU in that order. If you know your setup, just pick it.
    • dtype - bfloat16 (default), float16, or float32. The weights ship in BF16; keep the default unless you have a reason. Note: on MPS the code silently falls back to float16, because Apple's bf16 support is spotty. That's intentional, not a bug.
    • force_reload - a boolean you will almost never touch. Flip it if you suspect a corrupted cache and want to force a clean re-download and reload.

    The single output, model (type VOXTRAL_MODEL), plugs into the model input of FL Voxtral TTS Generate. There's nothing else to wire - no CLIP, no conditioning, none of the image-side machinery. That's the whole point: two nodes, one wire, text in, audio out.

    Installing it

    It ships in the same pack as the Generate node, so one install covers both. ComfyUI Manager: search "FL Voxtral TTS" and hit install. Or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/filliptm/ComfyUI-FL-VoxtralTTS.git
    cd ComfyUI-FL-VoxtralTTS
    pip install -r requirements.txt
    

    Then restart. Dependencies are modest and ComfyUI-friendly: torch, torchaudio, safetensors, huggingface_hub, soundfile, numpy, and mistral_common (Mistral's own tokenizer/package). Nothing exotic.

    The honest gotchas

    • RAM and VRAM are real requirements. The README says 16 GB RAM minimum and 12 GB+ VRAM recommended. The 8 GB BF16 weights plus activations will not fit gracefully on a small card. CPU runs, but a 4B model on CPU is a patience test.
    • The first load is a download, not a hang. Watch the console for the "Downloading..." line and the progress bar ComfyUI shows. Restarting mid-download just makes the next attempt resume.
    • It's not portable. Because the cache key includes device and dtype, you can't load once on CUDA and expect the same RAM to serve a CPU pass later in the session - flip the device and you eat the reload.

    Start with auto + bfloat16, give the first run its 15 minutes, and the rest of the pack is genuinely painless. The tax is paid once.

    CategoryFL/TTS

    Inputs (3)

    NameTypeDefaultDescription
    deviceCOMBOauto4 options: auto, cuda, mps, cpu
    dtypeCOMBObfloat163 options: bfloat16, float16, float32
    force_reloadBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    modelVOXTRAL_MODEL