A comprehensive ComfyUI integration for Microsoft's VibeVoice text-to-speech model, enabling high-quality single and multi-speaker voice synthesis directly within your ComfyUI workflows.
Original vibevoice-7b works like this: 2 LLM passes (positive+negative) + diffusion based on these two passes.
7b-exl-8bit + no-llm-bf16 - 12.6GB
7b-exl-4bit + no-llm-bf16 - 9.5GB (realtime at 3090, 9.00 it/s)
7b-exl-4bit + no-llm-nf4 - 7.3GB (nf4 is 1.5 times slower)
1.5b-exl-8bit + no-llm-nf4 - 4.7GB
qll exl3 quants run the same speed. But 4bit is a little faster.
the nvidia 3060 is only 20% slower than the 3090.
flash-attention-2 It's difficult to compile under Windows, so here are the links for the compiled whl for flash-attention-2:
here: https://huggingface.co/lldacing/flash-attention-windows-wheel/tree/main or here: https://github.com/mjun0812/flash-attention-prebuild-wheels/releases
You can find out your version of Python, Torch, cuda in comfyui - menu - Help - about
Below, I'm using python 3.11, torch 2.6.0, and cuda126. For other versions, please refer to the links above (or compile yourself). For flash-attention, it's important to match the version of python, torch, and cuda. For exllama, the main requirement is that the version of python matches. If you can't find any suitable compiled versions of flash-attention, you can compile them yourself using the following guide: https://www.reddit.com/r/Oobabooga/comments/1jq3uj9/guide_getting_flash_attention_2_working_on/
exllamav3-v0.0.6 - choose whl based on your python version: https://github.com/mozer/exllamav3/releases/tag/v0.0.6
cd C:\DATA\SD\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\python_embeded
python.exe -m pip install https://huggingface.co/lldacing/flash-attention-windows-wheel/resolve/main/flash_attn-2.7.4%2Bcu126torch2.6.0cxx11abiFALSE-cp311-cp311-win_amd64.whl
# install my exllamav3 for Python 3.11.x (choose correct whl here from my repo, link above)
python.exe -m pip install https://github.com/Mozer/exllamav3/releases/download/v0.0.6/exllamav3-0.0.6+cu128.torch2.7.0-cp311-cp311-win_amd64.whl
python.exe -m pip install -U triton-windows<3.5
After that, install my nodes using the comfyui manager - install via git url:
https://github.com/mozer/comfyUI-vibevoice-exl3
Or via: cd ComfyUI/custom_nodes && git clone https://github.com/mozer/comfyUI-vibevoice-exl3
Restart comfyui.
Workflow with wav2lip (wav2lip is optional): https://github.com/Mozer/ComfyUI-VibeVoice-exl3/blob/main/examples/vibevoice_exl3_with_wav2lip.json You don't need to download the models manually. They are dowloaded automatically. But if you really want to, they're available here: https://huggingface.co/collections/tensorbanana/vibevoice-68cd1bac5766dc65e90380c1 If you're going to upload them manually, make sure to study the folder structure first (HF-downloader uses this method). example: /models/vibevoice/models--tensorbanana--vibevoice-1.5b-exl3-8bit/snapshots/badfbb16dd63a1a8e633ba6eb138a21303ed1325/model.safetensors
Loads text content from files in ComfyUI's input/output/temp directories.
Generates speech from text using a single voice.
text: Input text to convert to speechmodel: VibeVoice-1.5B or VibeVoice-7B-Previewattention_type: auto, eager, sdpa, or flash_attention_2 (default: auto)free_memory_after_generate: Free VRAM after generation (default: True)diffusion_steps: Number of denoising steps (5-100, default: 20)seed: Random seed for reproducibility (default: 42)cfg_scale: Classifier-free guidance (1.0-2.0, default: 1.3)use_sampling: Enable/disable deterministic generation (default: False)voice_to_clone: Audio input for voice cloningtemperature: Sampling temperature (0.1-2.0, default: 0.95)top_p: Nucleus sampling parameter (0.1-1.0, default: 0.95)Generates multi-speaker conversations with distinct voices.
[N]: notation where N is 1-4text: Input text with speaker labelsmodel: VibeVoice-1.5B or VibeVoice-7B-Previewattention_type: auto, eager, sdpa, or flash_attention_2 (default: auto)free_memory_after_generate: Free VRAM after generation (default: True)diffusion_steps: Number of denoising steps (5-100, default: 20)seed: Random seed for reproducibility (default: 42)cfg_scale: Classifier-free guidance (1.0-2.0, default: 1.3)use_sampling: Enable/disable deterministic generation (default: False)speaker1_voice to speaker4_voice: Audio inputs for voice cloningtemperature: Sampling temperature (0.1-2.0, default: 0.95)top_p: Nucleus sampling parameter (0.1-1.0, default: 0.95)Manually frees all loaded VibeVoice models from memory.
audio - Connect audio output to trigger memory cleanupaudio - Passes through the input audio unchanged[VibeVoice Node] → [Free Memory] → [Save Audio]For multi-speaker generation, format your text using the [N]: notation:
[1]: Hello, how are you today?
[2]: I'm doing great, thanks for asking!
[1]: That's wonderful to hear.
[3]: Hey everyone, mind if I join the conversation?
[2]: Not at all, welcome!
Important Notes:
[1]:, [2]:, [3]:, [4]: for speaker labelsModels are automatically downloaded on first use and cached in ComfyUI/models/vibevoice/.
use_sampling = Falseuse_sampling = TrueTo clone a voice:
voice_to_clone input (single speaker)speaker1_voice, speaker2_voice, etc. (multi-speaker)Requirements for voice samples:
Text Preparation:
Model Selection:
Seed Management:
Performance:
[N]: formatText: "Welcome to our presentation. Today we'll explore the fascinating world of artificial intelligence."
Model: VibeVoice-1.5B
cfg_scale: 1.3
use_sampling: False
[1]: Have you seen the new AI developments?
[2]: Yes, they're quite impressive!
[1]: I think voice synthesis has come a long way.
[2]: Absolutely, it sounds so natural now.
[1]: Welcome everyone to our meeting.
[2]: Thanks for having us!
[3]: Glad to be here.
[4]: Looking forward to the discussion.
[1]: Let's begin with the agenda.
This ComfyUI wrapper is released under the MIT License. See LICENSE file for details.
Note: The VibeVoice model itself is subject to Microsoft's licensing terms:
For issues or questions:
Contributions welcome! Please:
Test changes thoroughly
Follow existing code style
Update documentation as needed
Submit pull requests with clear descriptions
Python
100.0%
A comprehensive ComfyUI integration for Microsoft's VibeVoice text-to-speech model, enabling high-quality single and multi-speaker voice synthesis directly within your ComfyUI workflows.
Original vibevoice-7b works like this: 2 LLM passes (positive+negative) + diffusion based on these two passes.
7b-exl-8bit + no-llm-bf16 - 12.6GB
7b-exl-4bit + no-llm-bf16 - 9.5GB (realtime at 3090, 9.00 it/s)
7b-exl-4bit + no-llm-nf4 - 7.3GB (nf4 is 1.5 times slower)
1.5b-exl-8bit + no-llm-nf4 - 4.7GB
qll exl3 quants run the same speed. But 4bit is a little faster.
the nvidia 3060 is only 20% slower than the 3090.
flash-attention-2 It's difficult to compile under Windows, so here are the links for the compiled whl for flash-attention-2:
here: https://huggingface.co/lldacing/flash-attention-windows-wheel/tree/main or here: https://github.com/mjun0812/flash-attention-prebuild-wheels/releases
You can find out your version of Python, Torch, cuda in comfyui - menu - Help - about
Below, I'm using python 3.11, torch 2.6.0, and cuda126. For other versions, please refer to the links above (or compile yourself). For flash-attention, it's important to match the version of python, torch, and cuda. For exllama, the main requirement is that the version of python matches. If you can't find any suitable compiled versions of flash-attention, you can compile them yourself using the following guide: https://www.reddit.com/r/Oobabooga/comments/1jq3uj9/guide_getting_flash_attention_2_working_on/
exllamav3-v0.0.6 - choose whl based on your python version: https://github.com/mozer/exllamav3/releases/tag/v0.0.6
cd C:\DATA\SD\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\python_embeded
python.exe -m pip install https://huggingface.co/lldacing/flash-attention-windows-wheel/resolve/main/flash_attn-2.7.4%2Bcu126torch2.6.0cxx11abiFALSE-cp311-cp311-win_amd64.whl
# install my exllamav3 for Python 3.11.x (choose correct whl here from my repo, link above)
python.exe -m pip install https://github.com/Mozer/exllamav3/releases/download/v0.0.6/exllamav3-0.0.6+cu128.torch2.7.0-cp311-cp311-win_amd64.whl
python.exe -m pip install -U triton-windows<3.5
After that, install my nodes using the comfyui manager - install via git url:
https://github.com/mozer/comfyUI-vibevoice-exl3
Or via: cd ComfyUI/custom_nodes && git clone https://github.com/mozer/comfyUI-vibevoice-exl3
Restart comfyui.
Workflow with wav2lip (wav2lip is optional): https://github.com/Mozer/ComfyUI-VibeVoice-exl3/blob/main/examples/vibevoice_exl3_with_wav2lip.json You don't need to download the models manually. They are dowloaded automatically. But if you really want to, they're available here: https://huggingface.co/collections/tensorbanana/vibevoice-68cd1bac5766dc65e90380c1 If you're going to upload them manually, make sure to study the folder structure first (HF-downloader uses this method). example: /models/vibevoice/models--tensorbanana--vibevoice-1.5b-exl3-8bit/snapshots/badfbb16dd63a1a8e633ba6eb138a21303ed1325/model.safetensors
Loads text content from files in ComfyUI's input/output/temp directories.
Generates speech from text using a single voice.
text: Input text to convert to speechmodel: VibeVoice-1.5B or VibeVoice-7B-Previewattention_type: auto, eager, sdpa, or flash_attention_2 (default: auto)free_memory_after_generate: Free VRAM after generation (default: True)diffusion_steps: Number of denoising steps (5-100, default: 20)seed: Random seed for reproducibility (default: 42)cfg_scale: Classifier-free guidance (1.0-2.0, default: 1.3)use_sampling: Enable/disable deterministic generation (default: False)voice_to_clone: Audio input for voice cloningtemperature: Sampling temperature (0.1-2.0, default: 0.95)top_p: Nucleus sampling parameter (0.1-1.0, default: 0.95)Generates multi-speaker conversations with distinct voices.
[N]: notation where N is 1-4text: Input text with speaker labelsmodel: VibeVoice-1.5B or VibeVoice-7B-Previewattention_type: auto, eager, sdpa, or flash_attention_2 (default: auto)free_memory_after_generate: Free VRAM after generation (default: True)diffusion_steps: Number of denoising steps (5-100, default: 20)seed: Random seed for reproducibility (default: 42)cfg_scale: Classifier-free guidance (1.0-2.0, default: 1.3)use_sampling: Enable/disable deterministic generation (default: False)speaker1_voice to speaker4_voice: Audio inputs for voice cloningtemperature: Sampling temperature (0.1-2.0, default: 0.95)top_p: Nucleus sampling parameter (0.1-1.0, default: 0.95)Manually frees all loaded VibeVoice models from memory.
audio - Connect audio output to trigger memory cleanupaudio - Passes through the input audio unchanged[VibeVoice Node] → [Free Memory] → [Save Audio]For multi-speaker generation, format your text using the [N]: notation:
[1]: Hello, how are you today?
[2]: I'm doing great, thanks for asking!
[1]: That's wonderful to hear.
[3]: Hey everyone, mind if I join the conversation?
[2]: Not at all, welcome!
Important Notes:
[1]:, [2]:, [3]:, [4]: for speaker labelsModels are automatically downloaded on first use and cached in ComfyUI/models/vibevoice/.
use_sampling = Falseuse_sampling = TrueTo clone a voice:
voice_to_clone input (single speaker)speaker1_voice, speaker2_voice, etc. (multi-speaker)Requirements for voice samples:
Text Preparation:
Model Selection:
Seed Management:
Performance:
[N]: formatText: "Welcome to our presentation. Today we'll explore the fascinating world of artificial intelligence."
Model: VibeVoice-1.5B
cfg_scale: 1.3
use_sampling: False
[1]: Have you seen the new AI developments?
[2]: Yes, they're quite impressive!
[1]: I think voice synthesis has come a long way.
[2]: Absolutely, it sounds so natural now.
[1]: Welcome everyone to our meeting.
[2]: Thanks for having us!
[3]: Glad to be here.
[4]: Looking forward to the discussion.
[1]: Let's begin with the agenda.
This ComfyUI wrapper is released under the MIT License. See LICENSE file for details.
Note: The VibeVoice model itself is subject to Microsoft's licensing terms:
For issues or questions:
Contributions welcome! Please:
Test changes thoroughly
Follow existing code style
Update documentation as needed
Submit pull requests with clear descriptions
Python
100.0%