Results
Normalized WER/CER (%) on the frozen validation splits. Every system is scored with one
identical Arabic normalizer applied to hypotheses and references —
eval/asr_score.py.
Table with columns: System, Quran WER, Quran CER, Hadith WER, Hadith CER, MGB-2 WER, MGB-2 CER| System | Quran WER | Quran CER | Hadith WER | Hadith CER | MGB-2 WER | MGB-2 CER |
|---|
| whisper-large-v3 (zero-shot) | 3.50 | 0.81 | 7.49 | 2.22 | 10.85 | 4.76 |
| Cohere Transcribe Arabic | 3.96 | 2.73 | 3.99 | 1.46 | 6.77 | 3.60 |
| this model | 0.33 | 0.10 | 3.60 | 0.99 | 9.52 | 2.92 |
Split sizes: Quran 7,280 clips · Hadith 4,752 · MGB-2 494.
On sacred text this is the state of the art: 0.33 vs 3.96 WER on Quran against the strongest
open Arabic model — a ≈12× relative reduction — and 3.60 vs 3.99 on Hadith. Relative to its own
zero-shot base: −91 % Quran, −52 % Hadith, −12 % MGB-2.
On general broadcast MSA we are competitive, not leading. Cohere reaches 6.77 WER to our
9.52 — but on CER we are ahead, 2.92 vs 3.60, meaning our errors are shallow near-misses
rather than dropped or wrong words. MGB-2 is strictly zero-shot for this model and may be
in-domain for the others.
Usage
import torch
from transformers import pipeline
pipe = pipeline(
"automatic-speech-recognition",
model="Dr-AliGomaa/whisper-large-v3-ar",
torch_dtype=torch.float16,
device="cuda:0",
chunk_length_s=30,
)
gen = {
"language": "arabic",
"task": "transcribe",
"num_beams": 5,
"temperature": (0.2),
"condition_on_prev_tokens": False,
"compression_ratio_threshold": 1.35,
"logprob_threshold": -1.0,
"return_timestamps": False,
"max_new_tokens": 444,
}
print(pipe("audio.mp3", generate_kwargs=gen)["text"])
This model does not emit timestamps. For time-aligned output use
whisper-large-v3-ar-eg-timestamps.
Two things that will otherwise cost you accuracy
1. Run the audio pipeline first. The model was trained on optimized audio: silence-trimmed,
loudness-normalized to −16 LUFS, edge-padded 100 ms, gain-corrected, segmented ≤ 30 s. Applying
the same chain at inference is required to reproduce these numbers — it is the single most
common reason people can't. Scripts:
pipeline/.
2. Score with eval/asr_score.py. Arabic WER moves materially with the normalizer, so a
number computed under a different one is not comparable to the table above.
Training
Table | |
|---|
| Base | openai/whisper-large-v3 |
| Trained on | Quran + Hadith + Common Voice 17 + FLEURS + MediaSpeech. No Egyptian, no MGB-2. |
| Learning rate | 5e-6, linear decay with warmup |
| Batch | 4 per device × 8 GPUs = 32 effective |
| Precision / distributed | bf16 + tf32, DeepSpeed ZeRO |
| Weight decay | 0.05 (no dropout, no label smoothing) |
| Augmentation | waveform (MUSAN + ESC-50 + Gaussian, band-pass) via audiomentations; Quran/Hadith oversampled through independently-augmented passes |
Full recipe: training/training.py.
Intended use and limits
- For transcription assistance and research. Not an authority on the correct text of the
Quran or hadith — verify output against canonical written sources before any religious use.
- Output is Imlāʾī orthography without tashkīl, and numerals are written as Arabic
words — do not use for numeric or mathematical transcription.
- Trained overwhelmingly on classical/MSA register; it is not a dialect model.
- The religious content of this work was reviewed and approved by Prof. Ali Gomaa, former
Grand Mufti of Egypt and member of Al-Azhar's Council of Senior Scholars, under whose
patronage it was carried out.
Citation
@misc{kotb2026quranhadith,
title = {A Quran and Hadith Speech Resource and Benchmark for Arabic ASR,
with Professional-Reciter Training and Validation},
author = {Mohamed Kotb},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.21927416},
url = {https://doi.org/10.5281/zenodo.21927416},
note = {Preprint}
}