Nodes/ComfyUI_QwenVL_PromptCaption/ASID Captioner (Video Inverse Prompt)
ComfyUI Node

ASID Captioner (Video Inverse Prompt)

The video node that listens while it looks

By WingeD123·Created 10 months ago·Updated 4 months ago· 46
ASID Captioner (Video Inverse Prompt)
    • text
    model_path
    dtypeauto
    keep_model_loadedfalse
    unload_other_modelstrue
    lang中文
    video_path
    use_audiotrue
    max_side504
    instruction

    Most caption nodes look at an image and ignore everything else. ASID Captioner is the odd one in this pack because it doesn't - it watches a video and, by default, listens to its audio track too, then writes a prompt describing what happened. That makes it the right tool for a job the Qwen nodes can't do: turning a clip into a text-to-video prompt that captures motion, and, if the clip has speech or sound, the dialogue and soundscape as well. If you've been manually writing Wan or LTX video prompts from source clips, this is the node that automates the boring half.

    It ships in WingeD123/ComfyUI_QwenVL_PromptCaption, but it's a different beast under the hood. Where the Qwen nodes use Qwen3VLForConditionalGeneration or similar, ASID uses Qwen2.5-Omni - the omnimodal variant that takes audio plus vision. The actual model comes from Hugging Face's AudioVisual-Caption org: ASID-Captioner-3B or -7B.

    How it works

    You hand it a video_path. It extracts frames and, if use_audio is on, pulls the audio track, and runs the whole thing through the captioner with the pack's prompt-inversion instruction. To decode audio and video it leans on librosa and imageio-ffmpeg - the pack even symlinks the imageio_ffmpeg binary into its own folder and puts it on PATH so ffmpeg is found without you installing anything separately. That's the kind of dependency babysitting that usually bites people, and they did it for you. It keeps the same keep_model_loaded / unload_other_models / dtype machinery as the Qwen nodes, plus a result cache keyed on video path, max_side, and the audio toggle.

    The inputs that matter

    • video_path - path to the video file. This is your input instead of an IMAGE tensor; the node reads from disk, so feed it a real file path.
    • use_audio - default True. This is the "listen while it looks" switch. If your video has no audio track at all and this is True, the source code itself warns it can error - so flip it off for silent footage.
    • max_side - frame long-edge pre-scale, default 504, stepping in 28s (the Qwen2.5 tile convention, since this rides on Qwen2.5-Omni).
    • lang - 中文 or English.
    • dtype / keep_model_loaded / unload_other_models - same semantics as the Qwen nodes.
    • instruction - optional override for the caption prompt.

    Output: a single text STRING with the generated prompt.

    Install and model setup

    ComfyUI Manager (search "ComfyUI_QwenVL_PromptCaption") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/WingeD123/ComfyUI_QwenVL_PromptCaption
    

    then restart. Dependencies include transformers>=5.2.0, accelerate, peft, bitsandbytes, plus librosa and imageio-ffmpeg for the media side. Download ASID-Captioner-3B or -7B from Hugging Face and place it in ComfyUI/models/text_encoders - no auto-download, as always with this pack. The 7B is noticeably better on dense scenes and clear dialogue, but the 3B is the pragmatic pick on 8GB cards.

    Troubleshooting

    The most common stumble is use_audio left on for a video with no audio - the node can throw. If it does, set use_audio to False for that clip. A "Failed to load model" return means the model isn't in text_encoders or transformers is too old for the Qwen2.5-Omni classes. And don't expect ASID to be fast: processing video frames plus audio is heavier than a single-image caption, so batch long clips in smaller pieces rather than one giant file. Keep max_side modest unless you need frame detail - video VRAM adds up fast.

    Categoryimage/caption

    Inputs (9)

    NameTypeDefaultDescription
    model_pathCOMBO0 options:
    dtypeCOMBOauto3 options: auto, 4bit, 8bit
    keep_model_loadedBOOLEANfalse
    unload_other_modelsBOOLEANtrue
    langCOMBO中文2 options: 中文, English
    video_pathSTRING
    use_audioBOOLEANtrue
    max_sideINT504252–2240
    instructionoptSTRING

    Outputs (1)

    NameTypeDescription
    textSTRING