Nodes/ComfyUI-IndexTTS2/IndexTTS2 Emotion Vector
ComfyUI Node

IndexTTS2 Emotion Vector

Eight sliders that tell the TTS how to feel — emotion without a second audio clip

By snicolast·Created 12 months ago·Updated 11 months ago· 212
IndexTTS2 Emotion Vector
    • EMOTION_VECTOR
    happy0.00
    angry0.00
    sad0.00
    afraid0.00
    disgusted0.00
    melancholic0.00
    surprised0.00
    calm0.00

    IndexTTS2 can pull emotion from a second reference clip - but you don't always have a clip of someone sounding exactly the way you want. That's what this node is for: eight sliders that build an emotion vector from scratch, no audio required. It's a small utility, but it's the difference between "I want this line to sound sad" and actually being able to dial in how sad.

    How it works

    Emotion in IndexTTS2 is just an 8-value vector - happy, angry, sad, afraid, disgusted, melancholic, surprised, calm. This node collects your eight slider values, clamps anything negative to zero, and packages them into an EMOTION_VECTOR that plugs straight into the emotion_vector input on IndexTTS2 Simple or IndexTTS2 Advanced. That's the whole job. It's deliberately boring, and that's fine.

    The one real constraint is the sum: the values must add up to 1.5 or less, and the node will raise a hard error if you overshoot - it refuses to build an invalid vector rather than quietly feeding garbage downstream. Each slider runs 0 to 1.4.

    Using it

    Wire the EMOTION_VECTOR output into the emotion_vector input of a Simple or Advanced node and run. The practical advice, from people who've actually tuned this: keep the values small. Early testers got their best results with individual emotions around 0.2–0.3, which is a lot less than you'd guess. Crank a slider to 1.4 and you don't get "very sad," you get a caricature. Subtlety reads as natural emotion; maxed-out reads as parody.

    One thing worth knowing: if you feed both emotion_audio and emotion_vector to a synthesis node, the vector wins and the audio is ignored - the status string on the output will say so. So this node is also your escape hatch when a reference clip keeps dragging in unwanted emotion you can't scrub out.

    Install and troubleshooting

    Nothing extra to install - it ships in the pack and needs no model of its own. If you hit the "exceeds maximum 1.5" error, that's just arithmetic: lower one or more sliders. If you want the emotion derived from words instead of sliders, the pack's Emotion From Text node produces the same vector type from a sentence - this node is the manual version of that same idea.

    CategoryAudio/IndexTTS

    Inputs (8)

    NameTypeDefaultDescription
    happyFLOAT0.000–1.4
    angryFLOAT0.000–1.4
    sadFLOAT0.000–1.4
    afraidFLOAT0.000–1.4
    disgustedFLOAT0.000–1.4
    melancholicFLOAT0.000–1.4
    surprisedFLOAT0.000–1.4
    calmFLOAT0.000–1.4

    Outputs (1)

    NameTypeDescription
    EMOTION_VECTOREMOTION_VECTOR