OmniVoice Voice Clone TTS
Clone a voice from a 10-second clip, in 600+ languages, entirely local
- ref_audio
- whisper_model
- audio
This is the node people actually come to this pack for. OmniVoiceVoiceCloneTTS takes a few seconds of someone talking and makes that voice say whatever you type - no fine-tuning, no training, no API. The KB essay on audio nails the context: local tools closed the cloning gap in 2025, and by 2026 OmniVoice is one of the go-to answers in the ComfyUI corner, especially when you need languages beyond English. People in the community recommend it as a daily driver for cloning ("that's my current go-to" on r/comfyui), and it's the pick when you're cloning voices that whisper models and English-first TTS ignore.
The mechanism is zero-shot voice cloning on a diffusion language model. Feed it a reference clip, and instead of training on it, the model encodes the clip's voice tokens at inference time and conditions generation on them - which is why a good reference matters more than anything else in this node. The community's hard-won lesson: a 3-second flat sample gives you a flat clone. If you want range - shouting, whispering, emotion - your reference audio needs to contain that range. People report 10 seconds being enough for a basic clone and 30–60 seconds of emotionally varied speech making a real difference for expressiveness. OmniVoice's emotional range is still narrow next to something like Chatterbox's explicit emotion dial, so don't expect a miracle from a monotone sample.
Wire-up is about as simple as cloning gets. ref_audio (required) is your sample - 3–15 seconds of clear speech, and the node resamples to 24kHz for you. ref_text is the transcript; leave it empty and Whisper transcribes it automatically, but providing it yourself measurably improves quality. That auto-transcription is exactly why the pack ships a Whisper Loader - connect its whisper_model output here to avoid re-downloading a Whisper model on every run. text is what the clone says, and like the other nodes it accepts inline non-verbal tags ([laughter], [sigh]…) with the same caveat that they're hit-or-miss. instruct optionally pushes the style of delivery - whisper, male, british accent, etc. - from the model's fixed list of values; free-text will be rejected. Then model picks OmniVoice (fp32, ~4GB) or OmniVoice-bf16 (~2GB), both auto-downloaded to ComfyUI/models/omnivoice/.
The generation knobs are shared across the pack: steps (32 default; 16 faster, 64 better), guidance_scale (2.0), speed, and the temperature/penalty trio you can ignore until you're chasing a specific artifact. keep_model_loaded (on by default) offloads to CPU between runs. The single output is audio (AUDIO) - save it with a Vorbis/WAV node, or feed it into a talking-head pipeline as the voice track.
Install is the pack-wide story: search "OmniVoice" in ComfyUI Manager, or clone and run python install.py. The notable traps are the same ones that bite every node here: the omnivoice pip package pins torch==2.8.* and can downgrade your PyTorch to CPU-only, so let install.py do its --no-deps dance and don't pip-install omnivoice yourself. If the TTS nodes are missing but the Whisper Loader shows, that's an import failure - usually a too-old transformers (needs 5.3+) or missing soxr. And one honest caveat from the launch thread: cloning is quality-dependent on the source, so if your first clone doesn't sound like the target, it's often the reference, not the node. Expect ~5GB VRAM with bf16.
Inputs (22)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | OmniVoice model checkpoint. Models are stored in ComfyUI/models/omnivoice/ | |
| text | STRING | Hello! This is a test of voice cloning with OmniVoice. | Text to synthesize in the cloned voice. Supports inline non-verbal tags like [laughter], [sigh], etc. |
| ref_audio | AUDIO | Reference audio to clone voice from. 3-15 seconds of clear speech works best. Will be resampled to 24kHz if needed. | |
| ref_text | STRING | Transcript of the reference audio. Leave empty to auto-transcribe with Whisper ASR. Providing the transcript improves quality. | |
| steps | INT | 324–64 | Number of diffusion steps. 16 = faster, 32 = balanced, 64 = best quality. |
| guidance_scale | FLOAT | 2.00–10 | Classifier-free guidance scale. Higher = more aligned with text. |
| t_shift | FLOAT | 0.100–1 | Time-step shift for noise schedule. Smaller = emphasis on earlier steps. |
| speed | FLOAT | 1.00.5–2 | Speaking speed factor. >1.0 = faster, <1.0 = slower. |
| duration | FLOAT | 0.00–60 | Fixed output duration in seconds. 0 = automatic (uses speed). Overrides speed if set. |
| device | COMBO | auto | Compute device. 'auto' picks CUDA > MPS > XPU > CPU. |
| dtype | COMBO | auto | Model precision. 'auto' picks bf16 for CUDA (Ampere+), fp16 for older CUDA/MPS, fp32 for CPU. |
| attention | COMBO | auto | Attention implementation. 'auto' uses model default (eager). 'sage_attention' uses SageAttention CUDA kernels (requires SM80+ GPU). |
| seed | INT | 00–2147483647 | Random seed. 0 = random. |
| position_temperature | FLOAT | 5.00–20 | Temperature for mask-position selection. 0 = greedy, higher = more random. |
| class_temperature | FLOAT | 0.00–5 | Temperature for token sampling. 0 = greedy, higher = more random. |
| layer_penalty_factor | FLOAT | 5.00–20 | Penalty on deeper codebook layers, encouraging lower layers to unmask first. |
| denoise | BOOLEAN | true | Prepend denoise token to input for cleaner output. |
| preprocess_prompt | BOOLEAN | true | Preprocess voice-clone prompt audio (remove silences, add punctuation). |
| postprocess_output | BOOLEAN | true | Post-process generated audio (remove long silences). |
| keep_model_loaded | BOOLEAN | true | Keep model loaded between runs. Model is automatically offloaded to CPU after generation. |
| instruct | STRING | Dialect/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). Leave empty for default. | |
| whisper_modelopt | WHISPER_ASR | Optional pre-loaded Whisper ASR model. Connect from OmniVoice Whisper Loader to avoid re-downloading on each run. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |