Canary-Qwen-2.5B ASR (Audio→Text)
Speech-to-text in your ComfyUI graph, minus the API key
- audio
- text
If your workflow ever needs to turn audio into text - subtitles for a clip you're about to re-render, a transcript of a voiceover, a spoken prompt handed to an LLM - this node does it on your machine, not on some vendor's server. CanaryQwenASR wraps NVIDIA's Canary-Qwen-2.5B, a 2.5-billion-parameter speech-language model from the NeMo toolkit. No API, no key, nothing leaves your box. The real story is the price of admission: the node drags the entire NeMo toolkit in with it, and that install is where most people bounce off.
How it works
You feed it a standard ComfyUI AUDIO input. The node downmixes to mono, resamples to 16kHz, writes a temp WAV into ComfyUI's temp directory, loads the model once from models/asr, and caches it in memory so the second run is fast. Then it builds a prompt like "Transcribe the following: <audio>" using the model's audio locator tag, generates, and decodes the tokenizer output to a string.
The interesting bit is that this is a promptable ASR model, not a fixed transcriptor. The default user_prompt is just "Transcribe the following:" - but the model responds to instructions, so you can nudge it toward punctuation, formatting, or a different transcription style and it usually plays along. That's the whole reason the author exposed it as an input instead of hardcoding it.
Inputs and outputs that matter
audio- wire in anything that emits anAUDIOdict (Load Audio, video nodes). Honest caveat from the source: if you pass a batch, only the first item is transcribed.model_dir- a dropdown built from folders insidemodels/asr. If it shows(models/asr not found), that's your problem, spelled out.device(cuda/cpu) anduse_bf16(default on) - bf16 needs an Ampere-or-newer GPU; flip it off on older cards.max_new_tokens(default 128, cap 1024) - long clips want more. If your transcript cuts off mid-sentence, this is the first knob to turn.- Output: a single
textstring, ready to wire into any text input - a prompt node, an LLM node, a text preview, whatever.
Installing it
ComfyUI Manager will find it if you search for "comfyui-lopi999-llm" (or the "lopi999" family). The manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/LaVie024/comfyui-lopi999-llm
# restart ComfyUI
Then the model. The README is emphatic: download the entire nvidia/canary-qwen-2.5b repo from HuggingFace - not just the safetensors. It needs config, tokenizer, and the audio encoder files alongside the weights. Put the whole folder at ComfyUI/models/asr/canary-qwen-2.5b and restart so the dropdown picks it up.
Common issues
(models/asr not found)- you skipped the model step. Createmodels/asr, drop the folder in, restart.- NeMo dependency clashes. The pack's requirements.txt installs
nemo_toolkit[asr,tts]straight from NVIDIA's git, which is a chunky build that pins packages and can disagree with ComfyUI's torch version. The node lazy-imports NeMo so ComfyUI still boots fine - the failure just shows up on your first transcription. If it dies there, that's a NeMo/torch version fight, not a node bug. - Resample quality. The built-in resampler is plain linear interpolation - the code itself notes torchaudio would do better. For 44.1k/48k sources it's acceptable for speech, but don't expect audiophile-grade resampling.
The honest take: this is a genuinely newer ASR model than the usual Whisper nodes, and there's essentially zero community chatter about it yet - you're an early adopter and you may be debugging alone. The payoff is a real modern ASR inside your graph for free, forever, once you survive the install.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| model_dir | COMBO | 1 options: (models/asr not found) | |
| device | COMBO | cuda | 2 options: cuda, cpu |
| use_bf16 | BOOLEAN | true | — |
| max_new_tokens | INT | 1281–1024 | — |
| user_promptopt | STRING | Transcribe the following: | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |