Nodes/ComfyUI-OmniVoice-TTS/OmniVoice Longform TTS
ComfyUI Node

OmniVoice Longform TTS

Longform TTS with 600 languages and no API key — this is the pack's all-rounder

By Saganaki22·Created 5 months ago·Updated 3 months ago· 537
OmniVoice Longform TTS
  • ref_audio
  • whisper_model
  • audio
model
textHello! This is a test of OmniVoice text to speech synthesis.
ref_text
steps32
guidance_scale2.0
t_shift0.10
speed1.0
duration0.0
deviceauto
dtypeauto
attentionauto
seed0
words_per_chunk100
position_temperature5.0
class_temperature0.0
layer_penalty_factor5.0
denoisetrue
preprocess_prompttrue
postprocess_outputtrue
keep_model_loadedtrue
instruct

If you install exactly one node from the OmniVoice pack, make it this one. OmniVoiceLongformTTS is the do-everything text-to-speech node: throw a whole paragraph - or a whole script - at it and it chunk the text at sentence boundaries, synthesize each piece, and hand you back one clean AUDIO track. Plug in a reference clip and it turns into a voice cloner. Leave the reference disconnected and it just picks a voice for you. No API, no key, fully local, and it claims 600+ languages - which is a much bigger deal than it sounds when most open TTS is English-first.

The engine underneath is OmniVoice by k2-fsa: a diffusion language model built on a Qwen3 backbone (the README is refreshingly honest about that in its attention-backend section) that generates speech token-by-token rather than in one shot. That's what makes it both fast - RTF down around 0.025, meaning 40x real-time - and multilingual. It landed in April 2026 to a genuinely split reception: half the thread loved it ("the model is great and fast"), the other half compared it to VibeVoice or Chatterbox and shrugged. My take: it's the best "one pack, many languages, no training" option in ComfyUI right now, and the longform node is the cleanest way to exercise it.

The input list is long, but a beginner only needs a handful. model is a dropdown - OmniVoice (full fp32, ~4GB) or OmniVoice-bf16 (~2GB), both auto-download to ComfyUI/models/omnivoice/ on first run. text is your script; it supports inline non-verbal tags like [laughter], [sigh], [question-en], which are nice when they work - fair warning from the community: they're hit or miss, and sometimes the model reads them aloud or ignores them entirely. words_per_chunk (default 100) is the chunking knob; 0 disables it. ref_audio and ref_text are optional - connect a 3–15 second clip and it becomes a voice-clone job; leave ref_text empty and Whisper transcribes the clip for you. instruct lets you force dialect and style, but only from a fixed list (male, indian accent, whisper, and a bunch of Chinese dialects like 河南话), so don't free-type there.

The sampler-ish knobs are shared across every OmniVoice node: steps (16 = fast, 32 = balanced, 64 = best), guidance_scale (2.0 default), speed, and the three temperature/penalty knobs you can safely ignore on day one. keep_model_loaded stays on - it offloads the model to CPU between runs rather than fully unloading. The output is a single audio (AUDIO) that wires straight into a save-audio node, or into the next stage of a talking-head pipeline if you're building a lip-sync workflow.

Install is ComfyUI Manager - search "OmniVoice" - or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Saganaki22/ComfyUI-OmniVoice-TTS.git
cd ComfyUI-OmniVoice-TTS
python install.py

One real gotcha, and the pack's README is upfront about it: the omnivoice pip package pins torch==2.8.*, which can downgrade your PyTorch to CPU-only and kill ComfyUI's GPU. The installer gets around it with --no-deps, but if your PyTorch ever goes weird, check the pack's pytorch_compatibility_matrix.md. The other classic failure: only the Whisper Loader node shows up and the TTS nodes are missing - that's omnivoice failing to import, usually because transformers is too old (pip install "transformers>=5.3.0" plus soxr), followed by a full ComfyUI restart. Expect roughly 5GB VRAM with the bf16 model and cloning enabled, per community measurements.

CategoryOmniVoice

Inputs (23)

NameTypeDefaultDescription
modelCOMBOOmniVoice model checkpoint. Models are stored in ComfyUI/models/omnivoice/
textSTRINGHello! This is a test of OmniVoice text to speech synthesis.Text to synthesize. Supports inline non-verbal tags like [laughter], [sigh], [sniff], [question-en], etc. Long text will be automatically chunked at sentence boundaries.
ref_textSTRINGTranscript of the reference audio. Leave empty to auto-transcribe with Whisper. Only used if 'ref_audio' is connected.
stepsINT324–64Number of diffusion steps. 16 = faster, 32 = balanced, 64 = best quality.
guidance_scaleFLOAT2.00–10Classifier-free guidance scale. Higher = more aligned with text.
t_shiftFLOAT0.100–1Time-step shift for noise schedule. Smaller = emphasis on earlier steps.
speedFLOAT1.00.5–2Speaking speed factor. >1.0 = faster, <1.0 = slower.
durationFLOAT0.00–60Fixed output duration in seconds. 0 = automatic (uses speed). Overrides speed if set.
deviceCOMBOautoCompute device. 'auto' picks CUDA > MPS > XPU > CPU.
dtypeCOMBOautoModel precision. 'auto' picks bf16 for CUDA (Ampere+) / XPU, fp16 for older CUDA/MPS, fp32 for CPU.
attentionCOMBOautoAttention implementation. 'auto' uses model default (eager). 'sage_attention' uses SageAttention CUDA kernels (requires SM80+ GPU).
seedINT00–2147483647Random seed. 0 = random.
words_per_chunkINT1000–500Words per chunk for long text. 0 = no chunking. Chunks split at sentence boundaries, not mid-word.
position_temperatureFLOAT5.00–20Temperature for mask-position selection. 0 = greedy, higher = more random.
class_temperatureFLOAT0.00–5Temperature for token sampling. 0 = greedy, higher = more random.
layer_penalty_factorFLOAT5.00–20Penalty on deeper codebook layers, encouraging lower layers to unmask first.
denoiseBOOLEANtruePrepend denoise token to input for cleaner output.
preprocess_promptBOOLEANtruePreprocess voice-clone prompt audio (remove silences, add punctuation).
postprocess_outputBOOLEANtruePost-process generated audio (remove long silences).
keep_model_loadedBOOLEANtrueKeep model loaded between runs. Model is automatically offloaded to CPU after generation to free VRAM, then resumed to GPU on the next run.
instructSTRINGDialect/style instruction from the model's supported values. English: american/british/australian/canadian/chinese/indian/japanese/korean/portuguese/russian accent, male/female, child/young adult/teenager/middle-aged/elderly, very low pitch/low pitch/moderate pitch/high pitch/very high pitch, whisper. Chinese: 四川话/东北话/陕西话/河南话/云南话/贵州话/甘肃话/宁夏话/石家庄话/济南话/青岛话/桂林话, 男/女, 儿童/少年/青年/中年/老年, 极低音调/低音调/中音调/高音调/极高音调, 耳语. Use comma-separated (English) or full-width comma (Chinese). Applied to every chunk. Leave empty for default.
ref_audiooptAUDIOOptional reference audio for voice cloning. 3-15 seconds of clear speech works best. If not connected, uses automatic voice selection.
whisper_modeloptWHISPER_ASROptional pre-loaded Whisper ASR model for auto-transcription. Connect from OmniVoice Whisper Loader to avoid re-downloading.

Outputs (1)

NameTypeDescription
audioAUDIO