Omar10lfc/whisper-small-arabic

Model

whisper-small-arabic

0

5 commits

1 repos using this model

1 linked in READMEs

updated Oct 8, 2026

See the code

README

whisper-small-arabic

Fine-tuned openai/whisper-small for Arabic speech recognition.

Results

MetricBaseline (openai/whisper-small)Fine-tuned (this model)Improvement
WER (↓)42.6920.61βˆ’22.08 abs / βˆ’51.7 % rel

Evaluated on 300 held-out clips from the Mozilla Common Voice Arabic test split. Baseline and fine-tuned numbers use identical decoding configuration (greedy, language=arabic, task=transcribe).

Training data

Mozilla Common Voice β€” Arabic, the crowdsourced Arabic speech corpus distributed by the Mozilla Foundation. Train/dev/test were combined, shuffled with seed=42, and the first 25,000 clips were used for fine-tuning. Audio is at 16 kHz mono.

Training procedure

Single Tesla T4 (16 GB) on Kaggle, mixed-precision fp16. Long audio is handled by Whisper's standard 30-second windowing.

Hyperparameters

Base modelopenai/whisper-small (244 M params)
Training samples25,000 (Common Voice ar, shuffled with seed 42)
Per-device batch size8
Gradient accumulation4 (effective batch 32)
OptimizerAdamW (HF default)
Learning rate1e-5
LR schedulelinear, warmup 500 steps
Weight decay0.01
Max steps4,000 (in two stages β€” see below)
Mixed precisionfp16
Eval / save every500 steps
Early stopping patience3 evals
generation_max_length (eval)80
Forced language / taskarabic / transcribe
Seed42

Two-stage learning rate schedule

The first 2,000 steps used learning_rate = 1e-5 and converged to WER β‰ˆ 21.3. Validation loss had plateaued, so training was resumed from the 2,000-step checkpoint at the lower learning_rate = 5e-6 for another 2,000 steps. The smaller LR squeezed out an additional point of WER and produced the published checkpoint at step 3,000.

Validation curve

StepTraining lossValidation lossWER ↓
5002.39780.325128.53
10001.47690.262426.93
15000.99370.258322.21
20000.75660.251721.31
25000.69330.258221.25
30000.57850.259620.61
35000.49980.259320.68
40000.48390.258920.74

Learning rate is dropped from 1e-5 to 5e-6 after step 2,000. Step 3,000 is the published checkpoint (lowest validation WER).

The published checkpoint is step 3,000, the lowest WER on the held-out validation split. Training loss continued to fall after that point but validation loss flattened and WER ticked back up β€” classic mild overfitting, so the earlier checkpoint was preserved as the final model.

Quick use

import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration

REPO = "Omar10lfc/whisper-small-arabic"
processor = WhisperProcessor.from_pretrained(REPO)
model     = WhisperForConditionalGeneration.from_pretrained(REPO)
model.generation_config.language = "arabic"
model.generation_config.task     = "transcribe"

speech, _ = librosa.load("audio.wav", sr=16000, mono=True)
features  = processor(speech, sampling_rate=16000, return_tensors="pt").input_features
ids       = model.generate(features, max_new_tokens=440)
print(processor.batch_decode(ids, skip_special_tokens=True)[0])

For long audio (lectures, podcasts), use the HF pipeline with chunking:

from transformers import pipeline
asr = pipeline(
    "automatic-speech-recognition",
    model=REPO,
    chunk_length_s=30,
    stride_length_s=5,
    device=0,                    # or -1 for CPU
)
print(asr("lecture.wav", generate_kwargs={"language": "arabic", "task": "transcribe"})["text"])

Intended use & limitations

  • Intended use: Modern Standard Arabic speech-to-text β€” lectures, news, podcasts, dictation. Used as the ASR front-end of an Arabic audio understanding pipeline (Whisper β†’ AraBART summarization β†’ CAMeL-BERT/FAISS semantic search).
  • Out of scope: code-switching with English beyond a few words, speaker diarization, regional dialects under-represented in Common Voice (Maghrebi, Khaleeji), very long form (>30 s without chunking).
  • Bias: Common Voice is volunteer-recorded; speaker demographics skew toward MSA-fluent contributors and may underrepresent dialects, accents, and acoustic conditions outside that distribution.

Citation

@misc{whisper-small-arabic,
  title  = {whisper-small-arabic: Fine-tuned Whisper for Arabic on Mozilla Common Voice},
  author = {{Omar10lfc}},
  year   = {2026},
  howpublished = {Hugging Face},
  note = {Fine-tune of openai/whisper-small on Mozilla Common Voice Arabic, WER 20.61.}
}

