Downloads · 30 days
45
11% of all-time downloads
oddadmix/qwen3-asr-0.6b-arabic-dialectal
qwen3-asr-0.6b-arabic-dialectal is a automatic speech recognition model from oddadmix. Use it when you need speech turned into text. It is set up for transformers. The card lists the license as apache-2.0.
Fine-tune of Qwen/Qwen3-ASR-0.6B-hf (0.6B (938M)) for multi-dialect Arabic speech recognition (undiacritized output).
Downloads · 30 days
45
11% of all-time downloads
All-time downloads
408
Public
Parameters
782M
1.6 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors1.6 GB · 99%
From the Hugging Face model README
Fine-tune of Qwen/Qwen3-ASR-0.6B-hf
(0.6B (938M)) for multi-dialect Arabic speech recognition (undiacritized output).
Private / internal model. Evaluate on your own data before production use.
| WER | CER | |
|---|---|---|
| Base (Qwen3-ASR-0.6B-hf, zero-shot) | 0.756 | 0.454 |
| This model (fine-tuned) | 0.676 | 0.408 |
LLM-ASR (multimodal). Full fine-tune, targets stripped of tashkil + tags (trial t3). 3 epochs. Needs transformers>=5.14 for qwen3_asr.
Same 932-clip held-out test set, same clean_text scoring (strip tashkil + tags,
keep punctuation + dialect spelling) — so every row is directly comparable.
| Model | Params | Zero-shot WER | Fine-tuned WER | CER (best) |
|---|---|---|---|---|
| whisper-large-v3-turbo 🏆 | 809M | 0.590 | 0.344 | 0.115 |
| cohere-transcribe-arabic | 2.0B | 0.457 | 0.357 | 0.137 |
| whisper-medium | 769M | 0.717 | 0.358 | 0.123 |
| nemotron-3.5-asr (streaming) | 638M | 0.592 | 0.422 | — |
| whisper-small | 244M | ~0.77 | 0.428 | 0.151 |
| qwen3-asr-0.6b | 938M | 0.756 | 0.676 | 0.408 |
| qwen3-asr-1.7b | 1.7B | — | training | — |
whisper-large-v3-turbo (WER 0.344), with cohere-transcribe-arabic
a close second (0.357).cohere-transcribe-arabic (0.457, Arabic-specialized). A full
fine-tune (all ~2B params, low LR) now improves it to 0.357; an earlier 32 GB
LoRA attempt had instead degraded it (0.510, overfit) — full-parameter tuning
with best-checkpoint selection was the fix.nemotron-3.5-asr.Fine-tuned on oddadmix/dialectal-arabic-lahgtna-v2-smaller-augmented (private).
augmentation column. Derived from
oddadmix/dialectal-arabic-lahgtna-v2-smaller.[laughter], [exhale], [inhale], [mumble], [cough], timestamps, …).Qwen/Qwen3-ASR-0.6B-hf · full fine-tune (no LoRA)The exact fine-tuning code is bundled in this repo (train_qwen.py, normalize.py, eval_hf_asr.py) plus requirements.txt. See FINETUNE.md for the full walkthrough + lessons learned. Trained on oddadmix/dialectal-arabic-lahgtna-v2-smaller-augmented (private) — swap in any HF audio dataset with audio + text columns. normalize.py is the shared text cleaning (strip tashkil + non-verbal tags, keep dialectal letters گ ڨ چ).
pip install -r requirements.txt # recent transformers (qwen3_asr) + peft
python train_qwen.py --model_id Qwen/Qwen3-ASR-0.6B-hf \
--dataset_name oddadmix/dialectal-arabic-lahgtna-v2-smaller-augmented --audio_column audio --text_column text \
--eval_split test --language Arabic --strip_tashkil --strip_tags \
--output_dir my-run
python eval_hf_asr.py --model_type qwen --model my-run # WER / CER
Note: Qwen3-ASR's chat template drops the transcript during training — train_qwen.py
builds the target manually with the prompt masked to -100 (see its DataCollator).
# needs transformers>=5.14 (ships the qwen3_asr architecture)
import torch, torchaudio
from transformers import AutoProcessor, Qwen3ASRForConditionalGeneration
repo = "oddadmix/qwen3-asr-0.6b-arabic-dialectal"
proc = AutoProcessor.from_pretrained(repo)
model = Qwen3ASRForConditionalGeneration.from_pretrained(
repo, torch_dtype=torch.bfloat16).to("cuda").eval()
wav, sr = torchaudio.load("clip.wav") # 16 kHz mono
inp = proc.apply_transcription_request(audio=wav.mean(0).numpy(),
language="Arabic").to(model.device, model.dtype)
ids = model.generate(**inp, max_new_tokens=256)
print(proc.batch_decode(ids, skip_special_tokens=True)[0])
numba==0.61.2 + NUMBA_CUDA_USE_NVIDIA_BINDING=1 +
cuda-python<13 to emit sm_120 code, and fp32 (the numba loss can't take
bf16). Nemotron 3.5 requires NeMo main (its EncDecRNNTBPEModelWithPrompt
class isn't in any release) and a per-sample lang=ar prompt.