Nodes/Qwen3 ASR (endman100)/Qwen3 ASR - Transcribe File
ComfyUI Node

Qwen3 ASR - Transcribe File

Drop a file in ComfyUI/input and get a transcript back

By endman100·Created 2 months ago·Updated 2 months ago· 0
Qwen3 ASR - Transcribe File
    • transcript
    • language
    • metadata_json
    audio
    model_nameQwen/Qwen3-ASR-0.6B
    custom_model_id
    deviceauto
    dtypeauto
    languageauto
    context
    max_new_tokens256

    If you have an audio or video file sitting in ComfyUI/input and want the words out of it, this is the node. It's the file-picking sibling of the pack's Qwen3 ASR - Transcribe Audio node: instead of an AUDIO wire from other nodes, you get a dropdown of the audio and video files in your input directory, transcribed by Alibaba's Qwen3-ASR model running locally. No API, no key, nothing uploaded anywhere.

    Qwen3-ASR is the Qwen team's speech-to-text model, out since January 2026 and one of the better local ASR options around - strong multilingual support (30 languages plus dialects) with auto-detection, in two sizes: 0.6B (fast, the default) and 1.7B (better quality, still Colab-friendly). If you've been limping along with Whisper or an online transcription service, this is the run-it-locally alternative that's actually pleasant.

    When you'd reach for it

    • Transcribing existing recordings - interviews, voice notes, clips you dropped into the input folder and never processed.
    • Video-to-text - it accepts video files too, so you can transcribe a clip directly without extracting the audio track first.
    • Batch-adjacent work - no folder input, but swapping the audio dropdown and re-running is fast, and the node skips files it has already transcribed unchanged.

    This is the "I already have the file" workflow. The sibling Audio node is for sound generated inside the graph - say, a TTS output you want transcribed before cloning a voice.

    The inputs that matter

    Same schema as its sibling; you'll set three things:

    • audio - the file dropdown, listing audio and video files from your input directory. That's the whole difference from the other node: a ComfyUI file selector, not an AUDIO wire.
    • language - auto by default and it genuinely works, but pinning it (full names like English, or ISO codes like en/zh that the pack maps) gives more consistent output.
    • context - a multiline box for names, jargon, or vocabulary the model keeps mangling. ASR models have no idea what "Qwen" or your buddy's username is unless you tell them.
    • max_new_tokens (default 256), model_name, custom_model_id, device, dtype - all fine on their defaults. custom_model_id points at a newer HF id; it overrides the dropdown.

    What comes out

    Three string outputs:

    • transcript - the recognized speech, previewed on the node (showing [No speech detected] on silence) and ready to feed a Show Text node, an LLM, or anything that takes a string.
    • language - detected or requested, for when you left it on auto and want to know what it heard.
    • metadata_json - model wrapper metadata (language, text, time_stamps, requested model). Mostly useful for logging.

    Set expectations once: there are no word-level timestamps. The qwen-asr package needs the separate Qwen3 ForcedAligner model for that mode, and this pack doesn't expose it. If you need SRT subtitles or karaoke timing, use a different tool - even the aligner route misses languages (Hindi is a known gap). This node answers "what did they say," not "at exactly which second."

    How it works

    The audio dropdown is built by scanning ComfyUI's input directory for audio and video files (folder_paths handles the mapping, so paths just work). On run it loads the model via qwen-asr - cached after the first call, device: auto meaning CUDA if you've got it, float32 on CPU (the 1.7B there is slow but workable; stick to 0.6B). It hashes each file's contents so it re-runs only when the file changes, and it validates your selection up front rather than failing mid-run.

    Install

    ComfyUI Manager (search the pack title ComfyUI-Qwen3-ASR) or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/endman100/ComfyUI-Qwen3-ASR
    

    Then install the requirements in the same Python environment ComfyUI uses, and restart:

    pip install -r ComfyUI/custom_nodes/ComfyUI-Qwen3-ASR/requirements.txt
    

    That installs qwen-asr from the author's compatibility fork (lower-bound-only pins so newer Qwen3-ASR releases don't break); the first transcribe downloads weights from Hugging Face.

    Common issues

    • File not showing in the dropdown? It has to live in ComfyUI's input directory, and the picker filters to audio/video content types. Drop the file there and refresh the node.
    • First run is slow - that's the one-time HF weight download, not a hang. 0.6B is small; 1.7B chunkier.
    • Dependency stack. Audio nodes in ComfyUI are a known dependency-conflict minefield, and this one wants a fairly modern transformers (>=4.57.6). If something else in your install pins transformers older, expect friction - the README's own answer is to reinstall with pip install -U -r requirements.txt.
    • Trust check. It's a small pack (one nodes.py), loads weights from Hugging Face, installs from a personal fork - worth a skim, since custom nodes execute arbitrary Python with your OS access. The loose-pins fork is a deliberate maintenance choice, and the main reason to glance at the code rather than assume.
    Categoryaudio/qwen3-asr

    Inputs (8)

    NameTypeDefaultDescription
    audioCOMBO1 options:
    model_nameCOMBOQwen/Qwen3-ASR-0.6B2 options: Qwen/Qwen3-ASR-0.6B, Qwen/Qwen3-ASR-1.7B
    custom_model_idSTRING
    deviceCOMBOauto3 options: auto, cuda, cpu
    dtypeCOMBOauto4 options: auto, bfloat16, float16, float32
    languageCOMBOauto31 options: auto, English, Chinese, Cantonese, Arabic, German, +25
    contextSTRING
    max_new_tokensINT25616–4096

    Outputs (3)

    NameTypeDescription
    transcriptSTRING
    languageSTRING
    metadata_jsonSTRING