Instructions to use lemuralabs/lemura-arabic-asr-qwen3 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use lemuralabs/lemura-arabic-asr-qwen3 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="lemuralabs/lemura-arabic-asr-qwen3")# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("lemuralabs/lemura-arabic-asr-qwen3") model = AutoModelForMultimodalLM.from_pretrained("lemuralabs/lemura-arabic-asr-qwen3", device_map="auto") - Notebooks
- Google Colab
- Kaggle
lemura-arabic-asr-qwen3
Lemura Labs' Arabic-first generative speech-recognition model — dialect-broad, production-oriented.
Built for the dialects your users actually speak.
Overview · Benchmarks · Transformers · ms-swift · Entity Biasing · Training · Sibling model
What it is
lemura-arabic-asr-qwen3 is an Arabic-first generative speech-recognition model. It recasts transcription as audio-conditioned next-token prediction — an audio encoder feeding a Qwen3 language-model decoder, rather than a CTC or transducer objective — so it resolves ambiguity with linguistic context, not acoustics alone.
Fine-tuned from Qwen/Qwen3-ASR-1.7B, it transcribes Modern Standard Arabic and five major dialect groups — Gulf/Khaleeji, Egyptian, Levantine, Iraqi and Maghrebi/Darija — in a single compact 1.7B model.
- Audio-LLM architecture — generative ASR; context disambiguates where acoustics cannot.
- Genuinely multi-dialect — ~1,700 hours across MSA plus five dialect groups, including Moroccan Darija, which most ASR systems handle badly.
- Dialect-targeted fine-tuning — LoRA adaptation focused on dialectal orthography, proper nouns and code-switching, merged back into standalone weights.
- Entity and name biasing — accepts a guiding word-list to lock in brands, people and jargon.
- Robust to code-switching — Arabic ↔ English, common in Gulf business speech.
Built for the hard part of Arabic ASR: real dialectal speech, code-switching, and named entities.
Built on a permissively-licensed open-weight audio-LLM foundation; the adaptation, data curriculum and dialect coverage are Lemura Labs'.
Model summary
| Model | lemura-arabic-asr-qwen3 — Arabic-first generative ASR |
| Task | Automatic speech recognition (audio → text) |
| Approach | Generative ASR — audio encoder + Qwen3 language-model decoder (audio-conditioned next-token prediction) |
| Base model | Qwen/Qwen3-ASR-1.7B |
| Training | LoRA (rank 64, α 128) dialect fine-tune in bf16, merged to standalone weights — ~1.18M clips / ~1,700 h across 5 dialect groups |
| Architecture class | Qwen3ASRForConditionalGeneration (model_type: qwen3_asr) |
| Audio encoder | 24 layers · d_model 1024 · 16 heads · 128 mel bins |
| Total parameters | 1.7B (bf16) |
| Audio input | 16 kHz mono; 30 s context window (longer audio is chunked) |
| Languages | Arabic — MSA + Gulf / Egyptian / Levantine / Iraqi / Maghrebi, with Arabic–English code-switching |
| Runtime | transformers · ms-swift — GPU |
| License | Apache-2.0 |
Benchmarks
Open Universal Arabic ASR Leaderboard — full standings
Per-dataset WER % across all six leaderboard test sets, zero-shot. Lower is better; Avg WER
is the ranking metric. Our sibling model
lemura-arabic-asr-lite is evaluated here with the official leaderboard code;
this model's base, Qwen/Qwen3-ASR-1.7B, is row 12. These are zero-shot numbers — the in-domain
table above is a different measurement and the two must not be compared directly.
| # | Model | Params | Avg WER | SADA | CV-18 | MASC-clean | MASC-noisy | MGB-2 | Casablanca |
|---|---|---|---|---|---|---|---|---|---|
| 1 | lemuralabs/lemura-arabic-asr-lite (Ours) | 0.12B | 25.08 | 37.28 | 9.74 | 7.27 | 23.65 | 14.33 | 58.24 |
| 2 | CohereLabs/cohere-transcribe-arabic-07-2026 | ~2B | 25.87 | 37.47 | 5.82 | 19.60 | 27.07 | 15.54 | 49.71 |
| 3 | omnilingual-asr/omniASR_LLM_7B | 7B | 28.32 | 41.61 | 8.75 | 19.69 | 29.29 | 14.13 | 56.46 |
| 4 | omnilingual-asr/omniASR_LLM_3B | 3B | 29.96 | 46.18 | 9.15 | 19.90 | 30.03 | 14.22 | 60.27 |
| 5 | omnilingual-asr/omniASR_LLM_1B | 1B | 29.96 | 43.84 | 9.55 | 20.03 | 30.26 | 15.34 | 60.68 |
| 6 | CohereLabs/cohere-transcribe-03-2026 | ~2B | 30.67 | 60.11 | 8.17 | 8.66 | 19.01 | 25.33 | 62.71 |
| 7 | Qwen/Qwen3-Omni-30B-A3B-Instruct | 30B | 30.71 | 44.82 | 11.46 | 21.47 | 30.85 | 13.09 | 62.55 |
| 8 | nvidia-conformer-ctc-large-arabic (lm) | 0.6B | 32.91 | 44.52 | 8.80 | 23.74 | 34.29 | 17.20 | 68.90 |
| 9 | omnilingual-asr/omniASR_LLM_300M | 0.3B | 32.96 | 51.38 | 12.03 | 20.66 | 32.45 | 16.58 | 64.64 |
| 10 | google/gemma-4-E4B-it | 4B | 32.98 | 43.40 | 19.65 | 24.86 | 33.59 | 17.72 | 58.63 |
| 11 | Qwen/Qwen3-ASR-1.7B (our base, zero-shot) | 1.7B | 33.36 | 45.53 | 16.90 | 24.37 | 34.29 | 16.57 | 64.47 |
| 12 | mistralai/Voxtral-Small-24B-2507 | 24B | 34.47 | 50.82 | 15.25 | 23.96 | 34.43 | 16.03 | 66.30 |
| 13 | nvidia-conformer-ctc-large-arabic (greedy) | 0.6B | 34.74 | 47.26 | 10.60 | 24.12 | 35.64 | 19.69 | 71.13 |
| 14 | google/gemma-4-E2B-it | 2B | 35.87 | 46.23 | 23.76 | 27.47 | 36.15 | 20.72 | 60.87 |
| 15 | openai/whisper-large-v3 | 1.5B | 36.86 | 55.96 | 17.83 | 24.66 | 34.63 | 16.26 | 71.81 |
| 16 | omnilingual-asr/omniASR_CTC_3B | 3B | 37.78 | 69.85 | 14.19 | 21.48 | 34.60 | 18.96 | 67.58 |
| 17 | omnilingual-asr/omniASR_CTC_7B | 7B | 38.12 | 72.69 | 12.47 | 21.08 | 35.04 | 20.43 | 67.02 |
| 18 | facebook/seamless-m4t-v2-large | 2.3B | 38.16 | 62.52 | 21.70 | 25.04 | 33.24 | 20.23 | 66.25 |
| 19 | omnilingual-asr/omniASR_CTC_1B | 1B | 39.29 | 71.42 | 17.55 | 22.76 | 35.73 | 19.96 | 68.32 |
| 20 | openai/whisper-large-v3-turbo | 0.8B | 40.05 | 60.36 | 25.73 | 25.51 | 37.16 | 17.75 | 73.79 |
| 21 | openai/whisper-large-v2 | 1.5B | 40.20 | 57.46 | 21.77 | 27.25 | 38.55 | 25.17 | 71.01 |
| 22 | Qwen/Qwen3-ASR-0.6B | 0.6B | 42.19 | 53.75 | 28.28 | 31.34 | 42.63 | 25.45 | 71.68 |
| 23 | openai/whisper-large | 1.5B | 42.57 | 63.24 | 26.04 | 28.89 | 40.79 | 24.28 | 72.18 |
| 24 | mistralai/Voxtral-Mini-3B-2507 | 3B | 42.58 | 63.65 | 22.12 | 28.37 | 41.27 | 22.56 | 77.52 |
| 25 | asafaya/hubert-large-arabic-transcribe | 0.3B | 45.50 | 67.82 | 8.01 | 32.94 | 50.16 | 37.51 | 76.53 |
| 26 | openai/whisper-medium | 0.8B | 45.57 | 67.71 | 28.07 | 29.99 | 42.91 | 29.32 | 75.44 |
| 27 | nvidia-Parakeet-ctc-1.1b-concat | 1.1B | 46.54 | 70.70 | 26.34 | 30.49 | 45.95 | 24.94 | 80.80 |
| 28 | omnilingual-asr/omniASR_CTC_300M | 0.3B | 46.65 | 78.11 | 27.90 | 28.40 | 43.26 | 26.85 | 75.35 |
| 29 | nvidia-Parakeet-ctc-1.1b-universal | 1.1B | 51.96 | 73.58 | 40.01 | 36.16 | 50.03 | 30.68 | 81.30 |
| 30 | microsoft/VibeVoice-ASR | — | 52.99 | 69.83 | 44.25 | 32.95 | 52.43 | 25.10 | 93.37 |
| 31 | facebook/mms-1b-all | 1B | 54.54 | 77.48 | 26.52 | 38.82 | 57.33 | 39.16 | 87.95 |
| 32 | openai/whisper-small | 0.24B | 55.13 | 78.02 | 24.18 | 35.93 | 56.36 | 48.64 | 87.64 |
| 33 | whitefox123/w2v-bert-2.0-arabic-4 | 0.6B | 58.13 | 87.34 | 41.79 | 37.82 | 53.28 | 40.66 | 87.88 |
| 34 | jonatasgrosman/wav2vec2-large-xlsr-53-arabic | 0.3B | 60.98 | 86.82 | 23.00 | 42.75 | 64.27 | 56.29 | 92.72 |
| 35 | speechbrain/asr-wav2vec2-commonvoice-14-ar | 0.1B | 65.74 | 88.54 | 29.17 | 49.10 | 69.57 | 64.37 | 93.68 |
Competitor rows are the published Open Universal Arabic ASR Leaderboard standings, reproduced for context; they are not our measurements. Casablanca (Moroccan Darija) is the hardest set for every system.
Transformers inference
The full-precision bf16 weights are published at the repo root (safetensors). Qwen3-ASR is
supported natively in recent Transformers — no trust_remote_code needed.
# pip install "transformers>=4.57.6" torch librosa
import torch, librosa
from transformers import AutoProcessor, Qwen3ASRForConditionalGeneration
repo = "lemuralabs/lemura-arabic-asr-qwen3"
processor = AutoProcessor.from_pretrained(repo)
model = Qwen3ASRForConditionalGeneration.from_pretrained(
repo, dtype=torch.bfloat16, device_map="auto"
).eval()
audio, _ = librosa.load("clip.wav", sr=16_000) # 16 kHz mono
messages = [{"role": "user", "content": [{"type": "audio", "audio": audio}]}]
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=text, audio=audio, sampling_rate=16_000, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
print(processor.batch_decode(out[:, inputs["input_ids"].shape[1]:], skip_special_tokens=True)[0])
ms-swift inference
For batch transcription over a dataset, ms-swift is the fastest path:
pip install ms-swift transformers==4.57.6 qwen-asr soundfile
swift infer \
--model lemuralabs/lemura-arabic-asr-qwen3 \
--val_dataset your_data.jsonl \
--infer_backend pt --max_new_tokens 256
Dataset JSONL, one line per clip, audio 16 kHz mono:
{"messages": [{"role": "user", "content": "<audio>"}, {"role": "assistant", "content": ""}], "audios": ["/path/to/clip.wav"]}
Entity and name biasing
Pass a short guiding word-list as a system message to lock in names, brands and jargon:
{"messages": [
{"role": "system", "content": "الكلمات المرشدة: أبوبي، موهان، لمُرا"},
{"role": "user", "content": "<audio>"},
{"role": "assistant", "content": ""}],
"audios": ["/path/to/clip.wav"]}
This alone fixes most brand and name errors in real business audio.
Notes
- Long audio: the audio encoder uses a 30 s window (
chunk_length: 30); chunk longer inputs client-side and concatenate the transcripts. - Sample rate: input must be 16 kHz mono; resample before inference.
- Decoding: greedy (
do_sample=False) is recommended for transcription; sampling adds hallucination risk. - Precision: weights are bf16; fp16 works on older GPUs, but bf16 is what the model was trained and merged in.
Training data
~1,700 hours / ~1.18M clips spanning MSA and every major dialect group:
| Corpus | Contribution |
|---|---|
| SADA | Gulf / Saudi dialectal speech |
| MASC | Multi-dialect, clean and noisy |
| CommonVoice-ar | Read speech, mixed dialects |
| MGB-2 | MSA broadcast |
| MoulSot, NADI | Maghrebi / Moroccan Darija |
| FLEURS-ar | Read speech, MSA |
Training procedure
LoRA (rank 64, α 128) fine-tune of Qwen3-ASR-1.7B in bf16, then merged into standalone weights. Trained with ms-swift on NVIDIA H100s. Labels canonicalized with the standard Arabic normalizer (punctuation and diacritics stripped, Hamza/Madda normalized, Eastern→Western numerals).
Languages, dialects and tasks
- Primary: Arabic — MSA and dialectal (Gulf/Khaleeji, Egyptian, Levantine, Iraqi, Maghrebi/Darija), plus code-switched Arabic–English; emits dialect-faithful orthography from audio alone.
- Task: transcription (audio → UTF-8 text), optionally steered by a guiding word-list for entities.
- Audio: 16 kHz mono, 30 s window.
Intended use and limitations
Intended use. Transcribing Arabic speech across dialects — contact centres, voice notes, media captioning, voice agents and accessibility, especially Gulf and Maghrebi deployments; cloud or on-prem.
Limitations.
- Best on the dialects and domains it was trained on; fully unseen accents or domains will be harder (see the in-domain note above).
- Maghrebi / Moroccan Darija remains the hardest condition, as it is for every system.
- Not a zero-shot leaderboard entry — optimized for broad, practical dialect coverage.
- Very noisy or far-field audio degrades accuracy; long recordings must be chunked.
- Not evaluated for, and must not be used for, covert speaker identification.
- May reflect biases present in the training corpora.
Related model
lemura-arabic-asr-lite — ~115M-parameter FastConformer-CTC, CPU and real-time capable, #2 of 36 zero-shot on the Open Universal Arabic ASR Leaderboard.
-qwen3 (this model) |
-lite |
|
|---|---|---|
| Parameters | 1.7B | ~115M |
| Approach | Generative audio-LLM | FastConformer-CTC |
| Hardware | GPU | CPU or GPU |
| Strength | In-domain dialect depth, entity biasing | Zero-shot generality, edge deployment |
| Reported WER | 22.6 (in-domain) | 25.08 (zero-shot, leaderboard) |
License
Apache-2.0, inheriting the base model's license. Please also respect the licenses of the training datasets.
Citation
@misc{lemura_arabic_asr_qwen3_2026,
title = {lemura-arabic-asr-qwen3: Generative Multi-Dialect Arabic Speech Recognition},
author = {Lemura Labs},
year = {2026},
url = {https://huggingface.co/lemuralabs/lemura-arabic-asr-qwen3}
}
Acknowledgements
- Base model: Qwen/Qwen3-ASR-1.7B (Alibaba Qwen team)
- Training data: SADA, MASC, CommonVoice, MGB-2, MoulSot, NADI, FLEURS
- Evaluation: the Open Universal Arabic ASR Leaderboard official code
About Lemura Labs
Arabic-first, efficiency-first speech intelligence.
Lemura Labs starts with the dialects people actually speak.
We build compact, deployable speech and language models — accuracy at a size and cost that works outside the datacentre. Our work spans speech recognition, dialectal language modelling, and efficient inference for real-world deployment, from edge devices to on-prem clusters.
Dialect-first. Efficient by design. Built to deploy.
Hugging Face · developer@aivf.io
© 2026 Lemura Labs · Licensed under Apache-2.0
- Downloads last month
- 14
Model tree for lemuralabs/lemura-arabic-asr-qwen3
Datasets used to train lemuralabs/lemura-arabic-asr-qwen3
fsicoli/common_voice_17_0
MohamedRashad/MASC-Arabic
Evaluation results
- Average WER (in-domain) on Six Arabic benchmarks (in-domain average)self-reported22.600
- WER (in-domain) on CommonVoice Arabic (in-domain)self-reported10.700
- WER (in-domain) on MASC clean (in-domain)self-reported10.800
- WER (in-domain) on MGB-2 (in-domain)self-reported12.900
- WER (in-domain) on MASC noisy (in-domain)self-reported25.800
- WER (in-domain) on SADA (in-domain)self-reported32.300
- WER (in-domain) on Casablanca / Moroccan Darija (in-domain)self-reported43.200