๐ IndexTTS-2 Emotion Vectors
Eight sliders to dial in the feeling
- emotion_control
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_controlinput, oremotion_alphaon 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_alphais 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_audiointo 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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| Happyopt | FLOAT | 0.000โ1.2 | Happy emotion intensity (0.0-1.2). Higher values make speech sound more joyful and upbeat. |
| Angryopt | FLOAT | 0.000โ1.2 | Angry emotion intensity (0.0-1.2). Higher values make speech sound more aggressive and harsh. |
| Sadopt | FLOAT | 0.000โ1.2 | Sad emotion intensity (0.0-1.2). Higher values make speech sound more melancholic and downcast. |
| Surprisedopt | FLOAT | 0.000โ1.2 | Surprised emotion intensity (0.0-1.2). Higher values make speech sound more shocked and amazed. |
| Afraidopt | FLOAT | 0.000โ1.2 | Afraid emotion intensity (0.0-1.2). Higher values make speech sound more scared and anxious. |
| Disgustedopt | FLOAT | 0.000โ1.2 | Disgusted emotion intensity (0.0-1.2). Higher values make speech sound more repulsed and revolted. |
| Calmopt | FLOAT | 0.000โ1.2 | Calm emotion intensity (0.0-1.2). Higher values make speech sound more peaceful and relaxed. |
| Melancholicopt | FLOAT | 0.000โ1.2 | Melancholic emotion intensity (0.0-1.2). Higher values make speech sound more thoughtfully sad and wistful. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| emotion_control | EMOTION_CONTROL | โ |