Two-Person Dialogue in MiniMax H3: Fix the Wrong Character Speaking and Burned-In Subtitles
Save each speaker as a character with their own voice, then write the lines yourself, one per speaker in speaking order, with --line "Name:action=text", so the model knows whose mouth moves. Keep the camera on whoever is talking, describe the scene in full (shot size, set dressing, lighting, positions, clothes) and end on a silent action after the last line: that is what stops the lines appearing as burned-in subtitles. Writing "no subtitles" doesn't work.
Why the wrong person speaks
MiniMax H3 generates the picture and the sound together. With two faces in frame and a line that isn't tied to anyone, the model has to guess which mouth should move, and it guesses wrong often enough to ruin a scene: the listener mouths the words, both people talk at once, or the line comes out in the other person's voice. The same applies to the Hailuo app and to most AI video models that generate dialogue.
Three things fix most of it: give each speaker a distinct identity and voice, tell the model exactly who says which line, and frame the shot so the speaker is the obvious one to talk.
Step 1: Make each speaker a character with a voice
A character holds a few face photos and a voice. Every speaker needs a voice; a character without one can be on screen but can't talk. Make the two voices differ in at least two of age, timbre and pace, so viewers can tell them apart even when the picture is ambiguous.
h3 character create --name Mia \
--photo front=mia_front.jpg --photo three_quarter_left=mia_left.jpg \
--description "a woman in her late twenties with shoulder-length black hair" \
--voice-description "a woman around 28, warm and slightly breathy, mid-low pitch, medium pace, relaxed tone" \
--language English
h3 character create --name Wang \
--photo front=wang_front.jpg --photo side=wang_side.jpg \
--description "a man in his forties with short grey hair and a beard" \
--voice-description "a man in his forties, deep and slightly husky, low pitch, slow pace, gentle tone" \
--language EnglishListen to each voice before you shoot (h3 character voice Mia gives a link). More on photos and voices in character consistency.
Step 2: Write one line per speaker, in order
Pass each line with --line, in speaking order: --line "Name=text", or --line "Name:action=text" to say what the character does while speaking. This is the single most effective fix: the platform ties each line to that character's face and voice.
h3 submit --mode ref2v --aspect 16:9 --seconds 8 \
--character Mia --character Wang \
--prompt "A medium shot frames a small kitchen at night, warm light from a pendant lamp over a wooden table. Wang, in a dark blue sweater, stands at the stove stirring a pot; Mia, in a grey hoodie, sits at the table with a laptop. The camera holds a static shot." \
--line "Mia:looks up from the laptop=Is dinner ready yet?" \
--line "Wang:turns from the stove and smiles=Five more minutes." \
--wait --out ./out- At most 3 speakers and 10 lines per shot.
- Write the action without a subject:
turns from the stove and smiles, nothe turns…. - End every line with a full stop or other closing punctuation, or the speaker tends to keep mumbling.
- You can also put lines in quotes in the prompt with the speaker's name before them, and the platform splits them out. Splitting them yourself with
--lineis more accurate.
Step 3: Put the camera on whoever is speaking
- Frame the speaker. A speaker facing the camera with the listener in profile or from behind leaves little room for doubt. Two frontal faces side by side is the hardest case.
- Tie lines to actions, not time points. "Mia looks up and asks…" works better than "at 3 seconds Mia says…".
- Give the listener something silent to do: listening, nodding, stirring a pot. Outside the lines, avoid words like talk, chat or argue, or extra voices appear.
- For an important exchange, shoot it as separate shots: one clip per line, each framed on its speaker, then join them. This is how film dialogue is cut anyway, and it removes the guesswork. See longer videos for joining clips. Even a one-line clip sometimes cuts to the listener on its own, so check every clip.
- Watch for unrequested close-ups. In our tests, the usual way a line lands on the wrong person was not a mouth swap: the model cut on its own to a close-up of someone who wasn't speaking, sometimes that character's reference photo pasted in whole, and the next line played over it. Two people in a static two-shot rarely had this problem; three people at one table had it in more than half of the takes.
- Three people in one shot: give each a position. Add
--positionfor every character (--position Mia=the young woman on the left); the prompt then introduces everyone by position, names each speaker by position, puts the lines in order and has the speaker's lips close after each line while the others listen. At our three-person dinner table, the same seeds put 36 of 40 lines on the right mouth with positions and 32 of 40 without. In the web studio, fill in the position box (站在哪) under each picked character. Details in the characters reference, section 6.
Why lines show up as subtitles, and how to stop it
Sometimes the model burns the dialogue into the picture as captions. We tested this on two-person dialogue: with a scene of only a sentence or two, the lines often appeared as subtitles; with the scene written in full and a closing action after the last line, they didn't.
- Describe the scene in full: shot size and camera position, the location and set dressing, the lighting, where each person is, what they wear and what they are doing before they speak.
- After the last line, add a silent closing action, such as
Mia closes the laptop and stands up. - In a free shot (
ref2v) with lines, the platform expands a short scene and adds a closing action for you, but what it adds may not be what you want; writing it yourself is safest. - Don't write "no subtitles" or "no text". There is no negative prompt in MiniMax H3, and naming the thing tends to pull it in.
- If subtitles still appear, resubmit with a different
--seed, or crop or cover them in editing.
Fit the lines to the duration
Lines that are too long for the clip make mouths race and words blur. For Chinese, keep to about 7 characters per second; for English, a short sentence per speaker in an 8-second shot is plenty. If the conversation is longer, split it across shots rather than packing one clip.
Dialogue from your own first frame
If you already have an image of the two people, use image-to-video with both characters and the same --line flags. The first frame sets the scene, so the platform doesn't expand it; describe the action and camera yourself.
h3 submit --mode i2v --first-frame kitchen.png --aspect 16:9 --seconds 8 \
--character Mia=front,three_quarter_left --character Wang=front,side \
--prompt "Mia sits at the kitchen table with her laptop while Wang stands at the stove. The camera pushes in with small amplitude at slow speed toward Mia. After the last line, Wang turns back to the stove and keeps stirring." \
--line "Mia:looks up from the laptop=Is dinner ready yet?" \
--line "Wang:glances over his shoulder=Five more minutes." \
--wait --out ./outFor full control over who says what and when, including voice-over, you can write the complete MiniMax H3 prompt yourself with --raw; the format is in the prompting reference.
Quick fixes
| Symptom | Fix |
|---|---|
| The listener mouths the line | Use --line with the speaker's name; frame the speaker facing the camera and the listener in profile |
| The camera cuts to someone who isn't speaking while a line plays | Make two takes (--segments 2) and pick; three people: a --position for each; else another seed |
| Both people talk at once | One line per --line, in order; give the listener a silent action |
| The line comes out in the wrong voice | Make sure each speaker is a character with a voice, and that the voices differ in age, timbre or pace |
| Lines appear as subtitles | Describe the scene in full and add a closing action after the last line; then try another seed |
| Mouths race, words blur | Shorten the lines or lengthen the shot |
| Extra voices or mumbling | No speech words outside the lines; end every line with a full stop |
What it costs
Characters, voices and lines add nothing to the price; voice auditions are free, 20 per day. Video is billed per second: $0.009 at night (22:00–10:00 Singapore Time) and $0.0135 during the day. For an important dialogue shot, generate two takes (--segments 2, double credits) and pick the one where the right mouth moves.
Videos, songs and uploaded files are kept for 8 hours after the job ends, then deleted automatically. Please download them in time.
FAQ
Why does the wrong character talk in my AI video?
Because the model generates sound and picture together and has to guess which mouth goes with each line. Tell it: make each speaker a character with a voice, pass each line with the speaker's name, and frame the speaker so they're the obvious one talking.
How many people can speak in one MiniMax H3 shot?
Up to 3 speakers and 10 lines per shot on XXT. Two speakers is the most reliable; for longer exchanges, split them across shots.
How do I stop AI video from adding subtitles to dialogue?
Describe the scene in full and end with a silent action after the last line. Writing "no subtitles" doesn't help. If captions still appear, try another seed.
Can the two characters speak different languages?
Yes. Each line is kept word for word, never translated, and tagged with the language it is written in: Chinese, Japanese, Korean or English. Set each character's speaking language with --language when you create it.