Omnivoice TTS (Auto)
The 3.4×-faster OmniVoice TTS node that needs no API key
- audio
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 (triton ≈ base); 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 onhybridunless you have a reason not to.language-auto,ko,en,zh.autohands 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; leavek2-fsa/OmniVoice,fp16,cudaalone 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).
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | 안녕하세요, OmniVoice Triton TTS 테스트입니다. | — |
| runner_mode | COMBO | hybrid | 4 options: base, triton, faster, hybrid |
| num_stepopt | INT | 324–64 | — |
| guidance_scaleopt | FLOAT | 2.00–10 | — |
| class_temperatureopt | FLOAT | 0.000–2 | — |
| languageopt | COMBO | auto | 4 options: auto, ko, en, zh |
| model_idopt | STRING | k2-fsa/OmniVoice | — |
| dtypeopt | COMBO | fp16 | 3 options: fp16, bf16, fp32 |
| deviceopt | COMBO | cuda | 2 options: cuda, cpu |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |