SkillAgentSearch skills...

ComfyUI OmniVoice TTS

OmniVoice TTS nodes for ComfyUI - Zero-shot multilingual text-to-speech with voice cloning, voice design, and multi-speaker dialogue

Install / Use

npx skills add Saganaki22/ComfyUI-OmniVoice-TTS

Installs into whichever agent you are using.

About this skill

Quality Score

0/100

Category

Design

Supported Platforms

Universal

README

ComfyUI-OmniVoice-TTS

OmniVoice TTS nodes for ComfyUI — Zero-shot multilingual text-to-speech with voice cloning and voice design. Supports 600+ languages with state-of-the-art quality.

中文文档

OmniVoice Model OmniVoice-bf16 Hugging Face Space Demo arXiv GitHub

<img width="1611" height="1260" alt="Screenshot 2026-04-03 124716" src="https://github.com/user-attachments/assets/d30440cf-2121-40f1-9b22-22c89fe7540c" />

Features

  • 600+ Languages — Broadest language coverage among zero-shot TTS models
  • Voice Cloning — Clone any voice from 3-15 seconds of reference audio
  • Voice Design — Create synthetic voices from text descriptions (gender, age, pitch, accent)
  • Multi-Speaker Dialogue — Generate conversations between multiple speakers using [Speaker_N]: tags
  • Fast Inference — RTF as low as 0.025 (40x faster than real-time)
  • Non-Verbal Expressions — Inline tags like [laughter], [sigh], [sniff]
  • SageAttention Support — Uses Sage kernels for compatible unmasked attention calls (CUDA, SM80+)
  • Auto-Download — Models download automatically from HuggingFace on first use
  • Whisper ASR Caching — Pre-load Whisper to avoid re-downloading on each run
  • VRAM Efficient — Automatic CPU offload, VBAR/aimdo integration, smart cache invalidation

https://github.com/user-attachments/assets/b9c75048-915a-4993-9169-ddb1d2b28f41

Installation

Method 1: ComfyUI Manager (Recommended)

Search for "OmniVoice" in ComfyUI Manager and click Install.

Method 2: Manual Install

cd ComfyUI/custom_nodes
git clone https://github.com/saganaki22/ComfyUI-OmniVoice-TTS.git
cd ComfyUI-OmniVoice-TTS
python install.py

Why --no-deps?

The omnivoice pip package specifies torch==2.8.* as a dependency, which can downgrade your PyTorch to a CPU-only version and break ComfyUI's GPU acceleration. We work around this by installing omnivoice with --no-deps in install.py, then separately installing only the missing dependencies that ComfyUI doesn't already provide.

If PyTorch Gets Broken

If another package accidentally downgrades your PyTorch, see the PyTorch Compatibility Matrix for restore commands matching your setup.

Nodes

<details> <summary><strong>1. OmniVoice Longform TTS</strong> — Long-form text-to-speech with smart chunking and optional voice cloning</summary>

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | model | COMBO | (auto) | OmniVoice model checkpoint | | text | STRING, multiline | "Hello!..." | Text to synthesize | | ref_text | STRING, multiline | "" | Reference audio transcript (empty=auto-detect) | | steps | INT | 32 | Diffusion steps (4-64, 16=faster, 64=best) | | guidance_scale | FLOAT | 2.0 | Classifier-free guidance scale (0-10) | | t_shift | FLOAT | 0.1 | Time-step shift for noise schedule (0-1) | | speed | FLOAT | 1.0 | Speaking speed (0.5-2.0, >1=faster) | | duration | FLOAT | 0.0 | Fixed duration in seconds (0=auto) | | device | COMBO | auto | auto, cuda, cpu, mps, xpu | | dtype | COMBO | auto | auto, bf16, fp16, fp32 | | attention | COMBO | auto | auto, eager, sage_attention | | seed | INT | 0 | Random seed (0=random) | | words_per_chunk | INT | 100 | Words per chunk (0=no chunking) | | position_temperature | FLOAT | 5.0 | Mask-position temperature (0=greedy, higher=more random) | | class_temperature | FLOAT | 0.0 | Token sampling temperature (0=greedy) | | layer_penalty_factor | FLOAT | 5.0 | Penalty on deeper codebook layers | | denoise | BOOLEAN | True | Prepend denoise token for cleaner output | | preprocess_prompt | BOOLEAN | True | Remove silences; auto-trim long references when ref_text is empty | | postprocess_output | BOOLEAN | True | Post-process generated audio (remove long silences) | | keep_model_loaded | BOOLEAN | True | Keep model in memory (offloads to CPU between runs) | | instruct | STRING | "" | Dialect/style instruction. Only specific values are supported — see Dialect/Style Instructions. Applied to every chunk |

Optional Inputs:

  • ref_audio — Reference audio for voice cloning (3-15s optimal)
  • whisper_model — Pre-loaded Whisper ASR model
