OmniVoice Generate
Clone a voice or invent one — OmniVoice Generate Audio
- model
- speakers
- ref_audio
- audio
This is the node that actually makes sound. OmniVoice Generate Audio takes the pipe from OmniVoice Load Model and your target text, and runs it through k2-fsa's OmniVoice - the local, zero-shot multilingual TTS that's been giving cloud services a run for their money. Same idea as a KSampler: the load node staged everything, this one does the sampling. Wire its audio output into PreviewAudio or a VHS save node and you're done.
How it works
OmniVoice is a diffusion language model, and the node picks your mode for you. If the pipe carries reference audio, you get voice cloning - your words, someone else's voice. If there's no reference, you get voice design: the four style dropdowns (style_gender, style_age, style_pitch, style_accent) get joined into a short instruction like "female, low pitch, british accent" and handed to the model. The gotcha is the fallback: leave every style on none and it defaults to a plain male voice, so don't expect a lottery - expect "male" until you tell it otherwise.
Everything else is diffusion sampling passed straight through: num_step (32 default, more steps = cleaner but slower), guidance_scale for classifier-free guidance, and deeper knobs like t_shift, layer_penalty_factor and the two temperature values that you can honestly ignore until you're chasing artifacts. seed makes runs reproducible, language can be left on auto and the model infers it from the text.
The inputs that matter
- text - what it says. That's the whole job.
- language -
autohandles English, Chinese, Japanese, Korean, French, Spanish, German, Portuguese, Russian, Arabic, and Hindi. Set it explicitly only if auto guesses wrong. - style_gender / style_age / style_pitch / style_accent - voice design only. "No ref audio only," per the author's own tooltips.
- num_step / guidance_scale - the two you'll actually touch. Bump steps if output sounds muddy.
- speed - 0.25× to 4×, handy for matching a video's pacing.
- use_duration / duration - flip the switch and the output is padded or trimmed to a target length. Off by default.
- postprocess_output - on by default; it trims silence and smooths the ends, so only disable it if you're chasing a specific artifact.
Outputs: audio (standard ComfyUI AUDIO, 24 kHz) and a status string that tells you the mode, seed, and sample count - nice for checking what actually happened in a big graph.
Installing it
Same story as the load node: ComfyUI Manager, search ComfyUI-OmniVoice_CRT, or clone into custom_nodes and run install_omnivoice_safe.bat on Windows (it installs omnivoice>=0.1.0 with --no-deps plus huggingface_hub). On Linux/Mac, pip install those by hand. First run downloads the OmniVoice model from Hugging Face into ComfyUI/models/omnivoice.
Where people get burned
Two hard errors right in the code: empty text raises, and a missing pipe raises - both with messages that tell you exactly what to fix. Real-world trouble is subtler. With short or muffled reference clips, OmniVoice tends to skip words or hallucinate, and community reports echo that; a clean few seconds of audio plus an accurate transcription override fixes most of it. The wrapper generates one utterance at a time - the README's "not implemented" list admits batch multi-utterance generation isn't there, so loop it or live with single shots. And expect a real VRAM footprint, roughly 5–6.5 GB while generating; offload_after_generate on the load node frees it afterwards. OmniVoice is fast for what it is - people measure it in the tens of times real-time on a 5090 - so the waiting is mostly the model load, not the speech.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | OMNIVOICE_MODEL | OmniVoice model loaded by the OmniVoice Model Loader node. | |
| text | STRING | Text to synthesize. Supports inline tags for expression and pronunciation: NON-VERBAL SOUNDS: [laughter] – insert a laugh [sigh] – insert a sigh QUESTION / CONFIRMATION: [question-en] – rising English question intonation [confirmation-en] – confirmation sound SURPRISE: [surprise-ah] [surprise-oh] [surprise-wa] [surprise-yo] DISSATISFACTION: [dissatisfaction-hnn] ENGLISH PRONUNCIATION (CMU phoneme override): You could probably still make [IH1 T] look good. CHINESE PRONUNCIATION (pinyin + tone number): 严重SHE2本了 EXAMPLE: [laughter] You really got me. I didn't see that coming at all. | |
| mode | COMBO | voice_cloning | voice_cloning – clone the voice from ref_audio (requires ref_audio) voice_design – describe a voice with the instruct field (requires instruct) auto_voice – model picks a voice automatically Ignored when a Speakers roster is connected. |
| speakersopt | OMNIVOICE_SPEAKERS | Connect an OmniVoice Speakers node to enable multi-speaker generation. When connected, ref_audio / instruct / mode are ignored and each paragraph is routed to its assigned speaker automatically. | |
| ref_audioopt | AUDIO | Reference audio clip to clone the voice from. Used in voice_cloning mode. | |
| ref_textopt | STRING | Transcription of ref_audio. Connect a Whisper (or other STT) node for best results. | |
| instructopt | STRING | Voice style description. Required for voice_design mode; optional in voice_cloning mode to attempt accent/style transfer on top of the cloned voice. Connect the OmniVoice Voice Design node for structured input. GENDER: male, female AGE: child, teenager, young adult, middle-aged, elderly PITCH: very low pitch, low pitch, moderate pitch, high pitch, very high pitch, whisper ACCENTS (only these are supported by the model): american accent, australian accent, british accent, canadian accent, chinese accent, indian accent, japanese accent, korean accent, portuguese accent, russian accent EXAMPLE: female, high pitch, british accent | |
| guidance_scaleopt | FLOAT | 2.00–20 | Classifier-free guidance scale. Higher = more faithful to the reference/instruct, but can over-saturate. 2.0 is a good default. |
| speedopt | FLOAT | 1.00.3–3 | Playback speed multiplier. 1.0 = normal, >1.0 = faster, <1.0 = slower. Below 0.3 produces noise and extreme VRAM usage. |
| num_stepopt | INT | 321–100 | Diffusion steps. 32 = default quality. 16 = faster, slightly lower quality. |
| seedopt | INT | 00–4294967295 | Random seed for the diffusion sampler. Set the same value across all Generate nodes in an audiobook pipeline to keep the voice consistent between paragraphs/chapters. 0 = random (different each run). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |