Results (held-out target test · n = 3,354 · speaker/script/text-disjoint)
Lower is better. WER / CER under the Open Universal Arabic ASR Leaderboard normalizer.
Table with columns: Dialect, Stock Whisper-large-v3, + our corpus (this adapter)| Dialect | Stock Whisper-large-v3 | + our corpus (this adapter) |
|---|
| Najdi (MSA-adjacent) | 0.370 / 0.103 | 0.162 / 0.043 |
| Hejazi | 0.388 / 0.115 | 0.194 / 0.055 |
| Jordanian | 0.512 / 0.206 | 0.248 / 0.077 |
| Moroccan Darija | 0.804 / 0.337 | 0.342 / 0.105 |
| Overall | 0.589 / 0.226 | 0.258 / 0.077 |
Versus strong baselines (overall, same test):
Table with columns: WER, CER | WER | CER |
|---|
| Stock Whisper-large-v3 | 0.589 | 0.226 |
| Public-only fine-tune (SADA + MASC) | 0.598 | 0.204 |
| Meta omniASR-LLM-7B (open, 7B) | 0.455 | 0.140 |
| Deepgram nova-3 (commercial API) | 0.493 | 0.137 |
| + our corpus (this adapter) | 0.258 | 0.077 |
We report CER alongside WER because dialectal Arabic has no standard orthography and clitics
agglutinate onto words, which makes word-level WER swing with spelling; CER is the more trustworthy
signal. All numbers come from a single consistent scoring pass with 95% bootstrap CIs; see the
whitepaper
for the convention-robust (CAMeL) re-scoring and full deltas.
Model description
- Developed by: DataHive AI
- Model type: LoRA (PEFT) adapter for automatic speech recognition
- Base model: openai/whisper-large-v3
- Language: Arabic (dialectal — Hejazi, Najdi, Jordanian, Moroccan Darija)
- Task:
transcribe (Arabic)
- Access terms: gated — granted for evaluation; please don't redistribute the weights
(agreed to at request time). No separate license file; the access request is the agreement.
This adapter is fine-tuned on a mixture of public Arabic ASR data (SADA, MASC) plus
DataHive AI's proprietary 4-dialect × 4-emotion corpus — native-speaker, conversational recordings
across ten everyday domains, collected on DataHive AI's data-collection platform. A public demo
subset of that corpus is available at
datahiveai/arabic-multidialect-emotional-speech-demo;
the full corpus is proprietary and not released. This card documents the model it produces.
A controlled ablation isolates the corpus as the cause of the lift: training on the public data
alone leaves error essentially at stock; adding our corpus (holding the public mixture
identical) is what moves the needle.
Intended uses & limitations
Direct use. Transcription of conversational, dialectal Arabic in the covered dialects (Hejazi,
Najdi, Jordanian, Moroccan Darija), including emotional/expressive speech.
Out-of-scope / use with care.
- Not a universally better Arabic model. The advantage is specialization for this domain and
these dialects/convention. On neutral, out-of-domain benchmarks (e.g. MSA-adjacent Saudi speech in
a third-party convention) frontier systems are competitive, and on some external Moroccan sets a
larger open model is ahead. See the
whitepaper
for the honest, non-cherry-picked comparison.
- Dialects and domains outside the training coverage are not guaranteed; results reflect our
dialectal convention.
- ASR output can contain errors; do not use for high-stakes decisions without human review.
How to get started
The weights are gated — request access on this page first. Once granted:
from peft import PeftModel
from transformers import WhisperForConditionalGeneration, WhisperProcessor
import torch, torchaudio
BASE = "openai/whisper-large-v3"
ADAPTER = "datahiveai/whisper-large-v3-ar-dialects"
processor = WhisperProcessor.from_pretrained(BASE)
model = WhisperForConditionalGeneration.from_pretrained(BASE, torch_dtype=torch.float16)
model = PeftModel.from_pretrained(model, ADAPTER)
model = model.merge_and_unload().to("cuda").eval()
wav, sr = torchaudio.load("clip.wav")
if sr != 16000:
wav = torchaudio.functional.resample(wav, sr, 16000)
feats = processor(wav.squeeze().numpy(), sampling_rate=16000, return_tensors="pt").input_features
feats = feats.to("cuda", torch.float16)
ids = model.generate(feats, language="ar", task="transcribe")
print(processor.batch_decode(ids, skip_special_tokens=True)[0])
Training details
- Base: openai/whisper-large-v3 (LoRA / PEFT — only the adapter is trained)
- LoRA: r = 64, α = 128, dropout = 0.05, target modules =
q_proj, k_proj, v_proj, out_proj
- Optimizer / schedule: lr 1e-4, warmup 500 steps, weight decay 0.01
- Batch: 8 × grad-accum 2 (effective 16), seed 42, fp16
- Data mixture: 40% proprietary corpus, 33.75% SADA, 26.25% MASC (public part held
byte-identical between the public-only and public+ours ablation recipes)
- Audio augmentation: noise/RIR augmentation applied more heavily to the proprietary corpus
than to the already-in-the-wild public data
Evaluation
- Test set: proprietary held-out, speaker + script + text-disjoint (~3,354 clips, four
dialects) — no speaker, script, or sentence is shared with training, so results reflect genuine
generalization.
- Metrics: WER and CER, under two normalizers — the Open Universal Arabic ASR Leaderboard
normalizer (faithful) and a convention-robust CAMeL-standard normalizer; 95% CIs from 2,000×
paired bootstrap.
- Honest caveat: part of any model's apparent lead on matched data is orthographic convention;
under convention-robust scoring our lead narrows but holds against strong baselines, and is
essentially unchanged versus stock (real quality, not spelling). Full tables, external transfer
tests, and the losses we don't win are in the
whitepaper.
Citation
@misc{datahive_whisper_ar_dialects,
title = {The Data Moat in Dialectal Arabic Speech Recognition},
author = {DataHive AI},
year = {2026},
url = {https://datahive.ai/blog/2026/07/06/the-data-moat-in-dialectal-arabic-speech-recognition/},
note = {Whisper-large-v3 + LoRA on a proprietary 4-dialect Arabic corpus}
}
Data & licensing — get in touch
The lift here comes from targeted data. If you need dialectal/emotional Arabic ASR for your own
domain — or a targeted corpus collected to your spec — DataHive AI builds the data and proves the lift
on your test set. Contact: contact@datahive.ai.