Emo Settings
Eight sliders for an emotion vector — the no-typing way to control IndexTTS
- emo_vector
If you've ever stared at the Index TTS 2.5 node's emo_vector input and wondered what 0.8,0,0,0,0,0,0,0 is supposed to mean, this node is for you. Emo Settings is a tiny helper that turns eight labeled sliders into that comma-separated vector, so you stop hand-typing magic numbers and just drag a fader. It's not doing anything clever - and it doesn't need to. It's the difference between guessing at a string and actually feeling your way to a performance.
How it works
The IndexTTS2_5Node expects its emotion vector in a fixed order: happy, angry, sad, afraid, disgusted, melancholic, surprised, calm (in the README's framing: 高兴/愤怒/悲伤/恐惧/反感/低落/惊讶/自然). The model reads position one as "happy intensity," position two as "angry intensity," and so on - which is exactly why typing it by hand is a trap. Get the order wrong and you're accidentally asking for "calm and disgusted." Emo Settings takes eight FLOAT sliders (0–1, 0.05 steps), each labeled with its emotion, and joins them in that same order into a string. Wire its single emo_vector output into the TTS node's emo_vector input and you're done.
The order is guaranteed to match, because the helper shares its EMO_ORDER constant with the main node - one source of truth, so the pack can't drift out of sync with itself.
What you actually set
All eight required inputs are sliders: happy, angry, sad, afraid, disgusted, melancholic, surprised, calm. They're each just "how strong is this emotion, 0 to 1." Practically:
- Crank one slider up for a single dominant emotion, e.g.
angry→ 0.9. - Mix a couple for something more textured, like
sad+ a littlemelancholic. - For a flat, natural read, set
calmto 1 - that's the documented "natural" vector. Leaving everything at zero is not the same thing, so don't start from all-defaults and expect neutral.
Back on the TTS node, emo_alpha (0–1) scales the whole vector, which is a handy global "dial the emotion down" knob once you've found a mix you like. And remember the vector route overrides emo_ref_audio - if you've got an emotion clip wired in, feeding this node disables it.
Installing and using it
It ships in the same pack as the main node - mailzwj/ComfyUI-IndexTTS-2.5 - so installing that pack is the whole install: ComfyUI Manager (search "IndexTTS"), or cd ComfyUI/custom_nodes && git clone https://github.com/mailzwj/ComfyUI-IndexTTS-2.5 and restart. No models, no downloads, no extra deps; the sliders do zero computation, so there's nothing to break. The one thing that can bite is the pack's general install requirements - if the main node isn't working, this one has nothing to plug into, so sort out the model weights and transformers version first. Once Index TTS 2.5 runs, this node is the friendliest way to drive its emotions.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| happy | FLOAT | 0.000–1 | 高兴(happy):情感强度,范围 0~1。 |
| angry | FLOAT | 0.000–1 | 愤怒(angry):情感强度,范围 0~1。 |
| sad | FLOAT | 0.000–1 | 悲伤(sad):情感强度,范围 0~1。 |
| afraid | FLOAT | 0.000–1 | 恐惧(afraid):情感强度,范围 0~1。 |
| disgusted | FLOAT | 0.000–1 | 反感(disgusted):情感强度,范围 0~1。 |
| melancholic | FLOAT | 0.000–1 | 低落(melancholic):情感强度,范围 0~1。 |
| surprised | FLOAT | 0.000–1 | 惊讶(surprised):情感强度,范围 0~1。 |
| calm | FLOAT | 0.000–1 | 自然(calm):情感强度,范围 0~1。 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| emo_vector | STRING | — |