Nodes/MiniMax H3 Audio T8/MiniMax H3 Speech Performance Direction / 演绎控制 (EXP/T8)
ComfyUI Node

MiniMax H3 Speech Performance Direction / 演绎控制 (EXP/T8)

Emotion, pace, pitch — with the honest caveat that none of it is calibrated

By T8mars·Created 20 days ago·Updated a day ago· 807
MiniMax H3 Speech Performance Direction / 演绎控制 (EXP/T8)
  • speech_plan
  • speech_plan
  • report_json
segment_index-1
emotionneutral
prompt_intensity0.50
pacenatural
pitchnatural
energynatural
nonverbal_direction

So you've got an H3 speech plan with the right words. Now you want it performed - a colder read for the villain line, a faster delivery in the montage, a whisper that sells the reveal. That's exactly what MiniMaxH3SpeechPerformanceT8 exists for. It takes a speech_plan and adds emotion, pace, pitch, energy and free-form nonverbal direction onto it, then hands you back a richer speech_plan for the rest of the chain. It's the "director's notes" layer, and the pack is refreshingly honest that it's also the least trustworthy layer.

How it works

Unlike a TTS engine with a real pitch-slider under the hood, H3 generates speech inside a joint audio-video diffusion pass. This node can't reach in and bend the vocal folds - it writes acting direction into the plan's prompt, the same way a film director writes "slower, colder" in the margin of a script. Every field becomes prose the model reads. That's why the output is a modified speech plan rather than audio: the performance only materializes once you feed that plan through the conditioning → sampler → decode chain.

The inputs that matter

  • segment_index - defaults to -1, which applies the direction to every segment in the plan. Set a specific index to direct one chunk while leaving the others alone. This is your main workflow tool for long-form: render once, then re-direct just the segment that missed.
  • emotion (a free text string, default "neutral") and prompt_intensity (0–1) - the emotional color and how hard to push it.
  • pace, pitch, energy - each a five-step combo: very_slowvery_fast for pace, very_lowvery_high for pitch, restrainedintense for energy. Natural is the middle.
  • nonverbal_direction - free text for the stuff words can't carry: "inhale sharply before the line", "trail off at the end", "a breathy half-laugh". This is the one that genuinely unlocks a take.

Outputs: the patched speech_plan (straight into conditioning/studio) and a report_json describing what direction was applied where.

The honest caveat, straight from the author

The node's own description says these "model controls remain uncalibrated and are reported as such." Read that as: very_fast is not guaranteed to be twice as fast, and high pitch may shift tone more than pitch. Treat this as prompt-direction with a vocabulary, not automation. If you need exact timing, the pack has an ADR fit node for nailing sample counts; this node is for feel.

Installing and using it

Same pack, same one-time install: search "MiniMax H3 Audio T8" in ComfyUI Manager, or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 into custom_nodes and restart. No extra pip packages, no API keys - this is all local inference on your own H3 weights (which, remember, the pack won't download for you, and the H3 license is region-restricted). Because it's experimental, budget for a couple of dead takes while you learn what the pace/pitch words actually do on your voice profile - that's normal, and the report_json tells you exactly what direction got injected so you can tweak the wording rather than the whole plan.

CategoryT8/MiniMax H3/Speech/Experimental

Inputs (8)

NameTypeDefaultDescription
speech_planH3_T8_SPEECH_PLAN
segment_indexINT-1-1–9999-1 applies to all segments.
emotionSTRINGneutral
prompt_intensityFLOAT0.500–1
paceCOMBOnatural5 options: very_slow, slow, natural, fast, very_fast
pitchCOMBOnatural5 options: very_low, low, natural, high, very_high
energyCOMBOnatural5 options: restrained, low, natural, high, intense
nonverbal_directionSTRING

Outputs (2)

NameTypeDescription
speech_planH3_T8_SPEECH_PLAN
report_jsonSTRING