ComfyUI Node

IndexTTS 2.5 Emotion Control

Four ways to tell IndexTTS 2.5 what you're feeling

By xiaozhuguang·Created 29 days ago·Updated 25 days ago· 9
IndexTTS 2.5 Emotion Control
    • Emotion Control
    mode

    Most TTS nodes give you one dial: the voice. IndexTTS 2.5's Emotion Control node gives you four different ways to dial the performance on top of the voice - and honestly, it's the feature that separates this pack from a plain "clone my voice" tool. The official model ships with eight emotion dimensions (Happy, Angry, Sad, Afraid, Disgusted, Melancholic, Surprised, Calm), and this node is the remote control for them.

    The one input is a mode dropdown, and the whole node is a shape-shifter: pick a mode and its controls appear. Wire its single Emotion Control output into the Generate node's emotion input, and that performance gets baked into the synthesis - this is conditioning at generation time, not some audio effect slapped on afterward. And the happy path to remember: if you don't connect an emotion node at all, Generate simply follows the voice reference. This node is for when following the voice isn't good enough.

    The four modes

    Vector - the flagship. Eight sliders, one per emotion dimension (Happy / Angry / Sad / Afraid / Disgusted / Melancholic / Surprised / Calm), each 0 to 1.2. Nudge happy up and calm down and the delivery shifts. There's also Emotion Strength, a master gain on the whole vector, and Random Emotion Prototype - flip it on and the seed decides the emotion prototype, which is a fun way to audition takes. If your combined sliders push past a total of 0.8 the node auto-normalizes the vector so nothing clips into distortion.

    Reference Audio - the "show me" option. Feed it an audio clip (emotion_audio) of someone sounding the way you want, and it transfers that emotional delivery. This is the most natural mode and the easiest to get right, because you're not translating feelings into numbers.

    Text - the "tell me" option. Type a description like "slow, trembling, holding back tears" and the model works from that. Two catches: it needs the Qwen emotion model loaded, so you must turn on Enable Text Emotion Analysis on the Model Loader (it costs extra VRAM - that's the price of admission). And if you leave the description blank, it analyzes the text you're synthesizing and infers the emotion from the words themselves, which is a genuinely useful trick.

    Speaker - the "do nothing" option. Follows the voice reference exactly. It's there because the mode dropdown needs a default, and it's effectively "no override."

    How to actually use it

    Start with Reference Audio - it's the least fiddly and gives you a feel for what this model can do. Then try a vector with just one or two dimensions nudged (say, Sad 0.4, Calm 0.2) and the strength around 0.5. Resist the urge to max everything; overloading the vector is how you get a cartoon performance instead of a person. The strength slider is your best friend for subtlety - most of the time you want a whisper of emotion, not a shout.

    Keep the same seed across a few mode experiments and you can A/B whether the emotion or the randomness is doing the work. That's the right way to learn this node: change one thing at a time, listen, repeat.

    Installation notes

    It comes as part of the Comfyui-indextts25-xzg pack, so install that first - ComfyUI Manager (search "indextts25") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/xiaozhuguang/Comfyui-indextts25-xzg.git
    python -m pip install -r custom_nodes/Comfyui-indextts25-xzg/requirements.txt
    

    Then download the ~5GB model into models/TTS/IndexTTS-2.5/ (the pack's scripts/download_models.py --source huggingface --accept-license does it for you) and restart ComfyUI. One gotcha specific to this node: if you pick Text mode and nothing happens, the Qwen model almost certainly isn't loaded - go flip use_qwen_emo on the Model Loader. That extra model lives in the pack's hf_cache folder along with the other auxiliary weights, so don't go deleting that folder to reclaim disk space either; the pipeline needs all of it.

    CategoryComfyui-indextts25-xzg/IndexTTS 2.5

    Inputs (1)

    NameTypeDefaultDescription
    modeCOMBOtext loads an additional Qwen emotion model on demand.

    Outputs (1)

    NameTypeDescription
    Emotion ControlXZG_INDEXTTS25_EMOTION