Nodes/ComfyUI-Easy-IndexTTS2/Merge Voice Emotions
ComfyUI Node

Merge Voice Emotions

Assembling a cast for one Generate call

By yolain·Created 11 months ago·Updated 8 months ago· 269
Merge Voice Emotions
  • emotion1
  • emotion2
  • emotion3
  • emotion4
  • emotion5
  • emotion6
  • emotion7
  • emotion8
  • emotion9
  • emotion10
  • emotions

Merge Voice Emotions is a plumbing node, and it exists because the Generate node needs a list of voices while each emotion node produces exactly one. It takes up to ten EASY_INDEXTTS_EMOTIONS objects on emotion1 through emotion10 (only the first is required) and merges them into a single emotions output - no mixing, no weighting, just concatenation in order. That order matters more than it looks like it should.

Here's the trick: the order you plug voices in decides their auto-names. An emotion node with an empty voice_name gets labeled s1, s2, s3... by position in the merged list. So if you're scripting a dialogue and the text says [s2] Are you kidding me?, that line goes to whichever voice you plugged in second. Name your voices explicitly on the emotion nodes and order stops mattering - but if you rely on auto-naming, this is where the naming actually happens.

When you'd use it

  • Any time a single Generate call should produce a multi-speaker conversation. Build one emotion node per character, merge them here, and drive the whole scene with one script using [name] markers.
  • Mixing emotion types for one character across the pack - say a vector-based emotion for one line and a text-described emotion for another. Each emotion node emits one object; the merge bundles them into the list the Generate node expects.
  • Note the input type is EASY_INDEXTTS_EMOTIONS, not audio. If you're just stacking reference clips without emotion, you want Merge Voice Audios instead, which feeds the reference_audios input.

The output goes into IndexTTS Generate or IndexTTS Generate Simple (into the emotions input, which outranks both reference audio inputs). It's a dumb, boring, indispensable node - and if you're building anything bigger than a single-voice narration, it's the one that turns a pile of emotion objects into a cast.

CategoryEasyUse/IndexTTS2

Inputs (10)

NameTypeDefaultDescription
emotion1EASY_INDEXTTS_EMOTIONSvoice emotion 1
emotion2optEASY_INDEXTTS_EMOTIONS(Optional) voice emotion 2
emotion3optEASY_INDEXTTS_EMOTIONS(Optional) voice emotion 3
emotion4optEASY_INDEXTTS_EMOTIONS(Optional) voice emotion 4
emotion5optEASY_INDEXTTS_EMOTIONS(Optional) voice emotion 5
emotion6optEASY_INDEXTTS_EMOTIONS(Optional) voice emotion 6
emotion7optEASY_INDEXTTS_EMOTIONS(Optional) voice emotion 7
emotion8optEASY_INDEXTTS_EMOTIONS(Optional) voice emotion 8
emotion9optEASY_INDEXTTS_EMOTIONS(Optional) voice emotion 9
emotion10optEASY_INDEXTTS_EMOTIONS(Optional) voice emotion 10

Outputs (1)

NameTypeDescription
emotionsEASY_INDEXTTS_EMOTIONS