Qwen3-ASR Batch Transcribe
Batching Qwen3-ASR transcription
- model
- audio_list
- transcriptions
The batch version of a transcription node is where you land once the single-clip version has already done its job and you've realized the boring part isn't the transcribing, it's running it a dozen times. Qwen3-ASR Batch Transcribe from DarioFT's ComfyUI-Qwen3-ASR takes a pile of audio in through one input and hands you one transcript of everything, all locally - no API, no key, no upload.
What you're actually running
Underneath is Alibaba's Qwen3-ASR, an open (Apache-2.0) speech-to-text model that hit in early 2026 to a warm reception and covers 30 languages plus 22 Chinese dialects. It's a small model family - 1.7B for best quality, 0.6B for speed - small enough that people were running the 1.7B happily on a Google Colab free tier, which tells you it'll fit whatever you've got. DarioFT shipped this pack basically the day the model landed, as the speech-to-text half of a voice-cloning workflow that pairs with his ComfyUI-Qwen3-TTS pack: transcribe a reference clip automatically, then clone the voice. That's the workflow the README leads with, and the batch node is the "now do it for a whole dataset" extension of it.
Mechanically it's the sibling of the single Qwen3-ASR Transcribe node, sharing its QWEN3_ASR_MODEL input. You feed it the model from the Qwen3-ASR Loader plus an audio_list, and it iterates: each item gets converted to a mono waveform, all of them go into one model.transcribe(...) call (the loader sets max_inference_batch_size=32), and each result comes back formatted as [i] (language): text. Turn on return_timestamps and each entry gets indented start-end: text lines beneath it. Note that one forced language applies to every file in the batch - the loader's auto-detection runs per-file, but a manually set language doesn't.
The inputs that matter
The schema is tiny. You'll set two things, sometimes three:
- model - from the Loader. Pick 1.7B (accuracy) or 0.6B (speed/VRAM) there.
- audio_list - AUDIO type, so it takes whatever
LoadAudioemits. One clip, severalLoadAudionodes wired into the same input (ComfyUI passes them as a list), or a folder/wildcard audio loader from a pack like data_handling_node. The node accepts either a single clip or a list, so it doesn't fuss about which. - language - default
auto; force it only when the file's multilingual or noisy. - return_timestamps - off by default; see below before flipping it.
The one output, transcriptions, is a single STRING with every file's result in one blob. That's the honest trade-off: if you need each file's text as a separate value to wire into downstream nodes, this isn't the node - use the single Transcribe node per clip. The batch node is for "give me the text out of all of this."
Installing it
ComfyUI Manager, search Qwen3-ASR, install, restart. One caution: more than one pack answers to a name like that - make sure the one you're getting is DarioFT's (repo DarioFT/ComfyUI-Qwen3-ASR). Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/DarioFT/ComfyUI-Qwen3-ASR.git
cd ComfyUI-Qwen3-ASR
pip install -r requirements.txt
Its requirements are qwen-asr, modelscope, soundfile, torch, transformers, accelerate. Models auto-download on first run into ComfyUI/models/Qwen3-ASR/ - the 1.7B is a few GB, so the first run has a download wall to sit through.
Where people get burned
- Timestamps come back empty.
return_timestampsonly does anything if you also set a ForcedAligner on the Loader node - and the aligner doesn't support every language the ASR model does. Hindi, famously, produces partial or missing alignments. Set it on the Loader, not here. - Blank output, no error. The node silently returns
""if it gets no usable audio. If a batch comes back empty, check theLoadAudioside first. - Silently long first run. That auto-download has no progress bar in the node; watch the terminal.
- The same-name pack trap in Manager mentioned above - wrong repo, confusing week.
If you're building the TTS pairing, this is the node that turns "I have a voice clip" into "the model already knows what they said" without a manual transcript. Just don't expect per-file outputs out of it.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model | QWEN3_ASR_MODEL | — | |
| audio_list | AUDIO | — | |
| languageopt | COMBO | auto | 31 options: auto, Chinese, English, Cantonese, Arabic, German, +25 |
| return_timestampsopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| transcriptions | STRING | — |