ComfyUI Node

Whisper Loader

One Dropdown, and It Fetches the Model Itself

By silveroxides·Created 3 months ago·Updated about 12 hours ago· 35
Whisper Loader
    • whisper_model
    model_namebase

    Most Whisper setups in ComfyUI are a small adventure: install openai-whisper, find a .pt checkpoint, remember which venv it went into, and hope nothing else in your stack already pinned a different torch. This node skips all of it. It is a ComfyUI model loader in the ordinary sense - one dropdown, one output - and if the file isn't on disk yet, it goes and downloads it.

    Where this fits

    Speech-to-text is the reverse direction of almost everything else in ComfyUI's audio world. The ecosystem's audio energy goes into making voices and music (TTS Audio Suite, Chatterbox, F5, ACE-Step); transcription is the unglamorous plumbing that shows up around those workflows - captioning a dataset, checking that a TTS read actually said the words you wrote, or pulling timestamps off a clip so you can subtitle it. It is a small, steady use case rather than a headline one, and this loader is the front door to it.

    How it works

    UC_WhisperLoader is a thin wrapper over the pack's load_whisper_model(). It resolves ComfyUI/models/whisper/<name>.safetensors, and if that file isn't there, pulls just that one model from the author's silveroxides/ComfyUI-UtilsCollection-Models repo under audio/whisper/. The tensors are then streamed into a Whisper implementation the pack ships itself - a native PyTorch port, not a wrapper. No openai-whisper import, no TorchScript archive, no ffmpeg dependency.

    Loading goes through Unified Efficient Loader (UEL) and the result comes back wrapped in a ComfyUI CoreModelPatcher, so the model obeys the same device, dtype and offload rules as every other model in your graph. That also means it participates in ComfyUI's VRAM accounting like a normal model rather than living in a side process.

    The safetensors it accepts are strict, and deliberately so: the file's metadata has to declare architecture: openai-whisper and official_model: <the name you selected>, and the dimensions must match that size. A Whisper checkpoint converted from some other source won't carry that header and gets refused. That's a feature - it stops you from silently loading a tiny file you thought was large-v3.

    The input that matters

    There's exactly one: model_name, a combo of tiny, base, small, medium, large-v2, large-v3, defaulting to base.

    The list is fixed rather than a scan of your model folder, so all six always appear. Selecting one and running the node is what triggers the download - tiny and base are a few hundred megabytes, the large checkpoints are multiple gigabytes, so the first run of a big one will look like nothing is happening for a while. base is the sensible default and usually enough for clean narration; jump to large-v3 when the audio is noisy, accented, or full of proper nouns that base mangles.

    All of the listed checkpoints are the multilingual versions, so you're not locked to English by this choice.

    Files live in ComfyUI/models/whisper (the node registers that path with ComfyUI, so it shows up like any other model category). If you already have a matching file there, it's used as-is; an existing configured directory keeps priority, and an invalid checkpoint raises an error instead of being quietly replaced by a fresh download.

    Installing the pack

    ComfyUI Manager → search ComfyUI-UtilsCollection → Install → restart. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/silveroxides/ComfyUI-UtilsCollection
    pip install -r ComfyUI-UtilsCollection/requirements.txt
    

    The requirements are opencv-python, typing-extensions, unifiedefficientloader>=0.5.3, huggingface_hub and tiktoken. Two of those matter here: UEL does the streaming safetensors load, tiktoken provides the tokenizer, and huggingface_hub is what fetches the weights.

    Wiring it up

    The single output is whisper_model (WHISPER_MODEL). Wire it into the whisper_model input of Whisper Transcribe - that's the only consumer. It is a model object, not text, so don't try to push it into a text or LLM node.

    Where people get burned

    tiktoken isn't installed. You get Whisper requires tiktoken. Install tiktoken in ComfyUI's Python environment and restart ComfyUI. The pack is built to survive this: it loads fine, every non-Whisper node works, and only transcription fails. Install it into the same Python that runs ComfyUI - a pip install tiktoken into your system Python while ComfyUI runs in a portable venv does nothing.

    You expected a folder browser. The combo doesn't list what you have; it lists what the author supports. That's the trade for zero-config downloads.

    Categoryutils/audio

    Inputs (1)

    NameTypeDefaultDescription
    model_nameCOMBObaseUses models/whisper. Executing downloads only the selected model if missing.

    Outputs (1)

    NameTypeDescription
    whisper_modelWHISPER_MODEL