Built on top of:

@article{radford2022whisper,
  title  = {Robust Speech Recognition via Large-Scale Weak Supervision},
  author = {Radford, Alec and Kim, Jong Wook and Xu, Tao and others},
  journal= {arXiv preprint arXiv:2212.04356},
  year   = {2022}
}

FP16 (Unquantized) vs. CTranslate2 INT8 Quantization Comparison

Does 8-bit quantization degrade accuracy? Our empirical benchmark across the full Mozilla Common Voice Arabic evaluation suite demonstrates quantization parityβ€”the Word Error Rate (WER) difference between unquantized FP16 and CTranslate2 Static INT8 is statistically negligible ($\le 0.5$ to $0.8$ percentage points), while reducing disk size and VRAM by ~50% and accelerating inference by up to $3.6\times$:

Model ArchitecturePrecision TierModel File SizeMeasured WERThroughput (NVIDIA T4)Quality Delta
Whisper-MediumVanilla PyTorch FP161,531 MB17.83%6.7Γ— realtimeBaseline
CTranslate2 INT8770 MB (βˆ’49.7%)18.35%8.8Γ— realtime+0.52 pp (statistically negligible)
Whisper-Large-v3Vanilla PyTorch FP163,091 MB16.80%5.0Γ— realtimeBaseline
CTranslate2 INT81,556 MB (βˆ’49.7%)17.63%18.0Γ— realtime+0.83 pp (3.6Γ— speedup)
Whisper-Large-v3-TurboVanilla PyTorch FP161,621 MB18.46%8.5Γ— realtimeBaseline
CTranslate2 INT8819 MB (βˆ’49.5%)18.26%17.5Γ— realtimeβˆ’0.20 pp (INT8 parity)

Production Recommendations

  • Deploy CTranslate2 INT8 (*-ct2-int8): Recommended for production APIs, serverless containers (Modal, RunPod, Hugging Face Spaces), and edge environments to cut cold-start load times and memory by half while maximizing throughput.
  • Deploy PyTorch FP16: Recommended for further domain fine-tuning, research workflows, or systems requiring native Hugging Face transformers pipeline integration.
arabic
automatic-speech-recognition
common-voice
endpoints_compatible
fine-tuned
model-index
safetensors
speech
transformers
whisper

Omar10lfc/whisper-small-arabic

Model

whisper-small-arabic

0

5 commits

1 repos using this model

1 linked in READMEs

updated Oct 8, 2026

See the code

README

whisper-small-arabic

Fine-tuned openai/whisper-small for Arabic speech recognition.

Results

MetricBaseline (openai/whisper-small)Fine-tuned (this model)Improvement
WER (↓)42.6920.61βˆ’22.08 abs / βˆ’51.7 % rel

Evaluated on 300 held-out clips from the Mozilla Common Voice Arabic test split. Baseline and fine-tuned numbers use identical decoding configuration (greedy, language=arabic, task=transcribe).

Training data

Mozilla Common Voice β€” Arabic, the crowdsourced Arabic speech corpus distributed by the Mozilla Foundation. Train/dev/test were combined, shuffled with seed=42, and the first 25,000 clips were used for fine-tuning. Audio is at 16 kHz mono.

Training procedure

Single Tesla T4 (16 GB) on Kaggle, mixed-precision fp16. Long audio is handled by Whisper's standard 30-second windowing.

Hyperparameters

Base modelopenai/whisper-small (244 M params)
Training samples25,000 (Common Voice ar, shuffled with seed 42)
Per-device batch size8
Gradient accumulation4 (effective batch 32)
OptimizerAdamW (HF default)
Learning rate1e-5
LR schedulelinear, warmup 500 steps
Weight decay0.01
Max steps4,000 (in two stages β€” see below)
Mixed precisionfp16
Eval / save every500 steps
Early stopping patience3 evals
generation_max_length (eval)80
Forced language / taskarabic / transcribe
Seed42

Two-stage learning rate schedule

The first 2,000 steps used learning_rate = 1e-5 and converged to WER β‰ˆ 21.3. Validation loss had plateaued, so training was resumed from the 2,000-step checkpoint at the lower learning_rate = 5e-6 for another 2,000 steps. The smaller LR squeezed out an additional point of WER and produced the published checkpoint at step 3,000.

Validation curve

StepTraining lossValidation lossWER ↓
5002.39780.325128.53
10001.47690.262426.93
15000.99370.258322.21
20000.75660.251721.31
25000.69330.258221.25
30000.57850.259620.61
35000.49980.259320.68
40000.48390.258920.74

