Nodes/Deno Custom Nodes/(Deno) Audio Transcript
ComfyUI Node

(Deno) Audio Transcript

Whisper transcription inside ComfyUI — no API key, no pasting text around

By Deno2026·Created 5 months ago·Updated 2 days ago· 163
(Deno) Audio Transcript
  • audio
  • audio_context
  • transcript
  • audio
modellarge-v3-turbo
languageauto
model_after_runUnload after run
manual_transcript

If you've ever wanted the lyrics or dialogue of an audio clip to steer your video prompt, you know the pain: transcribe somewhere else, copy the text, paste it into a prompt box, and hope it stays in sync when you tweak the clip. (Deno) Audio Transcript does the whole job inside the graph. Give it an AUDIO clip and it transcribes it locally with official OpenAI Whisper, then hands back the words plus a structured summary - language, timestamped segments, a confidence read - ready to feed a local LLM prompt director.

This node is the first half of Deno's beginner audio-reference workflow (the README's "MiniMax H3 R2V Audio Reference" lane): Whisper gets you the words, a Gemma 4 analysis gets you the sound, and a local LLM turns both into the actual video prompt. It's also just handy on its own whenever a graph needs text out of audio.

How it works

The name is honest about the big one: there's no API and no key. It runs the official openai-whisper package on your machine. Whatever AUDIO you feed in - mono or stereo - gets downmixed to mono and resampled to 16 kHz, which is what Whisper expects, then transcribed.

The first run downloads the Whisper checkpoint from OpenAI to ComfyUI/models/stt/whisper/ (checksum-validated by Whisper's own loader, so you're not trusting a random mirror), and it's cached there afterward. The node also does what it calls "CUDA Smart Swap": before Whisper runs it unloads ComfyUI's other models from VRAM, then releases Whisper when it's done - so a video model and Whisper don't fight over the same card. If openai-whisper isn't installed at all, you get a clear one-line install hint instead of a stack trace.

The inputs that matter

  • audio - your source AUDIO. Grab it from any audio loader, like VHS Load Audio (Upload).
  • model - large-v3-turbo by default (fast, and usually plenty). large-v3 buys accuracy on tricky speech and lyrics; medium and small trade accuracy for speed and VRAM.
  • language - auto, or pin Korean / English / Japanese / Chinese if you know the clip and Whisper keeps guessing wrong.
  • model_after_run - leave it on Unload after run unless you're transcribing in a loop; Keep loaded is the "I'm running many clips back to back" option.
  • manual_transcript (optional) - your exact lyrics or dialogue. When non-empty it's authoritative for the wording, while Whisper still runs underneath to supply approximate segment timing.

Three outputs come out:

  • audio_context - the structured STRING for an LLM: requested and detected language, a heuristic confidence band (built from Whisper's per-segment log probabilities), timestamped segments, all JSON-safe. This is what you wire into (Deno) Local LLM Loader's optional audio_context input.
  • transcript - the plain text: your manual lyrics if you gave them, otherwise Whisper's output.
  • audio - your original clip, passed through unchanged. That passthrough matters: it guarantees Whisper runs before the Gemma analysis step, so the Smart Swap unloads things in the right order.

Install

This is part of the Deno Custom Nodes pack, so install it once:

  • ComfyUI Manager → search "deno custom nodes" → install → restart.
  • Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Deno2026/comfyui-deno-custom-nodes.git
cd comfyui-deno-custom-nodes
python -m pip install -r requirements.txt

openai-whisper is the pack's only declared Python dependency, and Manager installs it automatically. Restart ComfyUI afterward.

Where people get burned

The first run is the slow one - that checkpoint download plus model load can take a few minutes, and large-v3 is several GB. It's a one-time thing, cached under ComfyUI/models/stt/whisper/. If you see a "missing openai-whisper" message, you installed the clone without running requirements.txt (use the same Python that launches ComfyUI). Transcription needs torchaudio for the resampling step, which ships with ComfyUI's normal environment. And on CPU-only boxes it works, just slowly - the Smart Swap is CUDA-aware, but it can't invent a GPU you don't have. One more: if you're chaining this into the Gemma analysis step, feed the audio passthrough onward rather than re-loading the clip, so the swap order stays intact.

CategoryDeno/Audio

Inputs (5)

NameTypeDefaultDescription
audioAUDIOSource mono or stereo audio to transcribe locally. The node downmixes it to mono and resamples it to 16 kHz for Whisper.
modelCOMBOlarge-v3-turboLocal Whisper model size. large-v3 prioritizes lyric and difficult-speech accuracy; large-v3-turbo is the faster default. The official checkpoint downloads on first use to ComfyUI/models/stt/whisper.
languageCOMBOautoChoose a known language or let Whisper detect it automatically.
model_after_runCOMBOUnload after runCUDA Smart Swap unloads ComfyUI models before transcription. Unload also releases Whisper afterward; Keep loaded is an advanced repeated-run option.
manual_transcriptoptSTRINGOptional exact lyrics or dialogue. When non-empty, this wording is authoritative while Whisper still runs to provide approximate segment timing.

Outputs (3)

NameTypeDescription
audio_contextSTRINGStructured transcript data with requested/detected language, timestamped segments, and a heuristic confidence band for an LLM prompt builder.
transcriptSTRINGEffective plain transcript: the exact user-supplied lyrics or dialogue when provided, otherwise the Whisper transcript.
audioAUDIOThe original source AUDIO unchanged, for a guaranteed Whisper-before-Gemma Smart Swap chain.