Qwen3-ASR-ComfyUI / README.md
vdaular's picture PedroMarinhoDev's picture
Duplicate from PedroMarinhoDev/Qwen3-ASR-ComfyUI
255ab00
|
Raw History Blame Contribute Delete
4.04 kB
---
license: apache-2.0
base_model:
- Qwen/Qwen3-ASR-1.7B
- Qwen/Qwen3-ASR-0.6B
- Qwen/Qwen3-ForcedAligner-0.6B
pipeline_tag: automatic-speech-recognition
tags:
- comfyui
- qwen3-asr
- speech-recognition
- forced-alignment
---
# Qwen3-ASR for ComfyUI
<p align="center">
<img alt="ComfyUI v0.40+" src="https://img.shields.io/badge/ComfyUI-v0.40%2B-FFA931?style=flat-square&labelColor=555">
<img alt="30 languages" src="https://img.shields.io/badge/languages-30-FFA931?style=flat-square&labelColor=555">
<img alt="Apache 2.0" src="https://img.shields.io/badge/license-Apache%202.0-FFA931?style=flat-square&labelColor=555">
</p>
<p align="center">
<a href="https://github.com/PedroMarinhoDev/ComfyUI-Drama3"><b>Nodes on GitHub</b></a> ·
<a href="https://huggingface.co/PedroMarinhoDev/Drama-3-ComfyUI"><b>Drama 3 for ComfyUI</b></a> ·
<a href="https://huggingface.co/Qwen/Qwen3-ASR-1.7B"><b>The original model</b></a>
</p>
Qwen's **[Qwen3-ASR](https://huggingface.co/Qwen/Qwen3-ASR-1.7B)** speech recognition, one file per size, for the
native nodes in **[ComfyUI-Drama3](https://github.com/PedroMarinhoDev/ComfyUI-Drama3)**: speech to text in 30
languages and 22 Chinese dialects, singing included. In that pack it writes a voice clip's transcript straight into
Drama 3's Encode Voice, and it works on any audio. **Qwen3-ForcedAligner** gives the time of every word, so the
Drama 3 Editor's captions follow the voice word by word. The nodes run both on ComfyUI's own Qwen3 decoder with a
native audio encoder: no extra Python packages.
## Files
| File | Size | Notes |
|---|---|---|
| [`qwen3_asr_1.7b_bf16.safetensors`](qwen3_asr_1.7b_bf16.safetensors) | 4.1 GB | the larger model |
| [`qwen3_asr_0.6b_bf16.safetensors`](qwen3_asr_0.6b_bf16.safetensors) | 1.6 GB | nearly the same transcripts of clean speech in our tests, in half the time |
| [`qwen3_forced_aligner_0.6b_bf16.safetensors`](qwen3_forced_aligner_0.6b_bf16.safetensors) | 1.8 GB | Qwen3-ForcedAligner: the time of every word, for the Drama 3 Editor |
All go in `ComfyUI/models/asr`. A 6.6 s clip takes ~2 s with the 1.7B and ~1 s with the 0.6B on an RTX 3090, model
load included.
```bash
hf download PedroMarinhoDev/Qwen3-ASR-ComfyUI qwen3_asr_1.7b_bf16.safetensors --local-dir ComfyUI/models/asr
```
Then add **Load Qwen3-ASR** and **Qwen3-ASR Transcribe** in ComfyUI: `language` detects the language or forces one,
`context` takes names and terms that help recognition, and the node returns the text and the language.
For word timing, load the aligner with **Load Qwen3-ASR** and connect it to the **Drama 3 Editor**'s `aligner` input:
```bash
hf download PedroMarinhoDev/Qwen3-ASR-ComfyUI qwen3_forced_aligner_0.6b_bf16.safetensors --local-dir ComfyUI/models/asr
```
## How close it is to Qwen's code
Against Qwen's `qwen-asr` package on five clips and three prompt variants per size: the prompt ids are identical, the
encoder output matches within 1e-6 in fp32, the first generated token is the same, and the transcripts match on clips
up to 8 s. On longer clips the encoder attends in Qwen's 8 s windows, as their vLLM backend does (their transformers
backend attends across the whole clip), which can move a comma.
The aligner, against Qwen's own on a 40 s take: 121 of 131 words get the same times, and every other word is within
0.16 s.
## How these files were made
The original checkpoints' bf16 tensors, unchanged, in one file each, with the pack's `tools/convert.py asr`: the audio
encoder under `audio_tower.` and the decoder under `decoder.model.`. The LM head is left out because it is the
embedding table (checked tensor for tensor), and the model config is stored in the file's metadata. The aligner keeps
its head, which classifies each word's time in 80 ms steps, as `timestamp_head.weight`.
## License
Apache License 2.0, as the original models ([LICENSE](LICENSE), [NOTICE](NOTICE)). Qwen3-ASR is by the
[Qwen team](https://github.com/QwenLM/Qwen3-ASR); this repository is not affiliated with or endorsed by it.