</details> <details> <summary><strong>2. OmniVoice Voice Clone TTS</strong> — Clone a voice from reference audio</summary>

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | model | COMBO | (auto) | OmniVoice model checkpoint | | text | STRING, multiline | "Hello!..." | Text to synthesize in cloned voice | | ref_audio | AUDIO | required | Reference audio (3-15s) | | ref_text | STRING, multiline | "" | Transcript (empty=auto-transcribe with Whisper) | | steps | INT | 32 | Diffusion steps (4-64) | | guidance_scale | FLOAT | 2.0 | Classifier-free guidance scale (0-10) | | t_shift | FLOAT | 0.1 | Time-step shift for noise schedule (0-1) | | speed | FLOAT | 1.0 | Speaking speed (0.5-2.0) | | duration | FLOAT | 0.0 | Fixed duration in seconds (0=auto) | | device | COMBO | auto | auto, cuda, cpu, mps, xpu | | dtype | COMBO | auto | auto, bf16, fp16, fp32 | | attention | COMBO | auto | auto, eager, sage_attention | | seed | INT | 0 | Random seed (0=random) | | position_temperature | FLOAT | 5.0 | Mask-position temperature (0=greedy) | | class_temperature | FLOAT | 0.0 | Token sampling temperature (0=greedy) | | layer_penalty_factor | FLOAT | 5.0 | Penalty on deeper codebook layers | | denoise | BOOLEAN | True | Prepend denoise token for cleaner output | | preprocess_prompt | BOOLEAN | True | Remove silences; auto-trim long references when ref_text is empty | | postprocess_output | BOOLEAN | True | Post-process generated audio (remove long silences) | | keep_model_loaded | BOOLEAN | True | Keep model in memory | | instruct | STRING | "" | Dialect/style instruction. Only specific values are supported — see Dialect/Style Instructions |

Optional Input:

  • whisper_model — Pre-loaded Whisper from OmniVoice Whisper Loader
</details> <details> <summary><strong>3. OmniVoice Voice Design TTS</strong> — Design voices from text descriptions, no reference audio needed</summary>

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | model | COMBO | (auto) | OmniVoice model checkpoint | | text | STRING, multiline | "Hello!..." | Text to synthesize in designed voice | | voice_instruct | STRING, multiline | "female, low pitch..." | Voice attributes (comma-separated) | | steps | INT | 32 | Diffusion steps (4-64) | | guidance_scale | FLOAT | 2.0 | Classifier-free guidance scale (0-10) | | t_shift | FLOAT | 0.1 | Time-step shift for noise schedule (0-1) | | speed | FLOAT | 1.0 | Speaking speed (0.5-2.0) | | duration | FLOAT | 0.0 | Fixed duration in seconds (0=auto) | | device | COMBO | auto | auto, cuda, cpu, mps, xpu | | dtype | COMBO | auto | auto, bf16, fp16, fp32 | | attention | COMBO | auto | auto, eager, sage_attention | | seed | INT | 0 | Random seed (0=random) | | position_temperature | FLOAT | 5.0 | Mask-position temperature (0=greedy) | | class_temperature | FLOAT | 0.0 | Token sampling temperature (0=greedy) | | layer_penalty_factor | FLOAT | 5.0 | Penalty on deeper codebook layers | | denoise | BOOLEAN | True | Prepend denoise token for cleaner output | | postprocess_output | BOOLEAN | True | Post-process generated audio (remove long silences) | | keep_model_loaded | BOOLEAN | True | Keep model in memory |

</details> <details> <summary><strong>4. OmniVoice Multi-Speaker TTS</strong> — Generate dialogue between multiple speakers using <code>[Speaker_N]:</code> tags</summary>

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | model | COMBO | (auto) | OmniVoice model checkpoint | | text | STRING, multiline | "[Speaker_1]: Hello..." | Multi-speaker text | | num_speakers | DYNAMIC | 2 | Number of speakers (2-10, dynamic inputs) | | steps | INT | 32 | Diffusion steps per speaker | | guidance_scale | FLOAT | 2.0 | Classifier-free guidance scale (0-10) | | t_shift | FLOAT | 0.1 | Time-step shift for noise schedule (0-1) | | speed | FLOAT | 1.0 | Speaking speed for all speakers | | pause_between_speakers | FLOAT | 0.3 | Silence between speakers (seconds) | | device | COMBO | auto | auto, cuda, cpu, mps, xpu | | dtype | COMBO | auto | auto, bf16, fp16, fp32 | | attention | COMBO | auto | auto, eager, sage_attention | | position_temperature | FLOAT | 5.0 | Mask-position temperature (0=greedy) | | class_temperature | FLOAT | 0.0 | Token sampling temperature (0=greedy) | | layer_penalty_factor | FLOAT | 5.0 | Penalty on deeper codebook layers | | denoise | BOOLEAN | True | Prepend denoise token for cleaner output | | preprocess_prompt | BOOLEAN | True | Remove silences; auto-trim long references without transcripts | | postprocess_output | BOOLEAN | True | Post-process generated audio | | seed | INT | 0 | Random seed (0=random) | | keep_model_loaded | BOOLEAN | True | Keep model in memory | | speaker_N_audio | AUDIO | optional | Referen

Related Skills

View on GitHub
GitHub Stars527
CategoryDesign
Updated3h ago
Forks68

Languages

Python

Security Score

100/100

Audited on Aug 8, 2026

No findings