Nodes/Symbiotica/NS Whisper Transcribe
ComfyUI Node

NS Whisper Transcribe

Turn a Video's Speech into Timestamped Text Without an API Key

By symbiotica-ai·Created 6 months ago·Updated about 13 hours ago· 2
NS Whisper Transcribe
  • video
  • transcript
languageauto
model_sizebase
initial_prompt

The name is a lie you'll be relieved about: NS Whisper Transcribe doesn't call any API, needs no key, and never touches the network while it works. You feed it a VIDEO, it pulls the audio track out, runs a local Whisper model over it, and hands back a TRANSCRIPT with word-level timestamps. If your job is captions - or anything where you need to know when someone said something, not just what - this is the node you want in the graph, and it's the rare one in this pack that's fully free and offline.

It's one node in the Symbiotica pack, which is otherwise heavy on paid cloud calls (Claude, Gemini, Wavespeed, the whole order pipeline). This is the deliberate exception: transcription is a solved local problem, so the pack keeps it local. Pair it with the pack's caption nodes (NS Caption Overlay, Submagic, and friends) and you've got a closed loop - video in, burned-in subtitles out, no per-minute billing.

How it works

Under the hood it's ffmpeg plus faster-whisper, the CTranslate2-backed reimplementation of OpenAI's Whisper. The node extracts the audio from your video with the bundled ffmpeg, transcribes it on your GPU (or CPU if that's all you have), and emits a transcript object that carries per-word start/end times - which is what makes caption chunks land on the right frames instead of drifting.

The first time you run it, it downloads the Whisper weights. That's the one thing that looks like a "cloud call" but isn't; the download is a one-time model fetch, then everything is local.

The inputs that matter

Three of them, and only two you'll normally touch:

  • video - the only required input. Wire any VIDEO from a video loader.
  • model_size - tiny, base (default), small, medium, large-v3. base is a fine default: fast and accurate enough for captions. Go up to large-v3 if the audio is noisy or accented and the small models keep mangling it; each step up costs download time and runtime.
  • language - auto by default, or force one of ~25 languages. If you know the video is Greek, set el and skip Whisper's language-detection gamble. Auto is wrong more often than people expect on short clips.
  • initial_prompt - the hidden weapon. It biases Whisper toward specific words. The pack's own tip is the good use: you ran Gemini over the video once to get a clean transcript with proper names, then you paste that corrected text here so Whisper's timestamps land on the right words. Whisper mishears names constantly; this is how you fix the transcription without fixing the timing by hand.

The output is a single transcript of type TRANSCRIPT. It's not a plain string you can read in a text node - it's the word-timed structure the caption nodes consume. Don't reach for it expecting a .txt; reach for it expecting caption data.

Install

Via ComfyUI Manager: search Symbiotica and install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt

Then restart ComfyUI. The heavy dependency is faster-whisper, which is in the pack's requirements.txt - it pulls CTranslate2, which is a real install but nothing you have to do by hand.

Common issues

  • First run stalls or takes forever. That's the model download - it can be a few GB for large-v3. Watch the console; it's not frozen, it's downloading. Start with base to keep this to a few hundred MB.
  • The transcript doesn't quite match the words you know are there. Names, brand words, jargon - Whisper butchers these. Feed the known-correct text into initial_prompt and the timestamps realign. This is the documented workflow, and it works.
  • Wrong language. If you got gibberish, auto-detection picked wrong. Set language explicitly.
  • No audio track in the video. ffmpeg extracts nothing and you get an empty transcript back. Check the source before you blame the node.

The one thing to keep in mind: this is a custom node running local Python with your permissions, from a pack with essentially no community footprint yet. It's open source and it does what it says, but it's not a household name - the usual "read a fresh pack before trusting it" rule from the broader ComfyUI ecosystem applies.

Categoryneuralsins/Video

Inputs (4)

NameTypeDefaultDescription
videoVIDEO
languageoptCOMBOauto25 options: auto, en, el, es, fr, de, +19
model_sizeoptCOMBObase5 options: tiny, base, small, medium, large-v3
initial_promptoptSTRINGText to bias Whisper toward (e.g., correct transcription from Gemini for accurate timestamps)

Outputs (1)

NameTypeDescription
transcriptTRANSCRIPT