Nodes/comfyui-mimoasr/🎯 MiMo ASR Transcribe
ComfyUI Node

🎯 MiMo ASR Transcribe

Wire audio in, get clean text out β€” MiMo's transcription without leaving the graph

By aadebugerΒ·Created 3 months agoΒ·Updated 3 months agoΒ· 0
🎯 MiMo ASR Transcribe
  • model
  • audio
  • text
β—„languageAutoβ–Ί
β—„keep_temp_filefalseβ–Ί

This is the node that actually makes the speech-to-text happen. 🎯 MiMo ASR Transcribe takes a ComfyUI AUDIO wire plus the model bundle from its sibling MiMoASRLoader, runs Xiaomi's MiMo-V2.5-ASR on the clip, and hands you back a plain STRING - punctuation included, no post-processing pass required. If your workflow is "load a file, transcribe it, show the text," this whole pack is three nodes and done. The model's party trick is code-switched Mandarin-English (think a sentence that starts in Mandarin and ends in English) and Chinese dialects, which is exactly where Whisper tends to mumble.

One honest caveat before the good stuff: the model behind this node is heavy and fussy to install, and that pain lives in the shared pack - the transformers==4.49.0 pin, the flash-attn build, the 24 GB of VRAM. It's all covered on the MiMoASRLoader page and in the README. This page is about the node that sits at the end of that install and makes it worth it.

How it works

The upstream MimoAudio.asr_sft() wants a file path, but ComfyUI hands you an AUDIO dict - a waveform tensor plus a sample rate. So the node bridges the gap: it squeezes the batch axis, downmixes multi-channel audio to mono, dumps the result to a temp .wav, and calls asr_sft on that. The model does its own resampling internally, so you don't need to care about the source rate. When it's done, the temp file gets deleted - unless you say otherwise - and the transcript comes out stripped and ready to wire into a text preview.

Language handling is the input worth knowing about. Auto leaves the audio tag empty and lets the model detect language itself, which is the right call for code-switched speech. Forcing Chinese or English pins a tag that can help on clean single-language audio but will hurt if you guess wrong.

The inputs that matter

  • model - the MIMO_ASR_MODEL bundle from MiMoASRLoader. Nothing else plugs in here; that's intentional.
  • audio - any ComfyUI AUDIO output. The built-in LoadAudio node is the obvious source.
  • language - Auto (default, recommended), Chinese, or English.
  • keep_temp_file (optional) - keep the intermediate .wav around if you're debugging why a clip came back empty.

The single output, text, is a STRING - wire it into PreviewAny (from rgthree-comfy, the README's assumed helper) or ShowText|pysssss to see it in the UI.

Installing it

Same shared install as the whole pack: ComfyUI Manager can grab it (search "comfyui-mimoasr"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/aadebuger/ComfyUI-MiMoASR.git

Then the non-negotiable extras: a local clone of XiaomiMiMo/MiMo-V2.5-ASR, the ~16-32 GB of model weights plus the audio tokenizer, transformers pinned to exactly 4.49.0, and a working flash-attn build. Details, env vars, and the one-shot install script are in the README - don't skip its verification steps, they're there because the failure modes are silent.

Troubleshooting

The errors you'll actually hit, from the README's own table:

  • MiMo ASR repo path is empty - you skipped the upstream clone or didn't set MIMO_ASR_REPO. Clone it and set the env var.
  • ... model path does not exist - weights missing, or you used a relative path in the Loader. Use absolute paths.
  • AttributeError: ... 'all_tied_weights_keys' - your transformers is newer than 4.49.0. Downgrade, and be aware it can conflict with nodes that need newer versions (Sonic, Qwen3TTS).
  • TypeError: 'NoneType' object is not callable inside flash_attn_varlen_func - flash-attn isn't actually installed. Rebuild it.

The transcript coming back empty usually isn't a node bug - it's the model loading from scratch on first run (30–60 seconds, then cached for the session), or an Auto language guess on audio too noisy for any ASR. If you need to chase it, flip keep_temp_file on and check what actually got written.

Category🎯 MiMo ASR

Inputs (4)

NameTypeDefaultDescription
modelMIMO_ASR_MODELβ€”
audioAUDIOβ€”
languageCOMBOAutoAuto = automatic language detection (recommended for code-switched speech).
keep_temp_fileoptBOOLEANfalseIf True, keep the intermediate wav file (useful for debugging).

Outputs (1)

NameTypeDescription
textSTRINGβ€”