ComfyUI custom node for the VibeVoice TTS. Expressive, long-form, multi-speaker conversational audio
596
stars
62
commits
Python
primary language
Sep 25, 2025
updated
A custom node for ComfyUI that integrates Microsoft's VibeVoice, a frontier model for generating expressive, long-form, multi-speaker conversational audio.
Report Bug
·
Request Feature
VibeVoice is a novel framework by Microsoft for generating expressive, long-form, multi-speaker conversational audio. It excels at creating natural-sounding dialogue, podcasts, and more, with consistent voices for up to 4 speakers.
The custom node handles everything from model downloading and memory management to audio processing, allowing you to generate high-quality speech directly from a text script and reference audio files.
✨ Key Features:
.wav, .mp3) as a reference for a speaker's voice.[1] tags or the classic Speaker 1: format to write your dialogue.eager, sdpa, flash_attention_2, and the high-performance sage attention for fine-tuned control over speed and compatibility.The easiest way to install is through the ComfyUI Manager:
Manager -> Install Custom Nodes.ComfyUI-VibeVoice and click "Install".Alternatively, to install manually:
Clone the Repository:
Navigate to your ComfyUI/custom_nodes/ directory and clone this repository:
git clone https://github.com/wildminder/ComfyUI-VibeVoice.git
Install Dependencies:
Open a terminal or command prompt, navigate into the cloned directory, and install the required Python packages. For quantization support, you must install bitsandbytes.
cd ComfyUI-VibeVoice
pip install -r requirements.txt
Optional: Install SageAttention
To enable the sage attention mode, you must install the sageattention library. For Windows users, a pre-compiled wheel is available at AI-windows-whl.
Note: This is only required if you intend to use the
sageattention mode.
Start/Restart ComfyUI:
Launch ComfyUI. The "VibeVoice TTS" node will appear under the audio/tts category. The first time you use the node, it will automatically download the selected model to your ComfyUI/models/tts/VibeVoice/ folder.
| Model | Context Length | Generation Length | Weight |
|---|---|---|---|
| VibeVoice-1.5B | 64K | ~90 min | HF link |
| VibeVoice-Large | 32K | ~45 min | HF link |
The node is designed for maximum flexibility within your ComfyUI workflow.
VibeVoice TTS node to your graph. Use ComfyUI's built-in Load Audio node to load your reference voice files.AUDIO output from each Load Audio node to the corresponding speaker_*_voice input.text input, write your dialogue using one of the supported formats.Tip: For a complete workflow, you can drag the example image from the
example_workflowsfolder onto your ComfyUI canvas.
You can assign lines to speakers in two ways. Both are treated identically.
[1] This is the first speaker.Speaker 1: This is the first speaker.You can also add an optional colon to the modern format (e.g., [1]: ...). The node handles all variations consistently.
This is a powerful feature that lets you mix cloned voices and generated (zero-shot) voices.
Load Audio node to the speaker's input (e.g., speaker_1_voice).Example Hybrid Script:
[1] This line will use the audio from speaker_1_voice.
[2] This line will have a new, unique voice generated for it.
[1] I'm back with my cloned voice.
In this example, you would only connect an audio source to speaker_1_voice.
model_name: Select the VibeVoice model to use (1.5B or Large).text: The conversational script. See "Scripting and Voice Modes" above for formatting.quantize_llm_4bit: Enable to run the LLM component in 4-bit (NF4) mode, dramatically reducing VRAM usage.attention_mode: Select the attention implementation: eager (safest), sdpa (balanced), flash_attention_2 (fastest), or sage (quantized high-performance).cfg_scale: Controls how strongly the model adheres to the reference voice's timbre. Higher values are stricter. Recommended: 1.3.inference_steps: Number of diffusion steps for audio generation. Recommended: 10.seed: A seed for reproducibility. Set to 0 for a random seed on each run.do_sample, temperature, top_p, top_k: Standard sampling parameters for controlling the creativity and determinism of the speech generation.force_offload: Forces the model to be completely offloaded from VRAM after generation.This node features a sophisticated system for managing performance, memory, and stability.
| Quantize LLM | Attention Mode | Behavior / Notes | Relative VRAM |
|---|---|---|---|
| OFF | eager | Full Precision. Most compatible baseline. | High |
| OFF | sdpa | Full Precision. Recommended for balanced performance. | High |
| OFF | flash_attention_2 | Full Precision. High performance on compatible GPUs. | High |
| OFF | sage | Full Precision. Uses high-performance mixed-precision kernels. | High |
| ON | eager | Falls back to sdpa with bfloat16 compute. Warns user. | Low |
| ON | sdpa | Recommended for memory savings. Uses bfloat16 compute. | Low |
| ON | flash_attention_2 | Falls back to sdpa with bfloat16 compute. Warns user. | Low |
| ON | sage | Recommended for stability. Uses fp32 compute to ensure numerical stability with quantization, resulting in slightly higher VRAM usage. | Medium |
[1], [1]:, and Speaker 1:) to produce identical, high-quality results, removing all previous inconsistencies.sageattention library for a high-performance, mixed-precision attention option.flash_attention_2) by gracefully falling back to a stable alternative (sdpa) and notifying the user.Force Offload and multi-speaker generation on newer Transformers versions.VibeVoice-Large) is generally more stable.This project is distributed under the MIT License. See LICENSE.txt for more information. The VibeVoice model and its components are subject to the licenses provided by Microsoft. Please use responsibly.
Python
100.0%
ComfyUI custom node for the VibeVoice TTS. Expressive, long-form, multi-speaker conversational audio
596
stars
62
commits
Python
primary language
Sep 25, 2025
updated
A custom node for ComfyUI that integrates Microsoft's VibeVoice, a frontier model for generating expressive, long-form, multi-speaker conversational audio.
Report Bug
·
Request Feature
VibeVoice is a novel framework by Microsoft for generating expressive, long-form, multi-speaker conversational audio. It excels at creating natural-sounding dialogue, podcasts, and more, with consistent voices for up to 4 speakers.
The custom node handles everything from model downloading and memory management to audio processing, allowing you to generate high-quality speech directly from a text script and reference audio files.
✨ Key Features:
.wav, .mp3) as a reference for a speaker's voice.[1] tags or the classic Speaker 1: format to write your dialogue.eager, sdpa, flash_attention_2, and the high-performance sage attention for fine-tuned control over speed and compatibility.The easiest way to install is through the ComfyUI Manager:
Manager -> Install Custom Nodes.ComfyUI-VibeVoice and click "Install".Alternatively, to install manually:
Clone the Repository:
Navigate to your ComfyUI/custom_nodes/ directory and clone this repository:
git clone https://github.com/wildminder/ComfyUI-VibeVoice.git
Install Dependencies:
Open a terminal or command prompt, navigate into the cloned directory, and install the required Python packages. For quantization support, you must install bitsandbytes.
cd ComfyUI-VibeVoice
pip install -r requirements.txt
Optional: Install SageAttention
To enable the sage attention mode, you must install the sageattention library. For Windows users, a pre-compiled wheel is available at AI-windows-whl.
Note: This is only required if you intend to use the
sageattention mode.
Start/Restart ComfyUI:
Launch ComfyUI. The "VibeVoice TTS" node will appear under the audio/tts category. The first time you use the node, it will automatically download the selected model to your ComfyUI/models/tts/VibeVoice/ folder.
| Model | Context Length | Generation Length | Weight |
|---|---|---|---|
| VibeVoice-1.5B | 64K | ~90 min | HF link |
| VibeVoice-Large | 32K | ~45 min | HF link |
The node is designed for maximum flexibility within your ComfyUI workflow.
VibeVoice TTS node to your graph. Use ComfyUI's built-in Load Audio node to load your reference voice files.AUDIO output from each Load Audio node to the corresponding speaker_*_voice input.text input, write your dialogue using one of the supported formats.Tip: For a complete workflow, you can drag the example image from the
example_workflowsfolder onto your ComfyUI canvas.
You can assign lines to speakers in two ways. Both are treated identically.
[1] This is the first speaker.Speaker 1: This is the first speaker.You can also add an optional colon to the modern format (e.g., [1]: ...). The node handles all variations consistently.
This is a powerful feature that lets you mix cloned voices and generated (zero-shot) voices.
Load Audio node to the speaker's input (e.g., speaker_1_voice).Example Hybrid Script:
[1] This line will use the audio from speaker_1_voice.
[2] This line will have a new, unique voice generated for it.
[1] I'm back with my cloned voice.
In this example, you would only connect an audio source to speaker_1_voice.
model_name: Select the VibeVoice model to use (1.5B or Large).text: The conversational script. See "Scripting and Voice Modes" above for formatting.quantize_llm_4bit: Enable to run the LLM component in 4-bit (NF4) mode, dramatically reducing VRAM usage.attention_mode: Select the attention implementation: eager (safest), sdpa (balanced), flash_attention_2 (fastest), or sage (quantized high-performance).cfg_scale: Controls how strongly the model adheres to the reference voice's timbre. Higher values are stricter. Recommended: 1.3.inference_steps: Number of diffusion steps for audio generation. Recommended: 10.seed: A seed for reproducibility. Set to 0 for a random seed on each run.do_sample, temperature, top_p, top_k: Standard sampling parameters for controlling the creativity and determinism of the speech generation.force_offload: Forces the model to be completely offloaded from VRAM after generation.This node features a sophisticated system for managing performance, memory, and stability.
| Quantize LLM | Attention Mode | Behavior / Notes | Relative VRAM |
|---|---|---|---|
| OFF | eager | Full Precision. Most compatible baseline. | High |
| OFF | sdpa | Full Precision. Recommended for balanced performance. | High |
| OFF | flash_attention_2 | Full Precision. High performance on compatible GPUs. | High |
| OFF | sage | Full Precision. Uses high-performance mixed-precision kernels. | High |
| ON | eager | Falls back to sdpa with bfloat16 compute. Warns user. | Low |
| ON | sdpa | Recommended for memory savings. Uses bfloat16 compute. | Low |
| ON | flash_attention_2 | Falls back to sdpa with bfloat16 compute. Warns user. | Low |
| ON | sage | Recommended for stability. Uses fp32 compute to ensure numerical stability with quantization, resulting in slightly higher VRAM usage. | Medium |
[1], [1]:, and Speaker 1:) to produce identical, high-quality results, removing all previous inconsistencies.sageattention library for a high-performance, mixed-precision attention option.flash_attention_2) by gracefully falling back to a stable alternative (sdpa) and notifying the user.Force Offload and multi-speaker generation on newer Transformers versions.VibeVoice-Large) is generally more stable.This project is distributed under the MIT License. See LICENSE.txt for more information. The VibeVoice model and its components are subject to the licenses provided by Microsoft. Please use responsibly.
Python
100.0%