Nodes/ComfyUI-Qwen3-ASR/Qwen3 ASR Transcriber
ComfyUI Node

Qwen3 ASR Transcriber

Local speech-to-text that survives code-switching

By kaushiknishchay·Created 7 months ago·Updated 6 months ago· 29
Qwen3 ASR Transcriber
  • audio
  • forced_aligner
  • text
  • timestamps
model_name
languageauto
devicecuda
precisionbf16
max_new_tokens256
flash_attention_2false
chunk_size30
overlap2

This is the node that finally answers the old "Comfy when?" for Alibaba's Qwen3-ASR. It runs speech-to-text entirely on your machine - no API, no key, no upload - and it's built for exactly the cases that make Whisper miserable: mixed languages, accented speech, and mid-sentence switches from English into Hindi or Cantonese. Plug an audio file in, get clean text out, and optionally get word-level timestamps to go with it.

Qwen3-ASR is the speech branch of the Qwen family - the same Tongyi Lab line that gave local users Qwen-Image and Wan. It dropped in late January 2026 in two sizes, 0.6B and 1.7B, and the community's ComfyUI ports landed within about a day, which should tell you how wanted it was. The model family is billed at 52 languages and dialects; the node's dropdown gives you auto plus roughly thirty of the majors, and auto leans on the model's built-in language identification rather than a guess. One honest caveat from the early feedback: if your audio is a single clean language, a carefully tuned Whisper can still edge it (one lyric-video editor reported better results from tuned Whisper on clean metal vocals). Reach for Qwen3-ASR when the audio is messy, multilingual, or switching languages mid-sentence - that's where it stops fighting you.

How it works

Feed it the AUDIO output of a Load Audio node and it does the boring housekeeping for you. It downmixes to mono, resamples to 16 kHz internally - deliberately using torch's F.interpolate rather than librosa, which the author notes misbehaves on Python 3.13 - then transcribes. For anything longer than a few seconds it chunks the audio (default 30-second chunks with 2 seconds of overlap so context doesn't fall down the seams) and runs a progress bar, offsetting timestamps by each chunk's start time so the numbers line up across the whole file.

The model is cached per combination of model, device, precision, aligner, and attention backend, so re-runs don't reload from scratch. It also plays nice with ComfyUI's internals - it respects low-VRAM mode, purges its cache on Clear Cache, and honors the Cancel button mid-run.

The inputs that matter

  • audio - the one true required input; comes straight out of Load Audio.
  • model_name - a dropdown of folders found under models/diffusion_models/Qwen3-ASR/. If you haven't placed a model yet it literally reads "None Found (Place in models/diffusion_models/Qwen3-ASR/)".
  • language - auto by default. If you know the language, set it; it's faster and more accurate than guessing, though auto is impressively good.
  • chunk_size / overlap - defaults of 30s/2s are sane for long files. For a short clip set chunk_size to 0 and it does a single pass. The tooltip helpfully calls chunking "not recommended for long audio" when disabled.
  • forced_aligner (optional) - plug a Qwen3 Forced Aligner Config node in here to get timestamps out.

The rest - device, precision, max_new_tokens (256 default), flash_attention_2 - you'll touch once and leave alone. bf16 on a modern NVIDIA card is the right default; drop to fp16 or fp32 if you hit precision trouble.

Outputs

Two strings. text is the raw transcription - wire it into a Show Text or Save Text node, or downstream into an LLM node if you're building one of those podcast-to-notes workflows. timestamps is a formatted string with one line per aligned segment, like [0.00 - 0.42] hello. No aligner connected? It's just "No timestamps generated." That's expected, not a bug.

Installing it and the models it needs

Standard custom-node install - via ComfyUI Manager (search "ComfyUI-Qwen3-ASR" by Kaushik) or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/kaushiknishchay/ComfyUI-Qwen3-ASR
python.exe -m pip install -r ComfyUI-Qwen3-ASR/requirements.txt

The dependency list is heavier than the average image node: qwen-asr (the official model package), transformers, and accelerate, all into ComfyUI's shared Python environment - the classic no-isolation setup where a version bump can break an unrelated node, so expect some dependency whack-a-mole. FlashAttention 2 is optional and worth it on a compatible NVIDIA GPU:

python.exe -m pip install -U flash-attn --no-build-isolation

Models do not auto-download. Grab them into the exact folder structure the dropdown scans:

huggingface-cli download Qwen/Qwen3-ASR-1.7B --local-dir models/diffusion_models/Qwen3-ASR/Qwen3-ASR-1.7B

Where people get burned

Three things, in rough order of frequency. First, the dropdown is empty because the folder structure is wrong - it has to be diffusion_models/Qwen3-ASR/<ModelFolder>/, two levels deep. Second, Python 3.13 throws an UnboundLocalError from lazy_loader; the fix is pip install -U lazy-loader. Third, VRAM: the 1.7B model wants roughly 4-6 GB in bf16, so if you're below that, reach for the 0.6B or flip device to cpu. And a smaller gotcha specific to this pack: a second, independently-written ComfyUI-Qwen3-ASR (by DarioFT) shows up in the same Manager searches and auto-downloads its models. If your model dropdown is permanently empty, check which repo you actually grabbed.

CategoryQwen3-ASR

Inputs (10)

NameTypeDefaultDescription
audioAUDIOThe input audio to be transcribed.
model_nameCOMBOThe Qwen3 ASR model to use for transcription.
languageCOMBOautoThe language of the audio. Set to 'auto' for automatic language detection.
deviceCOMBOcudaThe device to run the ASR model on.
precisionCOMBObf16The numerical precision to use for the ASR model.
max_new_tokensINT2561–4096The maximum number of tokens to generate in the transcription.
flash_attention_2BOOLEANfalseEnable Flash Attention 2 for faster inference and lower VRAM usage.
chunk_sizeINT300–300Process audio in chunks of this many seconds. Set to 0 to disable chunking (not recommended for long audio).
overlapINT20–10Overlap between chunks in seconds to maintain context.
forced_aligneroptQWEN3_ALIGNER_CONFOptional configuration for the Qwen3 Forced Aligner to generate word-level timestamps.

Outputs (2)

NameTypeDescription
textSTRING
timestampsSTRING