MiniMax H3 Speech Studio / 一站式语音 (EXP/T8)
Condition, sample, decode, release
- model
- clip
- video_vae
- audio_vae
- voice_profile
- speech_plan
- speech_guard
- audio
- conditioned_prompt
- report_json
- generated_av_latent
- transcript
- text_similarity
- speaker_similarity
- accepted
The pack's speech chain is normally four or five nodes long: voice profile → plan → conditioning → sampler → audio decode → release. MiniMaxH3SpeechStudioT8 collapses that into a single node so you can go from "script" to "speech wav" without threading a half-dozen wires. It's the one to reach for when you just want H3 to read a line and hand you clean audio - and it's the honest baseline against which the fancier multi-node rigs are measured.
What it does
The node description says it plainly: "Native ComfyUI speech graph: conditioning → sampler → audio-only decode → explicit release." Feed it the four things every H3 run needs - model, clip, video_vae, audio_vae - plus a voice_profile and a speech_plan, and it builds the audio-first conditioning, runs the sampler, decodes audio only, and requests a VRAM release. It also reports the transcript it produced, similarity scores, and an accepted boolean so you can gate a save node on quality without writing your own plumbing.
The quality baseline is stock res_multistep + simple scheduler at 20 steps - nothing exotic, and that's deliberate. "Stock is the initial quality baseline" is the author telling you not to hunt for a magic sampler before you've heard what the plain one does.
The inputs that matter
voice_profile+speech_plan- the outputs of the Voice Profile and Speech Plan nodes. Described voices render as T2VA; reference voices render as Ref2VA with a dark anchor frame and your audio as the identity reference.render_seconds(5.17–15.08) - the explicit H3 render window, snapped to the 17n+5 frame grid. Set it; don't let the text length guess it.resolution- 32, 64, or 128 pixels. This is a tiny audio canvas; H3 generates speech at low spatial resolution and it works, which surprises everyone the first time.seed,steps,sampler_name,scheduler- the sampler knobs, defaults are fine.verify_modeandspeaker_check_mode- the interesting extras. Turnverify_modeon and, whenasr_model_directorypoints at a faster-whisper CTranslate2 model, the node runs ASR on its own output and reportstext_similarity,transcript, andaccepted. Speaker checking does the same for identity via a WavLM X-Vector model. Both default off and both require model files you supply - the ASR check runs on CPU and unloads afterwards by default.
Outputs worth knowing: audio (wire to a save/preview), generated_av_latent (the raw joint latent, if you want to re-decode or inspect), plus transcript, text_similarity, speaker_similarity, and accepted for QA gating.
Installing and gotchas
Standard pack install: ComfyUI Manager → search "MiniMax H3 Audio T8", or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 into custom_nodes and restart. No pip dependencies beyond what ComfyUI ships - but you must supply the H3 diffusion model, Qwen3-VL CLIP, video VAE and audio VAE, because the pack won't download them (and the H3 weights are licence-restricted in parts of the West). If you enable verification without a faster-whisper model in place, expect an explicit error, not a silent skip - that's by design.
Common issues
The two things people actually hit: forgetting the VAE (H3 wants two - a video VAE and an audio VAE, and they're not interchangeable), and treating render_seconds as approximate. It isn't - it's the trained-window contract, and going outside 5.17–15.08 errors out. And because this is one big experimental node, when it fails the report_json is your best clue; the author intends it as the diagnostic surface.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| video_vae | VAE | — | |
| audio_vae | VAE | — | |
| voice_profile | H3_T8_VOICE_PROFILE | — | |
| speech_plan | H3_T8_SPEECH_PLAN | — | |
| segment_index | INT | 00–9999 | — |
| seed | INT | 00–18446744073709550000 | — |
| render_seconds | FLOAT | 10.005.17–15.08 | — |
| resolution | COMBO | 32 | 3 options: 32, 64, 128 |
| steps | INT | 201–1000 | — |
| sampler_name | COMBO | res_multistep | 45 options: res_multistep, dual_clock_euler, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, +39 |
| scheduler | COMBO | simple | 10 options: simple, native_flow, sgm_uniform, karras, exponential, ddim_uniform, +4 |
| shift_video | FLOAT | 12.000.01–100 | — |
| shift_audio | FLOAT | 3.000.01–100 | — |
| trim_mode | COMBO | none | 2 options: none, conservative_energy |
| verify_mode | COMBO | off | 3 options: off, verify_only, trim_exact_target |
| asr_model_directory | STRING | Optional CPU faster-whisper CTranslate2 model directory. Required only when verify_mode is not off. | |
| asr_language | COMBO | auto | 12 options: auto, Arabic, Chinese, English, French, German, +6 |
| min_similarity | FLOAT | 0.850–1 | — |
| unload_asr_after_verify | BOOLEAN | true | — |
| speaker_check_mode | COMBO | off | 3 options: off, report_cosine, require_threshold |
| speaker_model_directory | STRING | — | |
| min_speaker_similarity | FLOAT | 0.860–1 | — |
| unload_speaker_after_verify | BOOLEAN | true | — |
| peak_limit_dbfs | FLOAT | -1.0-24–0 | — |
| release_policy | COMBO | clear_execution_cache | 3 options: keep_loaded, clear_execution_cache, unload_all_models |
| speech_guardopt | H3_T8_SPEECH_GUARD | — |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| conditioned_prompt | STRING | — |
| report_json | STRING | — |
| generated_av_latent | LATENT | — |
| transcript | STRING | — |
| text_similarity | FLOAT | — |
| speaker_similarity | FLOAT | — |
| accepted | BOOLEAN | — |