Local Whisper Transcribe
Local transcription that gets out of the way before MiniMax H3 loads
- audio
- transcript
- segments_json
- detected_language
- status
Local Whisper Transcribe takes a native ComfyUI AUDIO value and turns it into text on your own machine using faster-whisper - no cloud, no key. The headline feature isn't the transcription though; it's the cleanup. This node is built to be short-lived: after every transcription it unloads CTranslate2, drops Python references, and clears the CUDA cache before MiniMax H3 starts loading. In a 33B-video-model workflow, that explicit VRAM hygiene is the whole point of reaching for it over a plain Whisper node.
Where does an H3 workflow need speech-to-text? Two obvious places: captioning dialogue so the H3 Story Director can write performable lines, and transcribing a reference clip's audio so a prompt can describe it. The README's framing is narrower and honest - the local vision encoder can't listen to a waveform, so if you want the audio content to influence a prompt, transcribing it to text first is the workaround.
How it works
It accepts a ComfyUI AUDIO value, converts it to mono 16 kHz in memory, and runs faster-whisper over it. Model choice is a large-v3 / large-v3-turbo combo - large-v3 for accuracy parity with a standalone captioner, large-v3-turbo when you're iterating and want speed. Models download on first use to ComfyUI/models/faster-whisper.
Two behaviors worth knowing. First, silent audio is detected before the model ever loads - if the RMS of the incoming audio is effectively zero, it returns an empty transcript and a status string instead of spinning up 3GB of model for nothing. Second, device and compute_type default to auto: float16 on CUDA, int8 on CPU; pick int8_float16 if you want less VRAM with a small accuracy tradeoff.
The inputs that matter
audio- a real ComfyUIAUDIOvalue, from something like a video loader or audio node. Not a path string.model-large-v3orlarge-v3-turbo.language-auto(detection) or one of ~15 common languages.beam_size- 5 default; raise it for accuracy, lower it for speed.vad_filter- on by default, so silence gaps don't turn into hallucinated segments.initial_prompt- optional vocabulary/context hint. It steers the model but is not added to the result.
Outputs
transcript- the full joined text.segments_json- timestamped segments as JSON, if you need alignment for subtitles or a dub step.detected_language- the language code Whisper picked.status- one line with model, device/compute, duration, segment count, RMS, and language probability. Genuinely useful for debugging why a transcription came back empty.
Install
Ships in the Vision Prompt Assistant pack. ComfyUI Manager → search Vision Prompt Assistant, or:
cd ComfyUI/custom_nodes
git clone https://github.com/elgalardi/ComfyUI-VisionPromptAssistant
Then restart. This is the one node in the pack with a real extra dependency: faster-whisper (declared in the pack's pyproject). If the import isn't found, the node tells you exactly what to run:
pip install faster-whisper
# or on a portable Windows install:
python_embeded\python.exe -m pip install faster-whisper
If you hit "CUDA was selected, but PyTorch reports no CUDA device," the fix is in the node: set device back to auto and let it fall to CPU, or fix your PyTorch build first.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| model | COMBO | large-v3 | 2 options: large-v3, large-v3-turbo |
| language | COMBO | auto | 15 options: auto, en, es, ja, zh, hi, +9 |
| device | COMBO | auto | 3 options: auto, cuda, cpu |
| compute_type | COMBO | auto | auto uses float16 on CUDA and int8 on CPU. int8_float16 uses less VRAM with a small possible accuracy tradeoff. |
| beam_size | INT | 51–10 | — |
| vad_filter | BOOLEAN | true | — |
| initial_promptopt | STRING | Optional vocabulary or context hint; it is not added to the result. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| transcript | STRING | — |
| segments_json | STRING | — |
| detected_language | STRING | — |
| status | STRING | — |