ComfyUI Node

Whisper Turbo Run

Turn any audio into subtitles inside ComfyUI — Whisper Turbo Run

By billwuhao·Created about a year ago·Updated about a year ago· 14
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