OmniVoice Voice Design TTS
Design a voice from a text description — no reference clip required
- audio
Most TTS gives you two options: use the default narrator voice, or clone a real one. OmniVoiceVoiceDesignTTS is the third door - invent a voice that belongs to nobody, from a text description. Type female, low pitch, british accent and it synthesizes a brand-new speaker with those attributes. No reference audio, no Whisper, no copyright-shaped questions about whose voice you're using. For character work - a podcast host, a narrator with a specific energy, a fictional character in a scene - this is genuinely the nicest node in the pack, because it's the one that needs the least setup and the least cleanup.
Mechanically it's the same OmniVoice diffusion language model as the rest of the pack, just driven differently. Instead of conditioning generation on encoded voice tokens from a reference clip (the clone path), it conditions on a text description of the voice. The whole skill lives in the voice_instruct string, and it's worth knowing the exact vocabulary, because the model validates against a fixed list and silently (or not so silently) underdelivers on anything else. Valid attributes: gender (male/female), age (child, young adult, teenager, middle-aged, elderly), pitch (very low through very high), style (whisper), and a set of accents - american, british, australian, canadian, chinese, indian, japanese, korean, portuguese, russian, plus a dozen Chinese dialects like 河南话. Comma-separate them: "female, young adult, high pitch, whisper". Don't mix English and Chinese values in one string, and keep in mind that unlike the other nodes' instruct field, voice_instruct is defining the voice, not adjusting the delivery of a cloned one - the README calls that distinction out explicitly.
The rest of the inputs are the pack's standard generation kit: model (OmniVoice fp32 ~4GB or OmniVoice-bf16 ~2GB, both auto-download to ComfyUI/models/omnivoice/), text (what the designed voice says; supports [laughter]/[sigh]-style inline tags), steps (32 default, 16 faster, 64 best), guidance_scale (2.0), speed, and the temperature knobs you can leave alone. keep_model_loaded stays on by default and offloads to CPU between runs. Output is a single audio (AUDIO) that you save or feed downstream - pair it with an audio-driven avatar if you want a consistent, fictional talking head that doesn't belong to any real person.
Setup is the pack's standard story: search "OmniVoice" in ComfyUI Manager, or git clone and run python install.py. Same shared caveats apply - let install.py handle the omnivoice package with --no-deps so its torch==2.8.* pin can't downgrade your PyTorch to CPU-only, and if the node's missing at startup it's almost always the transformers/soxr version issue the pack's troubleshooting doc walks through. A fair expectation check, though: designed voices are a synthetic-sounding middle ground. It's never going to sound like a specific real person - that's the point - and community reports suggest the clone nodes get closer to "natural" than the design node does. Use it when you want a plausible new voice fast, not a perfect one.
Inputs (18)
| 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 design with OmniVoice. | Text to synthesize in the designed voice. Supports inline non-verbal tags like [laughter], [sigh], etc. |
| voice_instruct | STRING | female, low pitch, british accent | Voice attributes (comma-separated): gender (male/female), age (child/young/elderly), pitch (very low/low/medium/high/very high), style (whisper), accent (american/british/australian/sichuan/shaanxi/etc.). Example: 'female, low pitch, british accent' |
| 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. 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. |
| 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. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |