Nodes/comfyui-indextts25-t8/IndexTTS 2.5 情感控制 · T8star-Aix
ComfyUI Node

IndexTTS 2.5 情感控制 · T8star-Aix

Four ways to make IndexTTS 2.5 say it angry

By T8mars·Created 14 days ago·Updated a day ago· 25
IndexTTS 2.5 情感控制 · T8star-Aix
    • 情感控制
    • 情感信息
    mode

    Most open TTS models let you clone a voice and then just... hope. IndexTTS 2.5 is one of the few where you get actual levers on how it speaks, and this node is the control panel. It outputs an T8_INDEXTTS25_EMOTION value that you feed into the Generate node's optional emotion input - leave that input unconnected and the generated audio just follows whatever emotion is baked into the reference clip.

    The four modes

    The mode dropdown switches between the official emotion control paths, and they're a real ladder of effort versus control:

    • Follow the reference (speaker) - the cheapest path, zero extra model loads, and the default feeling of the whole pack. The voice's natural mood from your reference audio carries through.
    • Emotion reference audio - a second, separate audio clip whose emotion gets extracted and applied. Useful when your clean 3–10 second voice sample is neutral but you have a moody sample lying around.
    • Eight-dimensional emotion vector - the fun one. You dial in a vector covering the model's eight axes (happy, angry, sad, fear, disgust, down, surprised, natural). Want "60% sad + 40% angry"? Set both in this mode. Note the README's explicit warning: if you're doing multi-role work, each role's emotion is merged per-role - the "merge" node for role libraries does not blend vectors across characters into one new mood.
    • Text emotion description - natural-language emotion prompting, which loads an on-demand Qwen emotion model onto the same inference device. This is the only mode that adds a model load, so it's the slowest and the one that eats extra VRAM. On low-memory machines the pack runs text emotion analysis first, then frees QwenEmotion before synthesis starts.

    What you actually set

    Really just mode. Everything else is either wired in (optional emotion inputs on Generate, or per-role on the Voice Profile node) or read back. The outputs are 情感控制 (the emotion value to pass along) and 情感信息 - a string that tells you which mode and model were used, which is handy when you're chasing down why an emotion didn't land.

    Honest takes

    Text-emotion is the most impressive mode and the most over-hyped one in practice: for a sentence like "she slammed the door," a vector or a good reference clip gets you 90% of the way there with less setup and no extra model. Reach for text description when you want emotion that's scriptable - dialogue where each line needs a different mood and you'd rather write "whispering, anxious" than babysit vectors.

    Also worth knowing: this node pairs with the pack's multi-role flow. Give each character their own emotion control feeding their own voice profile, and every line picks up that character's saved emotion without leaking into the others. The setup graph in the README (emotion A → voice A, emotion B → voice B, both into the role library) is the intended shape, and example workflow 23_multi_role_emotions.json shows it fully wired.

    Gotchas

    The mode field is a dynamic combo (COMFY_DYNAMICCOMBO_V3), so the exact set of options depends on what the loaded core supports - if an option is missing, that's the pinned core not exposing it, not you doing something wrong. And if your machine is under 10GB VRAM, prefer the non-text modes: the extra Qwen load is exactly the thing the low-memory strategy tries to shed before synthesis.

    CategoryT8star-Aix/Audio/IndexTTS 2.5

    Inputs (1)

    NameTypeDefaultDescription
    modeCOMBOspeaker 最省显存;text 会按需加载额外的 Qwen 情感模型。

    Outputs (2)

    NameTypeDescription
    情感控制T8_INDEXTTS25_EMOTION
    情感信息STRING