ASR (QwenASR)
Local speech-to-text, no API key required
- audio
- TEXT
This node is speech-to-text that stays on your machine. Drop an audio file in, get a plain-text transcript out, and never hand your recordings to some API you didn't read the terms of. The name is a lie in the best way - it doesn't call any service and needs no key; Qwen's ASR models are downloaded once, cached locally, and run through your own GPU.
Qwen3-ASR is a fresh model family (released January 2026, hot on the heels of a couple of rival open ASR releases), and a bunch of ComfyUI packs rushed to wrap it within days. This one, by 1038lab (the same folks behind ComfyUI-QwenTTS), is pitched as the lightweight, no-fuss option - just two nodes, sensible defaults, and local model caching. It slots naturally into the wider graph: load audio, transcribe, feed the text to a ShowText node, or hand it to a TTS pack to re-voice something. If you've ever built a voice-cloning workflow, you already know the annoying manual step this kills - typing out what a reference clip actually says.
How it works
Under the hood it wraps Qwen3-ASR through transformers with the usual torch pipeline: your ComfyUI AUDIO (a waveform plus sample rate) gets normalized and mono-mixed, then fed to the model. Long files are chunked automatically inside the model pipeline, so a 10-minute podcast doesn't blow up your VRAM. The model loads in bf16 by default (fp16 on Apple Silicon, since MPS doesn't do bf16), and the loaded weights are cached per settings - bump the batch or switch precision and it reloads, otherwise it stays warm between runs.
The model itself lands in ComfyUI/models/Qwen3-ASR/, and the first run auto-downloads whichever repo you pick. Two sizes are offered: 0.6B (default) and 1.7B. If your audio is clean English, 0.6B is plenty and way faster; reach for 1.7B when you've got noise, accents, or messy conversational audio.
The inputs that matter
Most of these you'll never touch. The few that count:
- audio - the one required input. Wire it from LoadAudio (or any node that emits an
AUDIO). - model -
Qwen/Qwen3-ASR-0.6BvsQwen/Qwen3-ASR-1.7B. Speed vs accuracy. - language -
autoby default, or force one of the 30 languages. Worth setting when the auto-detect gets confused between close languages. - hints - this one's underrated. It's a free-form context string of names, jargon, or product terms ("Kubernetes", "CivitAI") that genuinely improves recognition of words the model would otherwise mangle.
- unload_models - defaults to
True, which frees VRAM after each run. If you're transcribing a batch in a loop, flip it toFalseso the model stays cached and you're not reloading every frame.
Output: a single TEXT string. Feed it to ShowText or SaveText, or straight into another node's prompt input.
Installing it
Simplest path is ComfyUI Manager - search QwenASR (the README suggests searching "ASR") and install ComfyUI-QwenASR. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/1038lab/ComfyUI-QwenASR.git
cd ComfyUI-QwenASR
pip install -r requirements.txt
Then restart ComfyUI. Two gotchas: the dependency list is heavier than it looks - transformers>=4.57 (Qwen3-ASR needs a recent transformers), torchaudio, modelscope, and a trio of tokenization libs (nagisa, soynlp, DyNet38) that are what enable the wide language list. And the first transcription isn't instant: it's downloading a few gigabytes of weights, which can look like a hang. Watch the console for the download progress.
Common issues
- "qwen-asr not available" - the most common failure, and it means dependencies didn't install (or you upgraded the environment and broke a pinned lib). Re-run
pip install -r requirements.txtin the pack folder. - Download slow or stalled - you're probably outside mainland China pulling from HuggingFace, or inside it. The README's tip is the fix: edit
config.jsonin the pack root to set"source": "ModelScope", which is far faster from China. - Model won't unload / VRAM creep - flip
unload_modelstoTruebetween runs, or restart ComfyUI. Keep itFalseonly for deliberate batch loops. - Terrible transcripts on niche languages - try forcing the language instead of
auto, and feed hints for domain terms.
One honest caveat: this pack is young and small, so don't expect a wall of community troubleshooting threads if something breaks - the README and the GitHub repo are your best bet, and both are well-written.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | Audio input to transcribe. | |
| modelopt | COMBO | Qwen/Qwen3-ASR-0.6B | Choose the ASR model size. |
| precisionopt | COMBO | bf16 | Inference precision. |
| languageopt | COMBO | auto | Force language or auto-detect. |
| hintsopt | STRING | Optional hints/keywords (names, terms) to improve recognition. | |
| unload_modelsopt | BOOLEAN | true | Unload cached model after inference. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| TEXT | STRING | — |