🗣️ VibeVoice TTS (Realtime 0.5B)
Microsoft's fast 0.5B, preset voices only
- vibevoice_model
- voice_preset_input
- audio
Microsoft's VibeVoice is a legitimately impressive open TTS - a next-token diffusion model that generates expressive, long-form, multi-speaker audio, released under MIT in 2025. This node is the smallest and fastest member of that family: the Realtime 0.5B, a streaming model built for low latency. Here's the catch that trips everyone up: the 0.5B version does not do zero-shot voice cloning. It speaks only in precomputed voice presets (.pt files like en-Carter, en-Emma, Japanese, Korean). You don't bring your own voice to this party - you pick one off the shelf. The pack's own README is uncharacteristically blunt that even the preset-maker node is too unstable to recommend, so don't fight it: use the official presets.
What it is (and isn't)
The Realtime 0.5B is the "instant, low-latency, multilingual" option. It runs in BF16, has no warm-up compile (the README contrasts it with CosyVoice's ~1 minute first-run build), auto-detects language, and covers more languages than the bigger VibeVoice siblings - including Japanese and Korean, which the big models don't do. It is not the clone tool and it is not the highest-fidelity option; that's the 1.5B/7B standard node. This is the conversational, rapid-fire one.
The inputs
- vibevoice_model - a
VIBEVOICE_MODELfrom the pack's VibeVoice loader. - voice_preset - mandatory. This is the trap: with the 0.5B you must select a preset, and the node raises an error if you don't. Presets live in
ComfyUI/models/vibevoice/voices/streaming_model/*.pt. - text - what it says.
- The sampler panel:
ddpm_steps(20),cfg_scale(1.3),temperature(0.8),top_k,top_p,seed(-1 = random),do_sample(autodefault), andspeed(0.5–2.0). - speed is a small trap of its own: the realtime node implements it with a plain resample (per the source), so values other than 1.0 shift pitch along with tempo. The Standard node uses system
soxfor true pitch-preserving time-stretch; this one doesn't. Keep speed at 1.0 unless you want chipmunks. - voice_preset_input (optional) - a connected
VOICE_PRESETthat overrides the dropdown, for when you build preset-choosing automation.
Output: audio (AUDIO) at 24000Hz.
Install - the model hunt
cd ComfyUI/custom_nodes
git clone https://github.com/havvk/ComfyUI_AIIA.git
Then the manual part: the 0.5B weights plus its official preset files, and the model needs a Qwen2.5-0.5B tokenizer dropped in alongside (the README gives exact wget commands). The essential bit:
mkdir -p models/vibevoice/voices/streaming_model
cd models/vibevoice/voices/streaming_model
wget -N --no-check-certificate https://github.com/microsoft/VibeVoice/raw/main/demo/voices/streaming_model/en-Carter_man.pt
wget -N --no-check-certificate https://github.com/microsoft/VibeVoice/raw/main/demo/voices/streaming_model/en-Emma_woman.pt
Note the README flags that official Chinese .pt presets don't exist yet - English and Japanese/Korean are the safe bets.
Gotchas
- No reference_audio support. If you wire one in, nothing happens. The Standard VibeVoice TTS node is the clone path.
- Missing preset = hard error. The node tells you to pick a valid preset, and it means it.
- Speed ≠ 1.0 changes pitch here. Use it sparingly.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| vibevoice_model | VIBEVOICE_MODEL | — | |
| text | STRING | Hello, this is a test of VibeVoice Realtime. | — |
| voice_preset | COMBO | 1 options: None | |
| ddpm_steps | INT | 2010–100 | — |
| speed | FLOAT | 1.00.5–2 | — |
| normalize_text | BOOLEAN | true | — |
| do_sample | COMBO | auto | 2 options: auto, false |
| temperature | FLOAT | 0.800.1–2 | — |
| top_k | INT | 200–100 | — |
| top_p | FLOAT | 0.950–1 | — |
| cfg_scale | FLOAT | 1.31–10 | — |
| seed | INT | 0-1–2147483647 | Random seed for reproducible generation. -1 = random. |
| voice_preset_inputopt | VOICE_PRESET | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |