Nodes/ComfyUI-Easy-IndexTTS2/Voice Emotion Text
ComfyUI Node

Voice Emotion Text

'sad, slightly hoarse' beats eight sliders

By yolain·Created 11 months ago·Updated 8 months ago· 269
Voice Emotion Text
  • reference_audio
  • emotions
voice_name
description
use_randomfalse

IndexTTS-2's party trick is that it can do more than clone a voice - it can make that voice feel something, per line. Voice Emotion Text is the most flexible of the three ways to say what that feeling is, because it takes it as a plain-English description. Instead of nudging sliders or hunting for a perfectly emotional sample clip, you type something like "whispering, afraid" or "warm and relaxed" and the model does the rest.

That's the reason to reach for this node over its siblings. The vector node gives you eight numbers to fiddle with, the audio node needs a whole second clip as an emotional reference - this one just needs a sentence.

How it works

You give it the reference_audio (the voice to clone, so the emotion is layered onto that speaker), a description of the emotion, and optionally a voice_name. The node packages that into an EASY_INDEXTTS_EMOTIONS object and routes it through a small Qwen-based emotion model to turn the description into the actual emotional conditioning. That's why there's a qwen0.6bemo4-merge folder in your IndexTTS-2 model directory - it's the text-to-emotion front-end, and it ships with the base download.

Two details worth knowing:

  • voice_name is how the multi-voice script works. Leave it empty and voices get auto-named s1, s2, ... in the order they hit the Merge Voice Emotions node; set it explicitly and you can reference it as [name] in the Generate node's text.
  • use_random generates a random emotion sample instead of following your description - a fun chaos switch for when you want the model to surprise you, less useful when you're timing lines to video.

What it feeds

The output, emotions, wires straight into IndexTTS Generate or IndexTTS Generate Simple (or into Merge Voice Emotions if you're combining several voices). Each emotion object carries its own reference audio and voice name, which is how one Generate call can run a whole two-voice conversation.

The practical tip from the community: emotion strength reads louder than you'd think, so plain "sad" or "excited" tends to land better than adjectives stacked on adjectives. And like the rest of IndexTTS-2, keep the description in English or Chinese - that's what the model was trained on. When it works, it's the closest thing to directing a voice actor that this stack offers.

CategoryEasyUse/IndexTTS2

Inputs (4)

NameTypeDefaultDescription
reference_audioAUDIOReference audio
voice_nameSTRINGVoice name (If empty, it will be defined as s1, s2..., according to the order of batch combinations)
descriptionSTRING
use_randomBOOLEANfalseGenerate a random emotion sampling

Outputs (1)

NameTypeDescription
emotionsEASY_INDEXTTS_EMOTIONS