ComfyUI Extension: ComfyUI-Qwen3TTS-Emotional
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.
Advanced voice cloning with 80+ emotion presets and multi-emotion mixing for ComfyUI. (Description by CC)
Looking for a different extension?
Custom Nodes (0)
README
🎭 Qwen3-TTS Emotional Voice Clone (Ultimate Edition)
Advanced voice cloning with 80+ emotion presets and multi-emotion mixing for ComfyUI.
🌟 Features
80+ Emotion Presets
Transform your voice clones with comprehensive emotional range:
- Core Emotions: neutral, angry, sad, happy, fearful, disgusted, surprised
- Intensity Variations: annoyed → angry → furious → enraged
- Social/Interpersonal: sarcastic, mocking, condescending, dismissive, sympathetic, apologetic, pleading
- Confidence Spectrum: confident, arrogant, smug, insecure, hesitant, timid, defeated, hopeless
- Energy Levels: excited, enthusiastic, energetic, bored, tired, exhausted, lethargic, calm
- Stress/Tension: nervous, panicked, frantic, stressed, overwhelmed, relaxed, serene
- Attitude/Mood: playful, teasing, flirtatious, seductive, mysterious, ominous, menacing, threatening
- Physical States: drunk, breathless, whispering, shouting, in_pain, sick
- Complex Emotions: bitter, manic, reluctant, desperate, jealous, frustrated, relieved, guilty, ashamed, proud
- Character Presets: rick_like, jerry_like, morty_like (Rick & Morty inspired)
Multi-Emotion Mixing
- Primary Emotion: Main emotional tone (required)
- Secondary Emotion: Blend with primary for nuanced delivery (optional)
- Tertiary Emotion: Add third layer of complexity (optional)
- Intensity Control: 0.0x to 2.0x multiplier for emotion strength
Voice Cloning Modes
- Fast Mode (
x_vector_only=True): Quick generation, speaker embedding only - Accurate Mode (
x_vector_only=False): High-quality cloning with reference transcript
📋 Requirements
- ComfyUI
- ComfyUI-Qwen-TTS (base package)
- Python 3.10+
- CUDA-capable GPU (recommended) or CPU
Hardware Compatibility: Works on any system that can run Qwen3-TTS (NVIDIA GPUs, AMD GPUs with ROCm, Mac M1/M2, CPU)
🚀 Installation
Method 1: ComfyUI Manager (Recommended - Coming Soon)
- Open ComfyUI Manager
- Search for "Qwen3-TTS Emotional"
- Click Install
- Restart ComfyUI
Method 2: Manual Installation
Step 1: Install the base Qwen3-TTS package first
cd ComfyUI/custom_nodes
git clone https://github.com/flybirdxx/ComfyUI-Qwen-TTS.git
cd ComfyUI-Qwen-TTS
pip install -r requirements.txt
Step 2: Add the Emotional Voice Clone node
# Download qwen3_emotional_clone.py from this repo
# Place it in: ComfyUI/custom_nodes/ComfyUI-Qwen-TTS/
Step 3: Update __init__.py
Add these lines to ComfyUI/custom_nodes/ComfyUI-Qwen-TTS/__init__.py:
# Import emotional clone nodes
try:
from .qwen3_emotional_clone import (
NODE_CLASS_MAPPINGS as EMOTIONAL_MAPPINGS,
NODE_DISPLAY_NAME_MAPPINGS as EMOTIONAL_DISPLAY
)
EMOTIONAL_LOADED = True
except Exception as e:
print(f"⚠️ Failed to load emotional clone nodes: {e}")
EMOTIONAL_LOADED = False
# Add to the existing NODE_CLASS_MAPPINGS section
if EMOTIONAL_LOADED:
NODE_CLASS_MAPPINGS.update(EMOTIONAL_MAPPINGS)
NODE_DISPLAY_NAME_MAPPINGS.update(EMOTIONAL_DISPLAY)
print("✅ Emotional Voice Clone node loaded!")
Step 4: Restart ComfyUI
💡 Usage
Basic Usage
- Add the node: Right-click →
Qwen3-TTS→🎭 Qwen3-TTS Emotional Voice Clone (Ultimate) - Connect reference audio: Load your voice sample (5-30 seconds recommended)
- Enter text: What you want the voice to say
- Select emotion: Choose from 80+ presets
- Generate: Queue the prompt
Single Emotion Example
Primary Emotion: sad
Secondary Emotion: none
Tertiary Emotion: none
Intensity: 1.0x
Result: Pure sad delivery
Multi-Emotion Mixing Examples
Bitter (Pre-mixed)
Primary: sad
Secondary: angry
Intensity: 1.0x
= Bitter, resentful tone
Manic Energy
Primary: excited
Secondary: nervous
Tertiary: breathless
Intensity: 1.5x
= Frantic, overwhelming energy
Maximum Confidence
Primary: confident
Secondary: arrogant
Tertiary: dismissive
Intensity: 2.0x
= Peak smugness and authority
Defeated Character
Primary: defeated
Secondary: apologetic
Tertiary: whispering
Intensity: 1.2x
= Complete emotional breakdown
Advanced Settings
Fast Generation (3-5 seconds):
x_vector_only: True (enabled)ref_audio_transcript: Leave empty- Good for testing, quick iterations
High Quality (15-20 seconds):
x_vector_only: False (disabled)ref_audio_transcript: Fill in what the reference audio says- Better voice matching, complete sentences
Controlling Length:
- Use randomize seed to try different generation lengths
- When you get a good long generation, note the seed
- Use that fixed seed for consistent results
🎨 Emotion Mixing Tips
Energy Combinations
calm + confident = assuredexcited + happy = ecstatictired + defeated = hopeless
Social Dynamics
confident + mocking = smugnervous + apologetic = submissiveangry + contemptuous = hateful
Physical + Emotional
breathless + excited = exhilarateddrunk + happy = jollywhispering + fearful = terrified
Character Voices
- Confident Scientist:
confident + condescending + dismissive - Nervous Assistant:
nervous + insecure + apologetic - Anxious Student:
anxious + overwhelmed + stressed
📊 Parameter Guide
Emotion Intensity
- 0.0x: Neutral (no emotion)
- 0.5x: Subtle hint
- 1.0x: Normal strength (default)
- 1.5x: Strong emotion
- 2.0x: Extreme/exaggerated
How It Works
The node adjusts three generation parameters based on emotion:
- Temperature: Controls randomness/variation
- Repetition Penalty: Affects word repetition and flow
- Top-p: Nucleus sampling probability
Emotions are mixed by averaging their parameter adjustments, then multiplied by intensity.
🔧 Troubleshooting
Audio cuts off abruptly
- This is seed-dependent behavior
- Try randomizing seed multiple times
- Use longer input text
- Consider using
x_vector_only=Falsewith transcript
Generation too fast (3 seconds)
- This is normal for
x_vector_only=Truemode - For longer, more accurate generation:
- Set
x_vector_only=False - Fill in
ref_audio_transcript - Should take 15-20 seconds
- Set
Voice doesn't match reference
- Make sure reference audio is clear (5-30 seconds)
- Try
x_vector_only=Falsewith accurate transcript - Use higher quality reference audio (24kHz recommended)
Node doesn't appear
- Verify base ComfyUI-Qwen-TTS is installed
- Check
__init__.pywas updated correctly - Look for errors in ComfyUI console
- Try restarting ComfyUI
📝 Examples & Workflows
Sarcastic Scientist
Reference Audio: scientist_voice.mp3
Text: "Oh wonderful, another one who thinks they understand quantum mechanics."
Primary: sarcastic
Secondary: condescending
Tertiary: dismissive
Intensity: 1.5x
Defeated Character
Reference Audio: character_voice.mp3
Text: "I tried my best, but I guess it wasn't enough."
Primary: defeated
Secondary: sad
Tertiary: whispering
Intensity: 1.8x
Panicked Character
Reference Audio: anxious_voice.mp3
Text: "We need to move NOW, there's no time!"
Primary: panicked
Secondary: breathless
Tertiary: stressed
Intensity: 2.0x
🤝 Contributing
Contributions are welcome! Areas for improvement:
- Additional emotion presets
- Better parameter tuning for specific emotions
- Character-specific preset packs
- Multi-language emotion mapping
📜 Credits
- Emotional Voice Clone Node: Developed with assistance from Claude (Anthropic)
- Base Qwen3-TTS: Alibaba Qwen Team
- ComfyUI Integration: flybirdxx
- ComfyUI: comfyanonymous
📄 License
GPL-3.0 License (matching base Qwen3-TTS package)
🔗 Links
💬 Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Discord: ComfyUI Community Server
Made with 🎭 for the ComfyUI community
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.