Is there a way to add audio to silent videos (like, from Wan2.2) using Minimax H3?
What the title says.. i know there was a way to do it using LTX2.3, so I wonder if H3 has a similar feature.
What the title says.. i know there was a way to do it using LTX2.3, so I wonder if H3 has a similar feature.
Hello everyone
Want to get faster MiniMax H3 video generation without sacrificing quality? In this tutorial, I’m testing the new H3 LoRA together with Sage Attention, Sol Attention, and Spectrum nodes to find the best combination for speed and quality. The goal is to push MiniMax H3 as far as possible while cutting generation times by up to 2×, then upscale the results with LTX Upscaler to reach a stunning 2432 × 1344 (2K-class) resolution. By combining both H3 LoRA together with Sage Attention, Sol Attention, and Spectrum nodes I generated video at 0.8 megapixel using "**RTX3060 6GB 16GB RAM "**and I got
13 minutes vs 41 minutes at 8 steps
27 minutes vs 52 minutes at 20 steps
LTX 2.3 Upscaler 11 minutes to get 2432 × 1344 resolution
Workflow link
Video Tutorial link
This is a generative re-render, not restoration or sharpening. It invents fine detail. In every test with one person it added freckles that weren't there.
The comparisons use MiniMax H3 clips at 640x384, 10 seconds long, upscaled 2x. They're Lanczos versus ReDetail at the same output size, so there isn't any bigger image sleight of hand.
On a motocross clip it redrew the jersey graphic and number plate. The new markings stayed fairly stable between frames, but they weren't the original markings. Logos, numbers and text are all fair game.
If reddit compresses this video to the afterlife again, see: https://civitai.com/models/2857731/redetail-ltx-25-generative-video-upscaler-workflow-cli
So it's useful for AI-generated or generally soft footage, where there isn't much real detail to recover. It's a bad fit if a face, label or logo has to be 100%.
I like 1.5x, not 2x. On one clip, 243 frames from 768x1408, 1.5x took 7 minutes and peaked at 65GB. 2x took 17 minutes and 80.5GB. The 2x result carries maybe more detail, but check between the two and it's hard to tell imo. On skin most of that extra is invented, not recovered. Faster render, less made up texture.
UPDATE! NOW WITH CACHED CONDITIONING
The text encoder is now optional. The graph runs with empty prompts, so its conditioning is a constant. It ships pre-computed at 26KB, which skips the 15GB download and takes peak VRAM from 30.4GB to 24.8GB on a 5090.
There's a Mac build in there now too, ReDetail_LTX25_upscale_MAC.json. It runs the GGUF transformer with no text encoder at all (the cached conditioning replaces it), so it's about 17GB of models total. On an M5 it did 33 frames from 640x384 to 1280x768 in 4.4 minutes. Per frame megapixel that's roughly 6x slower than a 5090, not the 30x I was expecting, so a 10s clip lands around 34 min at 2x or 19 min at 1.5x. Quality holds.
Workflow: https://drive.google.com/file/d/1B4kODxXQgJ1QOKRsEIkxHbgYmdruPpTK/view?usp=sharing
I made this experimental short scene using ComfyUI.
I generated the characters and backgrounds using the Krea 2 open-weight model with a Turbo LoRA, then animated them using MiniMax H3 with a reference-to-video workflow. With the Turbo LoRA, each 5-second clip took around 2–3 minutes to generate.
I edited everything in CapCut, added some color grading, bloom, and film grain, and it all came together nicely.
For the lo-fi track, I produced it on the Maschine MK3 using a free sample pack.
There always appears to be something missing from comfy templates. I don't see a spot to add a reference video or audio? And had to figure out that you have to duplicate image ones and connect them to get up to 9... Totally confused where to input the reference video. Load video node doesn't connect.
I have been working on this last week.
• What is this node ?
- One node with different MiniMaxH3 workflows.
• What its for ?
- If you hate spaghetti and hate doing workflows and dealing with errors.
I’ve been working on a custom MiniMax H3 node for ComfyUI called **MiniMax H3 Motion Director**.
And to describe it accurately:
Yes, it is kind of a Frankenstein node.
Instead of pretending everything was invented from scratch, I basically took several H3-related ideas/projects that I liked, stitched the useful parts together, modified them, and then built a larger multi-segment Director around them.
The main “body parts” are:
* **AIMixer / ComfyUI_MiniMaxH3_Director**
The original Director project and one of the main foundations this project grew from.
* **NikoDemon80 / ComfyUI-H3-Motion-Context**
Motion Context / H3 runtime continuity work. This is integrated and modified directly inside the Director, so you should not load the standalone Motion Context node at the same time.
* **Carasibana / ComfyUI-H3-FaceRefine**
Face tracking, cropping, per-frame denoising, latent injection and stitching algorithms were adapted from this project.
* **Kijai / ComfyUI-KJNodes**
Some packed-latent preview normalization and temporal TAEHV decoder behavior were adapted/informed by KJNodes.
Then I started adding the parts I wanted for actually managing a longer H3 project instead of treating every generation as an isolated clip.
That eventually turned into this:
* T2V / I2V / FL2V / R2V / V2V / RV2V
* Multi-segment timeline
* Independent Prompt and assets per segment
* Selective rerun — regenerate only the failed segments
* Motion Context between segments
* Context Frames
* Latent Scale Lock
* Continue Generated Audio
* Color Re-anchor
* V2V / RV2V Source Bridge
* Shared/public assets
* Persistent material library
* External `SAMPLER` + `SIGMAS`
* Global Refine
* Integrated Face Refine
* Director-controlled live preview
* Segment / Multi / Final result management
So the basic idea is:
AIMixer Director
+
H3 Motion Context
+
H3 Face Refine
+
some KJNodes preview/TAEHV behavior
+
a lot of glue, UI and multi-segment management
↓
MiniMax H3 Motion Director
A proper ComfyUI **Frankenstein monster**.
The reason I went this route is that my H3 workflows kept turning into huge graphs once I wanted more than one shot.
Generating one 5–10 second clip is easy.
Managing:
Shot 1
↓
Shot 2
↓
Shot 3
↓
Shot 4
while keeping character appearance, motion, color, audio, references and generation settings reasonably consistent is a different problem.
And when Shot 3 sucks, I don’t want to regenerate Shots 1, 2 and 4 just because they happened to be part of the same workflow.
So Director treats the video more like a small project/timeline.
Each segment can have its own Prompt and assets, and failed segments can be selectively rerun.
For continuity, later segments can inherit information from earlier ones through Motion Context, Context Frames, audio continuation and other continuity controls.
For V2V / RV2V there is also a Source Bridge, because after splitting a Source Video into segments you also have to deal with motion discontinuities at the source boundaries.
I also didn’t want the Director to completely lock you into its sampler setup.
If you prefer your own ComfyUI sampling chain, you can connect external:
SAMPLER
SIGMAS
and let the Director handle the project/timeline side while your normal workflow handles sampling.
The node is now published on the **Comfy Registry**, so it should be installable through ComfyUI-Manager.
GitHub:
https://github.com/j955229/ComfyUI-MiniMax-H3-Motion-Director
The whole derivative project is GPL-3.0, and the repository includes the original licenses/notices for the upstream projects.
I’m still working on the long-form side in particular:
* better cross-segment continuity
* optional inheritance per segment
* reducing visual/motion drift
* better audio continuity
* stronger long-project context
* eventually making separate generation batches understand that they belong to the same larger project / episode
This is still very much evolving, so I’m interested in feedback from people actually using MiniMax H3 in ComfyUI.
Especially: **what currently breaks first for you when you try to make longer H3 videos?**
Continuity? Character drift? Audio? VRAM? Managing references? Rerunning bad shots? Something else?
I've been working on a small ComfyUI node for running multi-shot MiniMax H3 generations without babysitting every clip.
You give it a list of shots, and it carries the audiovisual latent from one shot into the next. It saves the clip latents as it goes, so if a long run stops halfway through, you can resume from that clip instead of starting over.
You can also change the duration, steps and context per shot with simple tags like [FAST], [BALANCED], [QUALITY] or [dur=10].
I mainly wanted something that could handle the repetitive parts: continuation, saving, resuming, and the final video/audio stitch. It also writes a JSON timing profile, which has been useful for seeing whether prompt encoding, sampling or decoding is taking most of the time.
Repo: https://github.com/misutesu-desu/H3-AutoPromptChain
It needs a recent ComfyUI build with H3 support and Herrgotts-H3-Infinite-Continuation-Suite. No extra pip packages.
It's still early, so I'd be interested to hear how it behaves with different samplers and longer chains.
Despite my limited experience and modest hardware — an NVIDIA RTX 5060 Ti with only 16 GB of VRAM — I was able to create a complete 3-minute video using MiniMax H3.
The process started with ChatGPT, which I used to develop the prompts and create the necessary reference images. I then rendered the project as 10 seconds individual video clips in MiniMax H3. The soundtrack was created separately using ACE-Step 1.5, and finally, I brought everything together in DaVinci Resolve, and completed the final video.
This project shows that with the right tools, some creativity, and a lot of patience, it is possible to achieve decent results even without high-end hardware or extensive experience.
I made an attempt at a new Mixed Mode feature for my MiniMax H3 Motion Director.
https://github.com/j955229/ComfyUI-MiniMax-H3-Motion-Director
The basic idea is simple: instead of forcing the whole Director project to use one generation mode, each Segment can decide what kind of generation it needs.
Before explaining the UI, here is the result from my first test.
[MEDIA 1 — FINAL RESULT VIDEO]
https://reddit.com/link/1vqbr7s/video/l7inkg69ktjh1/player
Final output: one T2V establishing shot followed by three motion-driven character shots, rendered as one sequence.
This is still an experimental feature, so I am treating this as a workflow test rather than a visual-quality benchmark.
MiniMax H3 already has several useful workflows: T2V, I2V, FL2V, R2V, V2V and RV2V.
The problem starts when I want to use several of them in the same video.
Maybe Segment 1 only needs text.
Segment 2 needs an existing video's motion.
Segment 3 needs another source video plus a different character identity.
A later Segment may need an image, first/last frames, references, or the result of an earlier Segment.
Making a separate Director project for every type of shot defeats the point of having a Director.
So I tried making the generation mode a per-Segment property instead.
[MEDIA 2 — MIXED MODE OVERVIEW UI]
The Mixed timeline. In this test Segment 1 is T2V, while Segments 2–4 are Source Video segments. The controls between Segments are the visual/audio continuity controls.
The current user-facing choices are:
T2V / I2V / FL2V / R2V / Source Video
I intentionally combined V2V and RV2V into Source Video in the UI.
A Source Video Segment with no identity pictures behaves as V2V.
Add identity pictures, and that same Segment becomes RV2V.
So I don't have to maintain two almost identical editing interfaces just because the backend task changes.
For this example, Segment 1 is a normal 5-second T2V shot.
I asked H3 to establish a moonlit traditional Chinese mountain stage with lanterns, mist and a slow camera push.
That gives the sequence a scene before the motion-reference shots begin.
Then I deliberately used three source videos that look completely different from the intended final characters and environment.
The point was to see whether I could treat them as motion sources, while each Segment independently defines who should appear and what the scene should look like.
This is the first motion source.
https://reddit.com/link/1vqbr7s/video/k8pvf6vmktjh1/player
Original source motion: the cat-eared character performing a sequence of hand and upper-body gestures.
For the actual Segment I only use 2.5s → 7.5s of that video.
And this is the identity picture I give the Segment:
Target identity for Segment 2.
The Mixed UI for that Segment looks like this:
The Source Video remains the motion source, while the identity picture tells H3 which character I want.
Because an identity picture exists, this Source Video Segment is compiled as an RV2V task.
The prompt also asks it to abandon the source video's original character design and environment, while preserving the original motion, body rhythm, hand movement and camera behavior.
For the next shot, I switch to a completely different source video.
https://reddit.com/link/1vqbr7s/video/ou56ofn0ltjh1/player
Second motion source, with a different character, clothing, environment and gesture sequence.
This time the selected range is 2.0s → 7.0s.
And I replace the character with this identity:
Target identity for Segment 3.
Again, this is still just one Segment inside the same Director project.
It gets its own Source Video, source range, identity references and prompt.
No separate workflow and no separate Director instance.
The third source is even more obviously different from the target.
https://reddit.com/link/1vqbr7s/video/rihzimv7ltjh1/player
Third motion source: a white-haired character turning and posing in a daylight temple environment.
I use 1.0s → 6.0s from this clip.
The target identity is:
Target identity for Segment 4.
And the Segment configuration:
The resulting shot keeps the general turning/posing motion, but replaces the source character and returns the scene to the moonlit environment used by the project.
That is the part I wanted Mixed Mode to handle: the source of motion and the visual identity of the shot do not have to come from the same asset.
Mixed Mode is not a new MiniMax H3 generation task by itself.
It is basically a small compiler sitting above the existing Director modes. Each Segment is translated back into the normal H3 task that should actually execute.
I also added a concept called Segment Result.
For modes that need images, an earlier Segment's generated result can be reused instead of uploading another image. For example, an earlier result can become an I2V start frame, an FL2V first/last frame, or an identity reference.
The reference points to a stable Segment ID rather than just saying "previous Segment", because otherwise moving or deleting cards would silently change what another Segment references.
The small controls between Segment cards are also intentional. Visual continuity and audio continuity are controlled per boundary, rather than being one global switch for the entire project.
And Source Video has one important rule: it is a real, Segment-local source video. Videos stored in the Material Library are still Reference Videos. I kept those two concepts separate because they have very different semantics in H3.
Selective Run is also still available, so I can rerun only the parts of a Mixed project I am working on instead of regenerating the entire timeline.
It's the possibility of treating a MiniMax H3 project more like an actual shot list: choose the generation method that makes sense for each shot, instead of choosing one generation method for the entire video.
Finally got the flow and prompt structure figured out for H3- now I'm having so much fun.
Will post specs in comments.
I wanted to test it a bit with creature animation, snow, wind, and atmosphere. I started by generating still keyframes with Seedream pro, then used image-to-video to generate videos in .
Prompts and keyframe here :https://www.patreon.com/u8638148/posts/minimax-h3-and-166452641?utm\_medium=clipboard\_copy&utm\_source=copyLink&utm\_campaign=postshare\_creator&utm\_content=join\_link
Is there a way to convert the last frame to a true image like a png?
I noticed I could create longer vids by taking the last frame and use that as a refrence image, but when I do that like in my screenshot, generation time gets much larger, I think it's b/c internally Minimax reads that last image actually as a video, thus behaving much differently.
Crappy demo clip as I was short on time, but handy to see in context of the screenshot of this post
https://github.com/shootthesound/ComfyUI-H3Studio
Lots of hopefully clear instructions in the Github link and a basic example workflow.
Its my first time making a video editor after 15 years of using one every day, so there is a lot of carried over UX, and more I'll refine.
If you fancy it, this plays nicely with what is now a fast and high quality results Minimax Lora Trainer (getting good quality training to work in minimax has been a nightmare, but its there now): https://github.com/shootthesound/Fizgig
Hi r/StableDiffusion!
We are the MiniMax team behind MiniMax-H3.
We’re here to answer your questions, including:
Ask us anything — we’d love to hear your feedback and discuss with the community!
Just sharing my results using the Turbo LoRA that was created for H3.
They said it’s still a work in progress, and the audio is still a little bit stretchy in some parts, but the results are already fantastic. I mean, it’s only the third day since H3 was released and we already have a functional Turbo LoRA.
I generated all the clips in this video with the Turbo LoRA enabled, using 10 steps at 0.4MP.
The first three clips were T2V, and the last two were FLF2V.
The only thing I manually added was the soundtrack at the end.
*EDIT: It was T2V not I2V.
I managed to run MiniMax H3 Ref2VA locally on hardware below the model’s recommended VRAM requirement.
My setup:
LOW_VRAM modeHere are the results from my local tests:
| Output | Video length | Configuration | Generation time |
|---|---|---|---|
| 256×160 | 0.21s | 2-step smoke test | 38 seconds |
| 512×288 | 5.17s | Base model, 10 steps | 4m 00s |
| 640×352 | 5.17s | Base model, 10 steps | 7m 35s |
| 864×480 | 5.17s | Base model, 10 steps | 30m 31s |
| 352×640 | 5.17s | Qwen3-VL-32B, Turbo, 4 steps | 4m 23s |
| 576×1024 | 5.17s | Qwen3-VL-32B, Turbo, 4 steps | 15m 40s |
| 288×512 | 8.00s | Qwen3-VL-32B, Turbo, 4 steps | 5m 06s |
| 384×672 | 8.00s | Qwen3-VL-32B, Turbo, 4 steps | 11m 26s |
| 288×512 | 15.00s | Qwen3-VL-32B, Turbo, 4 steps | 13m 51s |
| 384×672 | 15.00s | Qwen3-VL-32B, Turbo, 4 steps | 40m 55s |
The results show how quickly both spatial resolution and video duration increase the inference cost. For example, moving from 288×512 to 384×672 increased the 15-second generation time from 13m 51s to 40m 55s.
MiniMax H3 also aligns the requested duration to its required frame grid. For example, a requested five-second video becomes 124 frames at 24 FPS, producing an actual duration of approximately 5.17 seconds.
I also tested the Qwen3-VL-4B INT4 encoder with the Turbo sampler at four steps. It reduced the text encoder memory requirement, but the generated quality was noticeably worse in my tests. Subject consistency, motion quality, prompt understanding and fine detail were all weaker than with the native Qwen3-VL-32B encoder.
For that reason, Qwen3-VL-32B remains the default. The 4B path is included only as an experimental lower-memory option.
I also created a simple web interface where you can try it yourself:
[Try MiniMax H3 online] https://hackcha.cn/minimax-h3/index-en.html
Please keep in mind that the service is running on my personal RTX 2080 Ti, so generation can be quite slow, especially for longer videos or higher resolutions. Tasks are processed through a queue, and waiting times will increase when multiple people are using it.
The code is available here:
github.com/hackcha/minimax_h3_infer
This project is a command-line and worker wrapper around the official ComfyUI MiniMax H3 implementation. It:
The worker can atomically claim queued database tasks, download reference images, run local inference, upload completed videos to Alibaba Cloud OSS, and update each task with either a result URL or an error message. Multiple workers can claim tasks safely.
Resolution tiers in the worker are interpreted using the short edge, similar to how video platforms describe resolution. For example:
9:16 at 288p: 288×5129:16 at 384p: 384×6729:16 at 480p: 480×8649:16 at 768p: 768×137616:9 at 768p: 1376×768The long edge is aligned to a multiple of 32 because that is required by H3. These are direct inference dimensions, not post-generation upscaling.
The model files are not committed to GitHub, but the README lists all required checkpoints, their download sources and the expected directory structure.
Running H3 with only 11GB VRAM is possible, but it is operating close to the hardware limit. Higher resolutions can still result in CUDA OOM errors, and 16GB of system RAM causes substantial paging during model staging and offloading. I would recommend at least 32GB of system RAM, preferably 64GB, for a more practical setup.
This post is half a joke and half a plea and public service announcement.
Some people have been complaining they don't get results as good as other people with Minimax H3 videos, or have the following issues:
These things can all be prevented and avoided and not encountered at all if you follow the official prompting guides. Yes, there are two. Both are on the official Huggingspace page for Minimax H3.
One is the Official Prompting Guide for the Text to Video and Image to Video Model.
The other is the Official Prompting Guide for the Reference Video Model.
There is some overlap, but for the most part, each model has it's own prompting syntax, and in particular, the Reference Video Model for H3 is very picky about you using the right keywords and instructions to get what you want.
"But I get decent results with just a couple of sentences typed in natural language of what I want."
That's great, but you're really just relying on the Qwen 32b vision model guessing what you want. It's like pulling a slot machine lever and hoping you get cherries. Only this slot machine can take a few minutes to nearly an hour to stop spinning, based on your hardware.
The great thing about Minimax H3 is for the first time we can truly direct our own AI videos like a director would on set, with the AI providing the actors, scenery, and props. If you write a properly formatted and detailed prompt for Minimax H3, it looks almost like a shooting script.
Why spend time waiting to hit a jackpot when you can take a few minutes to write a detailed, properly formatted prompt that follows the official guides, and get those bright lights and tokens falling into your lap on the first lever pull?
Okay, quick fire problem solving for people who still won't RTFM:
>Dialogue from the wrong characters?
>Dialogue that is just gibberish or random?
Walter White says, <d>[English in Walter White's voice from Breaking Bad] My product is pure, Jesse! There will be no chili powder in my meth.</d>
Always specify the character speaking, either by name, or using the <Subject 1> system in the official guide. In the Text to Video and Image to Video model, always use the <d>[Language Spoken]</d> tags. This will fix BOTH of those issues.
>Random cuts in the video you didn't ask for?
[Shot 1] A medium close-up of Jesse Pinkman from Breaking Bad, pacing back and forth, agitated. He looks up towards the camera, opens his mouth as if he's about to speak, then seems to change his mind, closing his mouth and shaking his head. [Shot 2] At 00:06:000 the camera cuts to a static camera shot framing Walter White from Breaking Bad, sitting on a cheap white plastic lawn chair, his arms crossed and glaring at Jesse. [Shot 3] At 00:10:500 the camera pans quickly back to Jesse, doing a Push In at slow speed to his face as he stops pacing and narrows his eyes at Walter.
This is how you control not only the camera work, but the PACING of your video. You NEVER include a time code on your first shot. You can omit the time code from ALL shots if you want the model to decide on it's own, based on your prompt, when to cut.
BUT, for ultimate control, you want to use time codes. Look at my example above. I just told the model to have Walter glare at Jesse for 4.5 seconds, because I told the model that camera shot starts at 6 seconds into the video, and the next cut doesn't happen until 10.5 seconds into the video. That lets you control the pacing and timing for jokes, punchlines, acting, everything.
>Characters talking over each other or too fast?
This is an old one that anyone familiar with prompting for video models should know by now - what you are asking for in your prompt and the length of your video in time need to match.
The model will try its best to cram every action and piece of dialogue into your video that you asked for, and if that would naturally take 10 seconds and you've only given it 5 seconds? Well, now everything is crammed together, overlapping, or being cut-off.
My recommendation is to generate just a quick 0.2 MP version of your video first after you type your prompt, generate, and see how the timing is working. Is it too fast? Too slow? Do the actions have enough time to happen? Do you want more breathing room?
This is the time to decide all that and lock in a video length. The low resolution of 0.2 MP is quick to generate on most set-ups (mine for this post's video took 3.5 minutes for a 14 second video) and let you work out any issues in your prompt before going in for the long generation at higher resolution.
>Prompts not being followed?
It's because you didn't read the manual!
--------------------------------------------------------------------------------------------------
Now, with all that said, here is the prompt for the video I made:
integrated_multimodal_description: [Shot 1] Live-action film footage of the American drama series Breaking Bad, professionally color graded with a warm color grade, with slightly desaturated colors for a premium film feel, a continuous camera shot with no cuts, medium close-up POV shot of Walter White, bald with a goatee and glasses, as portrayed by Bryan Cranston. He is standing in the Arizona desert next to a parked RV. He is wearing a white PPE protective suit and yellow rubber dish gloves. He is looking directly at the viewer with barely constrained anger. At 00:01:300 he reaches out towards the camera and points his finger at the POV camera with one hand, the camera shaking slightly from the movement. Walter then says angrily, <d>[English with Walter White's voice] Listen, you want to cook Mini Max H3 videos, you follow the recipe!</d>. At 00:04:500 Walter raises his other hand revealing he is holding a thin stack of white paper pages in portrait orientation. The front of the paper visible on top of the thin paper stack is blank except for the large black printed text "Minimax H3 Official Prompting Guide". The papers are held in front of the camera on the right side of the screen for a moment in portrait orientation, so the text can be clearly read, while Walter glares at the viewer on the left side of the screen. At 00:07:000 Walter then shakes the papers at the camera, then says angrily, <d>[English with Walter White's voice] Read the fucking manual!</d>. At 00:10:000 the camera does Pan Right and a Pull Out to show a close-up of Jesse Pinkman from Breaking Bad, with his hands held up by his face with fingers spread, an annoyed look on his face. Then he says in frustration, <d>[English in Jesse Pinkman's voice from Breaking Bad] Alright! Damn, Mr. White! I just want to generate memes.</d>, overall_soundscape: Ambient sounds of an Arizona outdoor desert during the day, non_diegetic_music: none
For those interested, this video was generated at 1 MP on a 3090, using Sage Attention and the Spectrum Node for H3. The final video of 14 seconds at 1 MP took 40 minutes to generate and then was upscaled using RTX Super Resolution.
The workflow was the default Text to Video Minimax H3 template that comes in the latest update of Comfyui.
Now get out there and go cook some memes, everyone!