Nodes/comfyui_AcademiaSD/AcademiaSD H3 RefMod Character
ComfyUI Node

AcademiaSD H3 RefMod Character

AcademiaSD H3 RefMod Character

By AcademiaSD·Created about a year ago·Updated 5 days ago· 100
AcademiaSD H3 RefMod Character
  • characters
  • vae
  • characters
  • preview
  • info
◄visual_refmod▾►
◄audio_refmod▾►
◄name►
◄appearance►
◄voice_description►
◄visual_strength1.00►
◄audio_strength1.00►
◄bind_voicefalse►
◄show_previewtrue►
◄audio_max_seconds0.0►

MiniMax H3 is the 33B omni-modal video model that generates picture and stereo audio in one pass - music, effects and dialogue out of the same sampler. That's why its reference mods (RefMods) are appealing, and why using more than one is a mess.

Two specific characters in one shot is the classic failure: the model averages their faces, clones the better-known one, hands the wrong voice to the wrong mouth. On H3 there's a specific reason. A classic RefMod is attached to the conditioning after text encoding, so the DiT attends its latents but Qwen - the text encoder - never sees the subject. With one RefMod that's fine; with three, nothing says which is which, and the prompt can't help, because <Video 1> isn't a label that exists in the sequence. This node is one character, and it makes that character something the text encoder can name.

What it does

You load one character: a visual RefMod, its voice, and the few words that distinguish it from the others. Chain them - each node takes the previous node's characters output - and the last in the chain goes into AcademiaSD H3 RefMod Encode, where the labelled references and the prompt meet.

The names are the point. Give the character a name and cite it in the Encode prompt as @Name, which resolves to a native <Subject n> Name - a label that survives reordering. Hand-writing <Audio 1> does not: those numbers follow character order, so drag one to a new position and your prompt is now asking the model to swap voices.

The inputs that matter

  • visual_refmod / audio_refmod - the picture and the voice. audio_refmod defaults to (auto), which takes the bundle's own audio or the sibling name_audio file LoRAlab writes, so with a current RefMod you set nothing. Any RefMod works, old or new, from any pack: they're read from ComfyUI/models/refmods (the pack also checks mods/ and audio_refmods/, the same places ComfyUI-MiniMaxH3Mod uses).
  • name, appearance, voice_description - name the character; write what sets them apart from the others ("oval face, red hair", not "a woman"); describe the timbre ("low, husky, smooth"). No negatives: H3 is distilled and ignores them.
  • audio_max_seconds - trims the voice to its first N seconds, 0 for all of it. The longest voice tends to win and leak into the others, so matching voice lengths is the cheapest fix for voice bleed. The trim is a contiguous slice of the audio latents at 40 per second, never a resample - a resampled audio latent doesn't sound shorter, it sounds wrong.
  • visual_strength / audio_strength - 0 switches that side off; it shows as off in the token panel.
  • show_preview - draws the subject's first encoded picture. RefMods from LoRAlab Trainer Studio carry source JPEGs inside the file, so the preview is free; older latents-only ones need the H3 video vae.

Outputs are characters (chain it, or feed the Encode node), preview (IMAGE) and info (STRING). The experimental bind_voice toggle puts face and voice in one native video_audio block, the way H3 saw them together in training - off by default, and unvalidated by the author's own description, since that block claims picture n goes with audio instant n and a RefMod is a pile of stills.

Under the picture, a token panel appears after each run with the visual and audio tokens this character adds to the DiT sequence and the running chain total up to this node. Reference tokens are paid on every sampling step; when a render gets suddenly slow, that's the number to look at.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/AcademiaSD/comfyui_AcademiaSD
# restart ComfyUI

Or search comfyui_AcademiaSD in ComfyUI Manager. No pip dependencies. You do need a ComfyUI build with native MiniMax H3 (comfy_extras/nodes_minimax_h3) - the pack imports it lazily inside the node functions, so an older install loads the node and only fails when you queue. Beyond that: the H3 weights, the video VAE, and RefMods of your own from LoRAlab Trainer Studio or another RefMod tool. RefMod files go in ComfyUI/models/refmods.

The bit to read before you plan a dialogue scene

The README's own warning, and the most useful line in it: in their tests with two characters and two audio RefMods, the voices came out swapped in most configurations - consistently per configuration, not per seed. Several faces in one shot, yes. Dialogue with two speakers in one shot, not reliably. One speaker per shot is the safe version for now.

Two smaller traps. Selecting (none) on both the visual and audio RefMod raises a plain "select a visual or an audio RefMod" error - the node needs at least one. And "RefMod 'x' has no stored pictures" means the file predates the LoRAlab change that started keeping JPEGs next to the latents: connect the video VAE, or regenerate it.

CategoryAcademiaSD/MiniMax H3

Inputs (12)

NameTypeDefaultDescription
visual_refmodCOMBORefMod visual del personaje (o un bundle con visual + audio). Sirven los antiguos y los de cualquier pack. Visual RefMod of the character, or a bundle with visual + audio.
audio_refmodCOMBO(auto): el audio del bundle o el fichero hermano 'nombre_audio' que escribe LoRAlab. / (auto): the bundle's audio or the sibling 'name_audio' file.
nameSTRINGNombre del personaje. Vacio = el del fichero. Usa @Nombre en el prompt. Character name; empty = file name. Write @Name in the prompt.
appearanceSTRINGLo que lo DIFERENCIA de los demas personajes (p.ej. 'oval face, red hair'). Sin negaciones: H3 es destilado y las ignora. What sets them apart from the others. No negatives.
voice_descriptionSTRINGTimbre de la voz, p.ej. 'low, husky, smooth'. / Voice timbre.
visual_strengthFLOAT1.000–1—
audio_strengthFLOAT1.000–1—
bind_voiceBOOLEANfalseEXPERIMENTAL. Ata la voz a la cara en un bloque video_audio nativo (mismo origen temporal) en vez de dejarla como referencia de audio suelta. Ojo: ese bloque dice que el fotograma n va con el instante n del audio, y con fotos sueltas no es cierto. Pruebalo con la misma semilla con y sin. EXPERIMENTAL. One native video_audio block for voice + face. Compare same seed on/off.
show_previewBOOLEANtrueMuestra la primera imagen codificada del sujeto. Los RefMods antiguos necesitan el VAE conectado. Show the subject's first encoded picture; older RefMods need the VAE.
audio_max_secondsFLOAT0.00–120Recorta la voz a sus primeros N segundos (0 = entera). Iguala la duracion de las voces de todos los personajes: la mas larga tiende a imponerse y a colarse en los demas. Trim the voice to its first N seconds (0 = all). Keep every character's voice the same length.
charactersoptASD_H3_CHARACTERSEncadena personajes anteriores. / Chain previous characters.
vaeoptVAEVAE de video de H3, solo para la vista previa de RefMods antiguos.

Outputs (3)

NameTypeDescription
charactersASD_H3_CHARACTERS—
previewIMAGE—
infoSTRING—