Nodes/Omnivoice Triton TTS/Omnivoice TTS (Auto)
ComfyUI Node

Omnivoice TTS (Auto)

The 3.4×-faster OmniVoice TTS node that needs no API key

By newgrit1004·Created 5 months ago·Updated 5 months ago· 5
Omnivoice TTS (Auto)
    • audio
    text안녕하세요, OmniVoice Triton TTS 테스트입니다.
    runner_modehybrid
    num_step32
    guidance_scale2.0
    class_temperature0.00
    languageauto
    model_idk2-fsa/OmniVoice
    dtypefp16
    devicecuda

    This is the "just give me a voice" node from the ComfyUI-Omnivoice-Triton pack - plain text in, AUDIO out, no API key, no ElevenLabs bill. The model underneath is OmniVoice (k2-fsa), the zero-shot multilingual TTS that landed on HuggingFace in spring 2026 with a genuinely unusual claim: 600+ languages from one diffusion-language-model backbone, with cloning and voice design built in. The pack's whole shtick is speed - the author (newgrit1004, who also shipped the sibling Qwen3-TTS and Z-Image Triton nodes) rewrote the slow ops as fused Triton kernels and added CUDA Graph capture, ending up roughly 3.4× faster than the stock runner at ~2GB peak VRAM.

    Why reach for it? If you're building a talking-head chain (voice → lip-sync), or you need narration in a language the English-first TTS models won't touch, this is the cheapest on-ramp. The audio story in ComfyUI is that TTS was never designed into the stack, so every model arrives as a bespoke node pack with its own dependency tangle. This one at least ships a protective install script - the README's framing is that your torch is never modified - which, given how many audio packs have silently nuked people's CUDA builds, is genuinely worth something.

    How it works

    OmniVoice is a non-autoregressive (NAR) diffusion TTS, which is why the kernel fusion is nearly free here: it refines the whole utterance in parallel, so small floating-point perturbations from fused kernels don't compound token-by-token the way they would in an autoregressive model. The author's own benchmark claims speaker similarity of 0.99 versus the unoptimised baseline - i.e., zero audible quality loss for the speedup.

    You don't think about any of that. The node's one interesting decision is runner_mode, defaulting to hybrid:

    | mode | what it does | ~latency (57-char text) | |---|---|---| | base | stock OmniVoice runner | 0.65 s | | triton | fused kernels only | 0.63 s | | faster | CUDA Graph capture only | 0.26 s | | hybrid | both - recommended | 0.19 s |

    Short inputs don't stress the attention path enough for Triton fusion alone to matter (tritonbase); the gap widens on longer text. faster and hybrid pay a one-off ~0.1–0.5s CUDA Graph capture on the first run per input shape, then replay. The runner itself is cached at module level by (mode, model_id, dtype, device), so re-runs skip model loading entirely.

    The inputs that matter

    • text (multiline) - what to say. Required; the default is a Korean test sentence.
    • runner_mode - leave it on hybrid unless you have a reason not to.
    • language - auto, ko, en, zh. auto hands the decision to the model. Korean is OmniVoice's home turf (it's a Kaldi/k2-fsa model), and it's genuinely multilingual - community reports are good across Spanish, Chinese, and more.
    • num_step (4–64, default 32) - iterative decoding steps. Lower = faster and rougher, this is your speed/quality dial.
    • guidance_scale (0–10, default 2.0) - classifier-free guidance. Higher = more text-aligned.
    • class_temperature (0–2, default 0) - sampling temperature; 0 is greedy/deterministic.
    • model_id, dtype, device - advanced; leave k2-fsa/OmniVoice, fp16, cuda alone unless you know better.

    Output: audio (AUDIO) - a ComfyUI audio dict at 24 kHz mono. Wire it straight into SaveAudio, or into a lip-sync/avatar stage downstream.

    Install

    Search "Omnivoice Triton TTS" in ComfyUI Manager, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/newgrit1004/ComfyUI-Omnivoice-Triton.git
    cd ComfyUI-Omnivoice-Triton
    python install.py
    

    requirements.txt is deliberately comments-only; run install.py, which pulls the deps with --no-deps so pip can't swap in a CPU-only torch. Requirements are real: Python ≥ 3.12, a CUDA 12.8+ torch build, and an Ampere/Ada/Hopper/Blackwell GPU. The model (k2-fsa/OmniVoice, ~2GB) downloads from HuggingFace on first run.

    Common issues

    The big one is non-negotiable: launch ComfyUI with --disable-cuda-malloc. ComfyUI's default cudaMallocAsync allocator fights transformers' parallel shard loading and CUDA Graph capture, which shows up as fake OOMs and hybrid-mode crashes.

    python ComfyUI/main.py --listen 0.0.0.0 --port 8188 --disable-cuda-malloc
    

    Other things people hit: the first run feels slow because of model download + CUDA Graph capture (that's normal, second run is the fast one); if you run on Python 3.11 the pack disables numba JIT to dodge a known librosa compile failure, but 3.12 is the supported path. And the usual audio-pack advice applies - if another node later breaks your torch, the README's recovery command is a CUDA-wheel reinstall (pip install --upgrade --force-reinstall torch torchaudio --index-url https://download.pytorch.org/whl/cu128).

    CategoryOmnivoice-Triton

    Inputs (9)

    NameTypeDefaultDescription
    textSTRING안녕하세요, OmniVoice Triton TTS 테스트입니다.
    runner_modeCOMBOhybrid4 options: base, triton, faster, hybrid
    num_stepoptINT324–64
    guidance_scaleoptFLOAT2.00–10
    class_temperatureoptFLOAT0.000–2
    languageoptCOMBOauto4 options: auto, ko, en, zh
    model_idoptSTRINGk2-fsa/OmniVoice
    dtypeoptCOMBOfp163 options: fp16, bf16, fp32
    deviceoptCOMBOcuda2 options: cuda, cpu

    Outputs (1)

    NameTypeDescription
    audioAUDIO