Results
Table with columns: Metric, Zero-shot (base), Fine-tuned, Improvement| Metric | Zero-shot (base) | Fine-tuned | Improvement |
|---|
| WER | 14.41% | 11.49% | -20% |
| CER | 6.57% | 5.78% | -12% |
Evaluated on 849 KSA Arabic validation samples.
What improved
- Better handling of KSA dialect expressions and vocabulary
- Removes spurious punctuation that the base model adds
- Matches informal Saudi dialect spelling conventions
Training Details
- Base model: vadimbelsky/qwen3-asr-arabic-uae (itself fine-tuned from Qwen3-ASR-1.7B on UAE data)
- Training data: ~7,350 KSA Saudi Arabic dialect samples from vadimbelsky/KSA_Arabic_English_Dataset_13k
- Strategy: Audio encoder frozen, only LLM decoder fine-tuned (84.4% of params)
- Precision: bfloat16
- Epochs: 3
- Effective batch size: 32 (batch 2 x gradient accumulation 16)
- Learning rate: 1e-5 with linear schedule (lower than UAE stage)
- Gradient checkpointing: enabled
- Text normalization: Diacritics removed, alef/teh marbuta normalized, punctuation stripped
Usage
from qwen_asr import Qwen3ASRModel
model = Qwen3ASRModel.from_pretrained("vadimbelsky/qwen3-asr-arabic-ksa")
result = model.transcribe("audio.wav", language="Arabic")
print(result)
Or with transformers directly:
from transformers import AutoModelForCausalLM, AutoProcessor
model = AutoModelForCausalLM.from_pretrained("vadimbelsky/qwen3-asr-arabic-ksa")
processor = AutoProcessor.from_pretrained("vadimbelsky/qwen3-asr-arabic-ksa")
Limitations
- Trained on synthetic/generated Arabic speech data
- Optimized for KSA Saudi dialect — may not generalize to other Arabic dialects
- Numbers are sometimes transcribed differently (e.g. digits vs spelled out)
- Short utterances only (training data mostly < 20s)
License
Apache 2.0 (same as base model)