Nodes/MediaForge/πŸ—£οΈ Whisper Transcribe
ComfyUI Node

πŸ—£οΈ Whisper Transcribe

Auto-Subtitle Any Video Without Running a Whisper Model

By leon80148Β·Created 4 months agoΒ·Updated 2 months agoΒ· 0
πŸ—£οΈ Whisper Transcribe
  • ai_config
  • audio
  • srt_text
β—„audio_pathinput/sample.mp4β–Ί
β—„languagezhβ–Ί

The name sounds like it bakes a Whisper model straight into ComfyUI. It doesn't, and that's the point. MF_WhisperTranscribe ships no AI at all - it's a thin wrapper that takes an audio source, turns it into an SRT subtitle string, and hands the actual transcribing to whatever backend an MF_AIConfig node points at. Provider-agnostic is the whole design of MediaForge's AI tier: one config node, and the whole chain follows when you swap providers.

You reach for it at the end of the pack's flagship workflow: transcribe a lecture, podcast, or interview, then wire the SRT into MF_TranslateSubtitle and MF_BurnSubtitle and you've got an automated subtitle pipeline. It slots into the same "API wrapper node" family as the rest of the ecosystem - the value is the plumbing, not the model.

How it works

First it extracts a mono 16 kHz WAV from your source with FFmpeg. That's a deliberate move: a two-hour podcast uploads as a few hundred megabytes of audio instead of a multi-gigabyte video. Then it dispatches to one of two backends based on ai_config.provider:

  • openai_compatible - POSTs the WAV to <base_url>/audio/transcriptions. Works with OpenAI, Groq, or any OpenAI-compatible server. Requires nothing beyond what the pack already installs.
  • faster_whisper_local - lazy-imports faster-whisper and runs CTranslate2 on your machine (cpu/cuda/auto per the config). First run downloads the model into your Hugging Face cache.

One clever bit: the node auto-substitutes the model. If your shared MF_AIConfig is set to gpt-4o-mini because it also feeds the translate node, Whisper spots that it isn't an STT model id and falls back to the backend default - whisper-1 for hosted, base for local. Set an explicit STT id (whisper-large-v3, distil-large-v3) to override.

The inputs that matter

  • ai_config (required) - wire from an MF_AIConfig node. Nothing else will do; anything else raises a "must be AI_CONFIG dict" error.
  • audio_path - any media file with an audio stream. Also accepts an audio AUDIO dict in the optional slot (overrides the path, downsampled to 16 kHz mono the same way).
  • language - ISO 639-1 hint. Default is zh, because the author defaults to a Traditional Chinese audience. If your audio is English and you leave that alone, results degrade. Set en (or leave empty for auto-detect).

Output: srt_text, a STRING - the well-formed SRT, as text, not a file. Wire it into MF_BurnSubtitle's srt_text input or MF_TranslateSubtitle's srt_text. Use MF_ConvertChinese with a filename_prefix if you want it saved to disk.

Install

Part of the MediaForge pack: ComfyUI Manager β†’ search "MediaForge", or git clone https://github.com/leon80148/comfyui_MediaForge.git into custom_nodes/, then restart. The pack's requirements.txt pulls in requests, so hosted backends work out of the box. The local backend is a separate, manual step because it's heavy:

pip install faster-whisper

That's ~500MB+ with CTranslate2, and it's the one thing here that actually downloads a model. You still need FFmpeg available.

Common issues

  • Local CPU is painfully slow - README says roughly 0.3Γ— realtime on a modern laptop. Don't run large-v3 on CPU for an hour-long podcast. Set device=cuda, or use Groq's whisper-large-v3, which the author bills as ~5–10Γ— faster than OpenAI's whisper-1 at similar quality.
  • Source with no audio stream - friendly error, before anything hits the network. Corrupt or silent audio that extracts to under 256 bytes of WAV also raises early.
  • Key hygiene - use env:OPENAI_API_KEY in MF_AIConfig so the secret never serializes into exported workflow JSON. This is an API-wrapper node, which is exactly the shape of node that carries credentials; keep the key out of the graph.
CategoryMediaForge/AI

Inputs (4)

NameTypeDefaultDescription
ai_configAI_CONFIGβ€”
audio_pathSTRINGinput/sample.mp4β€”
languageSTRINGzhβ€”
audiooptAUDIOβ€”

Outputs (1)

NameTypeDescription
srt_textSTRINGβ€”