Nodes/TTS Audio Suite/๐ŸŒˆ IndexTTS-2 Emotion Vectors
ComfyUI Node

๐ŸŒˆ IndexTTS-2 Emotion Vectors

Eight sliders to dial in the feeling

By diodiogodยทCreated 12 months agoยทUpdated 18 days agoยท 1,098
๐ŸŒˆ IndexTTS-2 Emotion Vectors
    • emotion_control
    โ—„Happy0.00โ–บ
    โ—„Angry0.00โ–บ
    โ—„Sad0.00โ–บ
    โ—„Surprised0.00โ–บ
    โ—„Afraid0.00โ–บ
    โ—„Disgusted0.00โ–บ
    โ—„Calm0.00โ–บ
    โ—„Melancholic0.00โ–บ

    This little node is how you set emotion by hand instead of by example. It's eight sliders - Happy, Angry, Sad, Surprised, Afraid, Disgusted, Calm, Melancholic - and each one goes from 0 to 1.2. You dial in the mix you want, and it outputs a single EMOTION_CONTROL that plugs into the โš™๏ธ IndexTTS-2 Engine's emotion_control input. That's the entire job. It's a helper for one specific engine, and it's useless without it.

    Why bother when IndexTTS-2 can also copy emotion from an audio clip? Because sometimes you don't have a reference clip of the exact feeling you want, and describing "70% sad with a touch of calm" as numbers is faster than hunting for the right sample. Manual precision versus reference-matching - this node is the manual side.

    How it works

    IndexTTS-2 conditions its delivery on an emotion signal blended into its latent space. This node builds that signal directly as a vector: each slider is one dimension of emotion, and the values you set become the target the engine steers toward. You can blend them - a bit of Happy plus a bit of Surprised reads as delighted; Sad plus Calm reads as wistful. The overall strength is then scaled by emotion_alpha back on the engine node, so think of these sliders as the shape of the emotion and emotion_alpha as the volume.

    The inputs and outputs that matter

    There are no required inputs - every slider is optional and defaults to 0, meaning "neutral" if you leave everything untouched (which would be pointless, so set at least one). The eight sliders:

    • Happy, Angry, Sad, Surprised, Afraid, Disgusted, Calm, Melancholic - each 0 to 1.2, step 0.01.

    A few practical notes on values: you rarely want to peg one to 1.2. Emotions read as more natural in the 0.4โ€“0.8 range, and stacking two moderate values usually beats one maxed-out one. Because the max is 1.2 rather than 1.0, there's a little headroom above "full" for when you genuinely want it pushed - but that's also where it starts to sound theatrical.

    The single output is emotion_control (type EMOTION_CONTROL). Wire it to the IndexTTS-2 Engine's emotion_control input, and generate over in TTS Text or TTS SRT as usual.

    Installing it

    It's part of TTS Audio Suite - install the whole pack and this node appears. Fastest path: ComfyUI Manager โ†’ search TTS Audio Suite โ†’ install โ†’ restart. Manager runs the pack's install.py, which sorts the dependency conflicts (NumPy, librosa, s3tokenizer) and Python 3.13. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/diodiogod/TTS-Audio-Suite.git, then python install.py from inside the folder with your ComfyUI venv active (run the script, not just a bare requirements install). On Linux grab portaudio19-dev libsamplerate0-dev first. This node itself has no model to download - it just builds a vector. The weights come with the IndexTTS-2 engine.

    Common issues

    • Nothing changes in the output. Two usual causes: you didn't connect the output to the engine's emotion_control input, or emotion_alpha on the engine is at 0, muting whatever you set here. Check both.
    • You left every slider at 0. Then you've asked for neutral emotion - the node is doing exactly what you told it. Set at least one value.
    • It sounds cartoonish. You've pushed values too high, or emotion_alpha is cranked. Bring the sliders into the 0.4โ€“0.8 band and keep alpha near 1.
    • Fighting with an emotion audio reference. You can feed both this and emotion_audio into the engine and they blend - which is great when intended and muddy when not. If the result is confused, use one source at a time until you know what each contributes.
    CategoryTTS Audio Suite/Engines/IndexTTS-2

    Inputs (8)

    NameTypeDefaultDescription
    HappyoptFLOAT0.000โ€“1.2Happy emotion intensity (0.0-1.2). Higher values make speech sound more joyful and upbeat.
    AngryoptFLOAT0.000โ€“1.2Angry emotion intensity (0.0-1.2). Higher values make speech sound more aggressive and harsh.
    SadoptFLOAT0.000โ€“1.2Sad emotion intensity (0.0-1.2). Higher values make speech sound more melancholic and downcast.
    SurprisedoptFLOAT0.000โ€“1.2Surprised emotion intensity (0.0-1.2). Higher values make speech sound more shocked and amazed.
    AfraidoptFLOAT0.000โ€“1.2Afraid emotion intensity (0.0-1.2). Higher values make speech sound more scared and anxious.
    DisgustedoptFLOAT0.000โ€“1.2Disgusted emotion intensity (0.0-1.2). Higher values make speech sound more repulsed and revolted.
    CalmoptFLOAT0.000โ€“1.2Calm emotion intensity (0.0-1.2). Higher values make speech sound more peaceful and relaxed.
    MelancholicoptFLOAT0.000โ€“1.2Melancholic emotion intensity (0.0-1.2). Higher values make speech sound more thoughtfully sad and wistful.

    Outputs (1)

    NameTypeDescription
    emotion_controlEMOTION_CONTROLโ€”