Learning rate is dropped from 1e-5 to 5e-6 after step 2,000. Step 3,000 is the published checkpoint (lowest validation WER).

The published checkpoint is step 3,000, the lowest WER on the held-out validation split. Training loss continued to fall after that point but validation loss flattened and WER ticked back up β€” classic mild overfitting, so the earlier checkpoint was preserved as the final model.

Quick use

import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration

REPO = "Omar10lfc/whisper-small-arabic"
processor = WhisperProcessor.from_pretrained(REPO)
model     = WhisperForConditionalGeneration.from_pretrained(REPO)
model.generation_config.language = "arabic"
model.generation_config.task     = "transcribe"

speech, _ = librosa.load("audio.wav", sr=16000, mono=True)
features  = processor(speech, sampling_rate=16000, return_tensors="pt").input_features
ids       = model.generate(features, max_new_tokens=440)
print(processor.batch_decode(ids, skip_special_tokens=True)[0])

For long audio (lectures, podcasts), use the HF pipeline with chunking:

from transformers import pipeline
asr = pipeline(
    "automatic-speech-recognition",
    model=REPO,
    chunk_length_s=30,
    stride_length_s=5,
    device=0,                    # or -1 for CPU
)
print(asr("lecture.wav", generate_kwargs={"language": "arabic", "task": "transcribe"})["text"])

Intended use & limitations

  • Intended use: Modern Standard Arabic speech-to-text β€” lectures, news, podcasts, dictation. Used as the ASR front-end of an Arabic audio understanding pipeline (Whisper β†’ AraBART summarization β†’ CAMeL-BERT/FAISS semantic search).
  • Out of scope: code-switching with English beyond a few words, speaker diarization, regional dialects under-represented in Common Voice (Maghrebi, Khaleeji), very long form (>30 s without chunking).
  • Bias: Common Voice is volunteer-recorded; speaker demographics skew toward MSA-fluent contributors and may underrepresent dialects, accents, and acoustic conditions outside that distribution.

Citation

@misc{whisper-small-arabic,
  title  = {whisper-small-arabic: Fine-tuned Whisper for Arabic on Mozilla Common Voice},
  author = {{Omar10lfc}},
  year   = {2026},
  howpublished = {Hugging Face},
  note = {Fine-tune of openai/whisper-small on Mozilla Common Voice Arabic, WER 20.61.}
}

Built on top of:

@article{radford2022whisper,
  title  = {Robust Speech Recognition via Large-Scale Weak Supervision},
  author = {Radford, Alec and Kim, Jong Wook and Xu, Tao and others},
  journal= {arXiv preprint arXiv:2212.04356},
  year   = {2022}
}

FP16 (Unquantized) vs. CTranslate2 INT8 Quantization Comparison

Does 8-bit quantization degrade accuracy? Our empirical benchmark across the full Mozilla Common Voice Arabic evaluation suite demonstrates quantization parityβ€”the Word Error Rate (WER) difference between unquantized FP16 and CTranslate2 Static INT8 is statistically negligible ($\le 0.5$ to $0.8$ percentage points), while reducing disk size and VRAM by ~50% and accelerating inference by up to $3.6\times$:

Model ArchitecturePrecision TierModel File SizeMeasured WERThroughput (NVIDIA T4)Quality Delta
Whisper-MediumVanilla PyTorch FP161,531 MB17.83%6.7Γ— realtimeBaseline
CTranslate2 INT8770 MB (βˆ’49.7%)18.35%8.8Γ— realtime+0.52 pp (statistically negligible)
Whisper-Large-v3Vanilla PyTorch FP163,091 MB16.80%5.0Γ— realtimeBaseline
CTranslate2 INT81,556 MB (βˆ’49.7%)17.63%18.0Γ— realtime+0.83 pp (3.6Γ— speedup)
Whisper-Large-v3-TurboVanilla PyTorch FP161,621 MB18.46%8.5Γ— realtimeBaseline
CTranslate2 INT8819 MB (βˆ’49.5%)18.26%17.5Γ— realtimeβˆ’0.20 pp (INT8 parity)

Production Recommendations

  • Deploy CTranslate2 INT8 (*-ct2-int8): Recommended for production APIs, serverless containers (Modal, RunPod, Hugging Face Spaces), and edge environments to cut cold-start load times and memory by half while maximizing throughput.
  • Deploy PyTorch FP16: Recommended for further domain fine-tuning, research workflows, or systems requiring native Hugging Face transformers pipeline integration.
arabic
automatic-speech-recognition
common-voice
endpoints_compatible
fine-tuned
model-index
safetensors
speech
transformers
whisper