Instructions to use SayedShaun/Qwen3-ASR-0.6B-Bengali with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use SayedShaun/Qwen3-ASR-0.6B-Bengali with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="SayedShaun/Qwen3-ASR-0.6B-Bengali")# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("SayedShaun/Qwen3-ASR-0.6B-Bengali") model = AutoModelForMultimodalLM.from_pretrained("SayedShaun/Qwen3-ASR-0.6B-Bengali", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Qwen3-ASR-0.6B โ Bengali (merged)
Qwen3-ASR-0.6B fine-tuned to
transcribe Bengali โ a language the base model wasn't pretrained on โ with
the LoRA adapter
merged into the base weights. This repo holds a plain, standalone
Qwen3ASRForConditionalGeneration checkpoint: no PEFT/adapter loading step,
so it drops straight into any tool that already knows how to serve
Qwen3-ASR, including vLLM.
Trained on Bengali audio only, so non-Bengali audio comes out as garbled
phonetic Bengali rather than that language. Merging is one-way โ unlike
the LoRA repo, there is no model.disable_adapter() escape hatch here to
recover the original multilingual model. If you need both Bengali and the
base model's other languages from one set of weights, use the
LoRA adapter
instead.
Results
| split | utterances | WER | CER |
|---|---|---|---|
| test (full, held-out) | 10,485 | 14.74% | 5.34% |
Scored on the full held-out test set (pre-merge, on the LoRA adapter this was merged from), with the generation budget sized to each clip's length. Training was monitored throughout on a small dev sample and stopped at 72k of a planned 90k steps once that curve plateaued.
Training
- Base:
Qwen/Qwen3-ASR-0.6B-hf, frozen, bf16 - LoRA: r=64, alpha=64, dropout 0.05, on attention + MLP in both the decoder and audio encoder โ 59.2M trainable params (7.0% of 841.6M), merged into the base weights for this repo
- Optimizer: batch 32 (2 ร 16 grad accumulation), LR 1e-4 cosine, bf16, gradient checkpointing
- Hardware: 1x NVIDIA RTX 5080
- Code: sayedshaun/qwen3-asr-finetune-bn
Data
753,378 Bengali utterances (1,174 h, 0.5โ20s clips) from 9 sources:
| source | utterances | hours | share |
|---|---|---|---|
| IndicVoices (AI4Bharat) | 309,683 | 599.7 h | 51.1% |
| OpenSLR-53 โ Large Bengali ASR training data set | 214,324 | 211.2 h | 18.0% |
| Vaani (ARTPARK / IISc) | 114,628 | 159.0 h | 13.5% |
| Kathbath (AI4Bharat) | 46,458 | 82.3 h | 7.0% |
| Mozilla Common Voice (via Mozilla Data Collective) | 43,892 | 73.2 h | 6.2% |
| Shrutilipi (AI4Bharat) | 17,521 | 27.4 h | 2.3% |
FLEURS bn_in (Google) |
3,921 | 13.2 h | 1.1% |
| OpenSLR-37 โ High quality TTS data for Bengali | 1,850 | 2.9 h | 0.2% |
| Ben-10 (Bengali.AI) | 1,101 | 4.9 h | 0.4% |
IndicVoices and OpenSLR-53 alone make up 69% of the hours โ worth keeping in mind when judging what conditions this model is well calibrated for.
Usage (transformers)
Requires transformers>=5.13.0.
import torch
from transformers import AutoProcessor, Qwen3ASRForConditionalGeneration
MODEL = "SayedShaun/Qwen3-ASR-0.6B-Bengali"
processor = AutoProcessor.from_pretrained(MODEL)
model = Qwen3ASRForConditionalGeneration.from_pretrained(
MODEL, dtype=torch.bfloat16
).eval().to("cuda")
conversation = [
{"role": "user", "content": [{"type": "audio", "path": "clip.wav"}]},
{"role": "assistant", "content": [{"type": "text", "text": "language Bengali<asr_text>"}]},
]
inputs = processor.apply_chat_template(
conversation, tokenize=True, return_dict=True,
padding=True, continue_final_message=True,
).to(model.device, model.dtype)
with torch.no_grad():
out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
text = processor.batch_decode(
out[:, inputs["input_ids"].shape[1]:], skip_special_tokens=True
)[0]
print(text.split("<asr_text>", 1)[-1].strip())
For clips longer than a few seconds, size max_new_tokens to the audio's
duration (~30 tokens/second is a safe rate) โ a small fixed value will
silently truncate the transcript.
Usage (vLLM)
Because this repo is a plain Qwen3ASRForConditionalGeneration checkpoint
(no adapter to load), it serves like any other Qwen3-ASR model. vLLM lists
Qwen3ASRForConditionalGeneration as a supported transcription architecture
with an OpenAI-compatible API:
vllm serve SayedShaun/Qwen3-ASR-0.6B-Bengali
Then transcribe against the OpenAI-compatible transcriptions endpoint:
curl http://localhost:8000/v1/audio/transcriptions \
-H "Authorization: Bearer EMPTY" \
-F file=@clip.wav \
-F model=SayedShaun/Qwen3-ASR-0.6B-Bengali
Check vllm serve --help / the vLLM release you're on for exact flags โ
serving details for newer architectures can shift between versions. vLLM's
supported-models list also shows LoRA support for this architecture, so the
unmerged adapter repo
can alternatively be served directly on top of the base model without a
separate merge step.
License
Released under the Apache License 2.0, the same license as the base model Qwen/Qwen3-ASR-0.6B-hf. Free for commercial and non-commercial use, modification, and redistribution, with attribution.
- Downloads last month
- 49
Model tree for SayedShaun/Qwen3-ASR-0.6B-Bengali
Base model
Qwen/Qwen3-ASR-0.6B-hf