Nodes/ComfyUI_AIIA/🗣️ VibeVoice TTS (Realtime 0.5B)
ComfyUI Node

🗣️ VibeVoice TTS (Realtime 0.5B)

Microsoft's fast 0.5B, preset voices only

By havvk·Created about a year ago·Updated 6 months ago· 13
🗣️ VibeVoice TTS (Realtime 0.5B)
  • vibevoice_model
  • voice_preset_input
  • audio
textHello, this is a test of VibeVoice Realtime.
voice_preset
ddpm_steps20
speed1.0
normalize_texttrue
do_sampleauto
temperature0.80
top_k20
top_p0.95
cfg_scale1.3
seed0

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_MODEL from 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 (auto default), and speed (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 sox for 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_PRESET that 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.
CategoryAIIA/VibeVoice

Inputs (13)

NameTypeDefaultDescription
vibevoice_modelVIBEVOICE_MODEL
textSTRINGHello, this is a test of VibeVoice Realtime.
voice_presetCOMBO1 options: None
ddpm_stepsINT2010–100
speedFLOAT1.00.5–2
normalize_textBOOLEANtrue
do_sampleCOMBOauto2 options: auto, false
temperatureFLOAT0.800.1–2
top_kINT200–100
top_pFLOAT0.950–1
cfg_scaleFLOAT1.31–10
seedINT0-1–2147483647Random seed for reproducible generation. -1 = random.
voice_preset_inputoptVOICE_PRESET

Outputs (1)

NameTypeDescription
audioAUDIO