Nodes/OmniVoice-Comfy/OmniVoice TTS
ComfyUI Node

OmniVoice TTS

Clone a voice from a 10-second clip, no API key, ~5GB of VRAM

By komikndr·Created 6 months ago·Updated 5 months ago· 12
OmniVoice TTS
  • model
  • ref_audio
  • audio
textHello from OmniVoice.
languageEnglish
instruct
speed1.00
duration0.0
num_step28
cfg3.0
seed0
t_shift1.00
denoisefalse
preprocess_prompttrue
postprocess_outputtrue
ref_text

OmniVoice is the open TTS that people actually got excited about in 2026 - a diffusion-based voice model from k2-fsa that does zero-shot cloning in 600+ languages, on local hardware, and fast enough that the usual complaint is it's "lightning quick compared with VibeVoice" rather than slow. This node is the other half of the omnivoice_comfy pack: it takes the model object the OmniVoice Loader gives you and turns text into an audio clip, with or without a reference voice.

Wire it up like this: OmniVoice Loader → OmniVoice TTS → any audio output node (PreviewAudio, SaveAudio, a VHS video node if you're dubbing a clip). The output is a standard ComfyUI AUDIO object, so it feeds everything else normally.

The inputs that actually matter

The node has a long input list, but most of it is pre-tuned defaults you should leave alone. The ones you'll touch:

  • text - the words to speak. This is the target sentence, full stop.
  • language - defaults to English. OmniVoice genuinely covers hundreds of languages, so if you're going multilingual this is where you say so.
  • instruct - optional style direction ("male, australian accent, low pitch" per the placeholder). It shapes delivery and tone, not the words.
  • ref_audio + ref_text - the voice cloning pair. Feed a reference clip into ref_audio and put its transcript into ref_text. Both or neither: hand it audio without text and it throws Voice cloning requires ref_text - Whisper auto-transcription is deliberately disabled in this pack.

The rest - num_step (28), cfg (3.0), t_shift (1.0), denoise (off) - are the author's tuned baselines. They're exposed because someone might need them, but the defaults were chosen because they sounded best on this setup. Leave them until you have a reason not to. The genuinely useful extras are speed (0.25–4x, default 1.0) and duration (0 = let the model estimate from the text).

How cloning actually works

OmniVoice is a masked diffusion language model, so generation is iterative: it starts from audio-shaped noise over a masked token sequence and refines it over num_step passes, with cfg pulling it harder toward the conditioning and t_shift nudging the mask schedule. There's no training involved - zero-shot means it learns the voice's patterns from the reference clip on the spot. Community testing puts it around 5GB of VRAM with cloning active.

The one thing people get wrong: the reference clip's quality is the ceiling. A flat three-second clip gives you a flat clone, and users who've pushed it report that 10 seconds is the usable minimum while 30–60 seconds with emotional variation dramatically improves expressiveness. If your clone sounds robotic, make the reference longer and livelier before you touch the sliders.

The real troubleshooting list

  • "requires ref_text" - you passed audio without its transcript. It's the top user error.
  • Non-finite or empty audio - the node itself suggests the fixes: it already runs fp32 (that's the default), so try disabling postprocess_output or using a cleaner/longer reference clip. Sometimes a stale run just needs a fresh generation.
  • Install problems - this pack pins transformers==5.3.0, and the README's warning is in caps for a reason: it will not run on the 4.x many other packs force. pip list | grep transformer to check. This dependency war is the default failure mode of audio in ComfyUI, not a you problem.

One honest caveat: a few people find OmniVoice's emotion tags (the [laughter]-style markers from the upstream model) hit-or-miss, and opinions vary on how closely clones match the source. If the target is a dead-on impersonation of a very specific voice, treat this as "very good, sometimes uncanny," not magic.

Categoryaudio/tts/OmniVoice

Inputs (15)

NameTypeDefaultDescription
modelOMNIVOICE_MODEL
textSTRINGHello from OmniVoice.The actual words OmniVoice should generate as speech. For voice cloning, put the target sentence here and put the transcript of the reference clip into ref_text.
languageSTRINGEnglishLanguage name for the generated speech, for example English or Chinese. Leave at English unless you are intentionally switching languages.
instructSTRINGOptional speaking style or character direction. This affects delivery and tone, not the literal transcript.
speedFLOAT1.000.25–4Playback/speaking speed target. 1.0 is normal, lower is slower, higher is faster.
durationFLOAT0.00–300Optional target duration in seconds. Set to 0 to let OmniVoice estimate duration automatically from the text.
num_stepINT281–128Iterative generation steps. The node default is 28 as the current quality baseline; higher values are slower and may or may not help further depending on the prompt.
cfgFLOAT3.00–20Classifier-Free Guidance scale. The node default is 3.0 for the current tuned baseline; this pushes the result to follow the conditioning more strongly and can change timbre and articulation noticeably.
seedINT00–9223372036854776000Random seed for OmniVoice generation. With the current deterministic defaults this mainly matters if stochastic settings are re-enabled later, but it is exposed for reproducibility and future tuning.
t_shiftFLOAT1.000–2Mask-schedule shift used by OmniVoice's iterative decoding. The node default is 1.0 as the current tuned baseline for this custom node.
denoiseBOOLEANfalseAdds OmniVoice's denoise control token during generation. The node default is disabled because that is currently giving better audio on this setup.
preprocess_promptBOOLEANtruePreprocess the reference prompt before tokenization. This can trim long reference audio, remove silences, and normalize the prompt path for voice cloning.
postprocess_outputBOOLEANtruePostprocess the generated audio after decoding. This can remove long silences, normalize level behavior, and add fade/padding to avoid abrupt starts or ends.
ref_audiooptAUDIO
ref_textoptSTRINGRequired only for voice cloning. Enter the transcript of ref_audio, not the target text to generate.

Outputs (1)

NameTypeDescription
audioAUDIO