ComfyUI Node

Whisper Turbo Run

Turn any audio into subtitles inside ComfyUI — Whisper Turbo Run

By billwuhao·Created 2 years ago·Updated about a year ago· 15
Whisper Turbo Run
  • audio
  • json_text
  • subtitle_text
◄max_num_words_per_page24►
◄logprob_threshold-0.10►
◄no_speech_threshold0.10►
◄initial_prompt如果有中文, 严格使用简体中文:►
◄timestampfalse►
◄word_timestampsfalse►
◄unload_modeltrue►

Whisper Turbo Run is the subtitle-maker of this two-node pack. Its sibling (EraX WoW Run) just transcribes; this one runs OpenAI's actual large-v3-turbo Whisper checkpoint and hands you two string outputs - json_text with the segment data and subtitle_text with lines formatted like [00:12.340]text. Plug an audio socket in, get subtitle text out. That's the whole sell, and for a lot of people it's the whole reason to install the pack.

Why reach for this instead of the EraX node? Timestamps. If you're making subtitles, burning captions, or syncing text to a video track, you need start times, and this is the node that gives them. If you just want the words fast and don't care about timing, the other node is simpler. They share one install, so trying both costs you nothing.

How it works

It wraps the openai-whisper package and calls transcribe() the way the whisper command line does - which means writing your audio tensor out to a temp wav first (that's what the internal cache_audio_tensor helper does), then running Whisper's standard pipeline: detect language, transcribe, filter junk. The two float thresholds - logprob_threshold (-0.1 default) and no_speech_threshold (0.1 default) - are Whisper's built-in hallucination guards; segments that look like silence or low-confidence filler get dropped. When word timestamps are on, it also re-splits the transcript into sentences by punctuation (or by a words-per-line cap), so each subtitle line stays readable.

The inputs that matter

  • audio - an AUDIO socket from any audio loader or video pipeline.
  • timestamp - the master switch. Off (the default) means you just get plain concatenated text back, and word_timestamps is silently ignored. Turn it on to get timed output.
  • word_timestamps - word-level timing, grouped into sentences. Only does anything when timestamp is on.
  • max_num_words_per_page - max words per subtitle line when word timestamps are enabled; default 24.
  • initial_prompt - a hint Whisper uses to bias style and spelling. The default is Chinese ("如果中文则严格使用简体中文"), so for English audio you'll probably want to swap it for a vocabulary or spelling hint.
  • unload_model - true by default; frees VRAM after every run.

Two outputs: json_text (a STRING of the raw segment or word data, save it if you want the structured version) and subtitle_text (the [MM:SS.mmm] lines, ready to save as a sidecar subtitle file).

Install

Same pack as the EraX node - ComfyUI Manager, search MW-ComfyUI_EraX-WoW-Turbo, or:

cd ComfyUI/custom_nodes
git clone https://github.com/billwuhao/ComfyUI_EraX-WoW-Turbo.git

Restart, then grab the model: the ~1.6 GB large-v3-turbo.pt from OpenAI's official download link, placed at ComfyUI/models/TTS/whisper-large-v3-turbo/large-v3-turbo.pt. It's the same .pt checkpoint OpenAI's own whisper repo points to - a big file, but it's the real thing, not a mirror.

Common issues

  • timestamp is off and word_timestamps "does nothing." That's by design - the node forces word timestamps off when the master switch is off. Toggle timestamp first.
  • The whole pack fails to load. The requirements install openai-whisper but not transformers, and the pack's other node imports transformers at module load, dragging this one down with it. pip install transformers, restart, done.
  • Wrong language on your audio. There's no language dropdown here - Whisper auto-detects. That's why initial_prompt matters more than it looks; a good hint fixes a lot of misdetection.

The subtitle format is a simple [MM:SS.mmm] listing rather than a spec-compliant .srt, so don't expect a player to import it directly - save it as a text sidecar or feed it through a converter. Small quirk, easy workaround, and a handy way to get timed transcription out of a node graph.

Category🎤MW/MW-EraXWoW

Inputs (8)

NameTypeDefaultDescription
audioAUDIO—
max_num_words_per_pageINT241–50—
logprob_thresholdFLOAT-0.10-2–-0.01—
no_speech_thresholdFLOAT0.100–1—
initial_promptSTRING如果有中文, 严格使用简体中文:—
timestampBOOLEANfalse—
word_timestampsBOOLEANfalse—
unload_modelBOOLEANtrue—

Outputs (2)

NameTypeDescription
json_textSTRING—
subtitle_textSTRING—