MiniMax H3 人物乱说话、胡言乱语?问题出在台词写法,附 7 个修法
你给角色写好了一句台词。视频出来,嘴在动,声音也像真人,可一个字都听不懂。也可能台词对了,开头却先冒出半秒含混的杂音;或者台词说完了,人物还在接着说。这是大家对 MiniMax H3 原生音频抱怨最多的问题,而多数时候不是模型不行,是提示词没按它的对白语法来写。
✦ 试试 MiniMax H3 Unlimited
H3 乱说话,常见的有五种
H3 的画面和立体声是一次同步生成的,所以台词一出错,错得还特别像那么回事:节奏、换气、口型全都有,就是没有字。用户反馈的情况基本能归成五种。先认清自己碰到的是哪一种,每种修法都不一样。
H3 上线没几周,规律就很清楚了。一位早期测试者总结得很到位:没写明对白的提示词「有时会出来一堆胡言乱语」;而把每个角色说什么、什么时候说、怎么说都写清楚,「不光台词准了,连语气、环境音和节奏这些细节也都对了」(cocktailpeanut 在 X 上的帖子)。8 月 12 日,Hugging Face 上有人开了一个讨论帖,十来位用户在里面说碰到了同一个问题:视频一开头先冒出一阵杂音。汇总 Reddit 反馈的文章则列出了「没要台词却自己加台词」「台词安到了别人身上」「拿胡言乱语把空着的音轨填满」这几条(Leadde 的汇总)。
| 症状 | 你听到的是 |
|---|---|
| 台词含糊不清 | 有你那句台词的节奏,但听不出是哪几个字。 |
| 开头半秒的杂音 | 正式台词开始前,先有大约半秒含混的声音。 |
| 台词说完还在自己往下编 | 台词没错,可说完之后人物还接着说,说的全是编出来的词。 |
| 把表演说明当台词念出来 | 你写的表演说明(「温暖、自信的声音……」)被当成台词念了出来。 |
| 台词安错了人 | 你的台词从另一个角色嘴里说了出来。 |
原因:台词没放进 H3 的对白标记
H3 训练时用了一对专门的标记来框住台词:<d> 开始,</d> 结束。标记里面的字会被当成台词逐字念出来,标记外面的都算描述。所以提示词写「她说自己刚收到这个杯子、真的太喜欢了」,模型读到的是一段「有人在说话」的描述,生成的也正是这个:一个人在说话,发音全靠它自己编。听着像说话,是因为它学的就是人说话;听不出字,是因为根本没人告诉它该说哪几个字。
我们在自己的 H3 环境里做了个对照:只改这一句台词的写法,种子和其他设置都不动,结果交给 Whisper 转写,不靠耳朵判断。测试用的是中文台词,不过这个问题不分语言。
| 台词怎么写 | 语音识别听到的 |
|---|---|
| 叙述版:她说自己刚收到这个杯子、真的太喜欢了 | 识别结果:自己刚收到这个衣服来补真的太喜欢了。「杯子」变成了「衣服」,多出两个字,开头的词也被吞了 |
| 标记版:(S1) says: <d>[中文] 我刚收到这个杯子,真的太喜欢了。</d> | 逐字命中,一字不差 |
把官方对白语法拆开来看
这套规则写在 MiniMax 2026 年 8 月 10 日前后发布的官方提示词指南里(GitHub 上的 h3-prompt-writing)。最关键的一句是:说话人的身份描述、编号、动作和说话方式都写在 <d> 外面,<d> 里面只放语言标签和用户给的台词原文。官方自己的例子是:The young woman with a quiet, breathy voice (S1) says: <d>[English] I get off at the next station.</d>(大意:一个声音轻柔、带点气声的年轻女子 (S1) 说:「我下一站下车。」)
顺序是固定的,每一部分管一件事。少写一样,就会碰上前面说的某一种症状。
| 部分 | 例子 | 防的是什么 |
|---|---|---|
| 声音描述 | The young woman with a quiet, breathy voice | 镜头一换,声音也跟着变。角色第一次开口时,就写清年龄、音高、音色和语速。 |
| 说话人编号 | (S1) | 台词安错了人。每个角色在所有镜头里都用同一个编号;两人齐声说用 (S1,S2)。 |
| 动词 | says: | 分不清这是说话、唱歌还是画外音。 |
| 开标记 + 语言 | <d>[English] | 台词含糊不清。语言标签紧跟在开标记后面。 |
| 台词原文 | I get off at the next station. | 台词被转述走样。别翻译、别改写,标点照留。 |
| 闭标记 | </d> | 台词说完还在自己往下编。 |
七个修法,按症状对号入座
从上往下排查。前两条就能解决大多数视频的问题;最后一条是模型自己的已知毛病,不怪提示词。
其中两条来自我们自己的测试,很容易漏掉。</d> 后面紧跟着写的东西,会被当成台词的延续:有一次我们把声音描述写在了闭标记后面,视频就把这段描述一字不差地念了出来。还有,视频长、台词短,模型会自己找话说:15 秒的视频只给一句 5 秒的台词,剩下 10 秒它就得找点什么来说,常常是从提示词里就近抓几个词。要么写够台词把时间填满,要么明确写出哪几秒不说话。
| 症状 | 常见原因 | 修法 |
|---|---|---|
| 台词含糊不清 | 台词用叙述写,或者只加了普通引号 | 套上标记:(S1) says: <d>[中文] …</d> |
| 把表演说明当台词念出来 | 声音或动作描述写在了 </d> 后面 | 把声音描述和动作挪到「says:」前面,或者另起一个带时间点的段落。 |
| 台词说完还在自己往下编 | 台词比视频短太多,或者没写声音 | 多写几句台词,或者写明「0:11–0:15 she stops talking and just looks at the camera」(她不再说话,只看着镜头)。把环境音写出来,安静的那几秒就不会空着。 |
| 台词安错了人 | 没有说话人编号,或者一个镜头里两张脸同时在说 | 每个开口的角色都给一个固定的 (S1)/(S2)。一个镜头只让一个人说话,并且正对镜头。 |
| 口型对不上 | 说台词时人物侧着脸,或者脸在画面里太小 | 先正脸、露出嘴巴把话说完,动作放到后面,不出声地做。 |
| 台词被改了 | 台词被翻译或改写过,或者语言标签对不上 | 台词写成你想听到的原样,配上对应的 [English] / [中文] 标签。 |
| 开头半秒的杂音 | 跟种子有关的模型毛病 | 在标记里用句号收尾,把环境音写出来,声音参考控制在 4 秒左右——还不行就换个种子。 |
同一条提示词,改写前后对比
下面是一条常见的商品短视频提示词初稿,和按 H3 写法改过的版本。画面内容一点没变,改的只是台词、说话人和不说话的那几秒怎么写。改写版照官方做法:正文用英文,台词保留中文,标上 [中文]。
改写前:一个穿奶油色毛衣的年轻女孩坐在书桌前,举起一个陶瓷马克杯,开心地对着镜头说她刚收到这个杯子、很喜欢它的手感,然后喝了一口。
改写后:[Shot 1] Live-action, a waist-up shot of a woman in her mid-twenties in a cream knit sweater at a sunlit desk, facing the camera. She lifts a matte ceramic mug to chest height and, in a bright, unhurried mid-range voice, (S1) says: <d>[中文] 这个杯子我刚到手,手感真的太好了。</d> [Shot 2] At 00:04.000, a close-up of her hands turning the mug; she takes a slow sip, silently, and smiles at the lens. Ambient sound: a quiet room, the soft knock of ceramic on wood, one sip. No background music.
还要注意改写版没做什么:它没有替她多加一句原稿里没有的台词。如果你的提示词里压根没有对白,老老实实写上「no dialogue」就行,别硬编几句。
用标记还是直接加引号?社区说法不一
也有人持相反意见。r/StableDiffusion 上有人发了并排对比,结论是直接加引号的台词比加标记的更干净,还有人在评论里说引号「远没有 <d></d> 标记那么多 bug」(AIReiter 的整理)。Hugging Face 那个讨论帖里,有一位用户改用引号后,开头的杂音没了;另外几位试过却说不稳定,得看种子。
我们的看法是:标记是模型训练时用的写法,官方指南也要求用它;在我们的对照测试里,用不用它,就是能说出字和只出一串噪音的区别。先用 <d> 标记。如果某一条视频反复说不清,先把那一句改成普通引号重跑,别急着重写整条提示词——而且每次只改一处,不然你没法知道到底是哪一处起了作用。
或者按一下 ✦ 增强,让它替你套语法
说话人编号放在哪、语言标签用哪个、闭标记后面不能再跟东西——这类琐碎的事,本来就该交给工具。HelloGen 的视频生成器里有个 ✦ 增强 按钮,会按你选的模型改写提示词;选 MiniMax H3 时,它依据的就是本文讲的这份 H3 提示词指南,对白规则也在里面。
想法怎么说就怎么写,比如「她对着镜头说:这个杯子我刚到手,手感真的太好了」,增强会把台词放进 H3 的标记里,加上说话人编号和语言标签,把声音描述放到「says:」前面,再补上分镜和环境音。它守三条规矩:你写的台词一字不改,绝不添一句你没写的台词,文字和参考图对不上时,以你的文字为准。换成别的模型,它就改用那个模型自己的对白写法,不套 H3 的。
增强一次 2 积分,成功才扣;没成功,你的提示词原样不动。点一下「查看原文」就能对比,看完再生成。另外,HelloGen 的 Pro 和 Max 套餐都包含 MiniMax H3 Unlimited,每条 0 积分——修台词免不了反复生成、试听、再改,每试一次都不用另外花钱。
参考资料
本文用到的资料如下。
- GitHub 上的 MiniMax-H3 skills——官方 h3-prompt-writing 指南和它的英文参考文档,<d> 语法、说话人编号、语言标签和画外音规则都出自这里。
- Hugging Face:「Weird gibberish / clipped voice at the very start of H3 videos」——开头半秒杂音的讨论帖,以及社区的应对办法。
- cocktailpeanut 在 X 上的帖子——最早指出:把对白写明,台词就能说清楚。
- Leadde:MiniMax H3 Reddit review 和 AIReiter:MiniMax H3 prompt review——Reddit 反馈的汇总,包括标记和引号的对比测试。
- Whisper 转写对照,以及「</d> 后面」和「台词太短」这两条发现,来自 HelloGen 2026 年 9 月在 H3 上的自测。
想自己部署这个模型,可以看我们的 MiniMax H3 本地部署指南。
常见问题
MiniMax H3 生成的人物为什么会胡言乱语?
多半是因为台词用叙述或描述的方式写了。H3 训练时用了专门的对白标记 <d> 和 </d>:标记里的字逐字念出来,标记外的都当描述,所以模型只能自己编一串像说话的声音,念不出你的台词。
MiniMax H3 的对白正确写法是什么?
依次写声音描述、说话人编号、动词,再把台词连同语言标签放进标记里,例如:The young woman with a quiet, breathy voice (S1) says: <d>[English] I get off at the next station.</d> 同一个角色在每个镜头里都用同一个编号。
H3 为什么会说出我没写的话?
视频长、台词短,空出来的几秒模型会自己填;紧跟在 </d> 后面的文字也会被当成台词的一部分。要么写够台词把视频填满,要么写明哪几秒不说话;把环境音写出来;所有说明都放在「says:」前面。
H3 视频开头那半秒杂音怎么去掉?
这是跟种子有关的毛病,官方暂时没有修复。社区的办法是:在标记里用句号收尾,写出环境音别让音轨空着,声音参考控制在 4 秒左右,再换个种子重抽。也有用户改用普通引号后就好了。
H3 写台词,用 <d> 标记还是直接加引号?
先用 <d> 标记——这是官方规定、模型训练时用的写法,在我们的对照测试里,它把一串噪音变成了一字不差的台词。如果某一条反复说不清,就只把那一句改成普通引号试试,其他都别动。
有工具能帮我写 H3 的对白语法吗?
有。HelloGen 的 ✦ 增强会按你选的模型改写视频提示词;选 H3 时,它会把台词放进对白标记,加上说话人编号和语言标签,台词一字不改,也绝不添你没写的对白。增强一次 2 积分,成功才扣。