Fine-tune of openai/whisper-small (244M) for multi-dialect Arabic speech recognition (undiacritized output).
Modellquelle
Quellenbeschreibung
Fine-tune of openai/whisper-small
(244M) for multi-dialect Arabic speech recognition (undiacritized output).
Private / internal model. Evaluate on your own data before production use.
Quellen
1 QuelleVerifiziert 13. Sept.
Modellartefakte
1 ArtefaktQuellenauszüge
2 Auszüge| WER | CER | |
|---|---|---|
| Base (whisper-small, zero-shot) | ~0.77 | ~0.38 |
| This model (fine-tuned) | 0.428 | 0.151 |
First run. Overfits after ~epoch 2.2; best-by-WER checkpoint saved.
Same 932-clip held-out test set, same clean_text scoring (strip tashkil + tags,
keep punctuation + dialect spelling) — so every row is directly comparable.
| Model | Params | Zero-shot WER | Fine-tuned WER | CER (best) |
|---|---|---|---|---|
| whisper-large-v3-turbo 🏆 | 809M | 0.590 | 0.344 | 0.115 |
| cohere-transcribe-arabic | 2.0B | 0.457 | 0.357 | 0.137 |
| whisper-medium | 769M | 0.717 | 0.358 | 0.123 |
| nemotron-3.5-asr (streaming) | 638M | 0.592 | 0.422 | — |
| whisper-small | 244M | ~0.77 | 0.428 | 0.151 |
| qwen3-asr-0.6b | 938M | 0.756 |
whisper-large-v3-turbo (WER 0.344), with cohere-transcribe-arabic
a close second (0.357).cohere-transcribe-arabic (0.457, Arabic-specialized). A full
fine-tune (all ~2B params, low LR) now improves it to 0.357; an earlier 32 GB
LoRA attempt had instead degraded it (0.510, overfit) — full-parameter tuning
with best-checkpoint selection was the fix.nemotron-3.5-asr.Fine-tuned on oddadmix/dialectal-arabic-lahgtna-v2-smaller-augmented (private).
augmentation column. Derived from
oddadmix/dialectal-arabic-lahgtna-v2-smaller.[laughter], [exhale], [inhale], [mumble], [cough], timestamps, ...).openai/whisper-small · full fine-tune (no LoRA)The exact fine-tuning code is bundled in this repo (train.py, normalize.py, evaluate_model.py) plus requirements.txt. See FINETUNE.md for the full walkthrough + lessons learned. Trained on oddadmix/dialectal-arabic-lahgtna-v2-smaller-augmented (private) — swap in any HF audio dataset with audio + text columns. normalize.py is the shared text cleaning (strip tashkil + non-verbal tags, keep dialectal letters گ ڨ چ).
pip install -r requirements.txt
huggingface-cli login # for the (private) dataset
python train.py \
--base_model openai/whisper-small --run_name my-run \
--per_device_train_batch_size 8 --gradient_accumulation_steps 4 \
--learning_rate 1e-5 --warmup_steps 500 --max_steps 6000
python evaluate_model.py --model runs/my-run # WER / CER
Note: some checkpoints (e.g. large-v3-turbo) ship in fp16 — train.py force-loads
fp32 so generate() doesn't crash at eval. bf16 autocast is used for training.
import torch, torchaudio
from transformers import WhisperForConditionalGeneration, WhisperProcessor
repo = "oddadmix/whisper-small-arabic-dialectal"
proc = WhisperProcessor.from_pretrained(repo)
model = WhisperForConditionalGeneration.from_pretrained(
repo, torch_dtype=torch.float16).to("cuda").eval()
wav, sr = torchaudio.load("clip.wav") # resample to 16 kHz mono if needed
feats = proc(wav.mean(0).numpy(), sampling_rate=16000,
return_tensors="pt").input_features.to("cuda", torch.float16)
ids = model.generate(feats, language="ar", task="transcribe")
print(proc.batch_decode(ids, skip_special_tokens=True)[0])
numba==0.61.2 + NUMBA_CUDA_USE_NVIDIA_BINDING=1 +
cuda-python<13 to emit sm_120 code, and fp32 (the numba loss can't take
bf16). Nemotron 3.5 requires NeMo main (its EncDecRNNTBPEModelWithPrompt
class isn't in any release) and a per-sample lang=ar prompt.--- language: ar license: apache-2.0 library_name: transformers pipeline_tag: automatic-speech-recognition base_model: openai/whisper-small datasets: - oddadmix/dialectal-arabic-lahgtna-v2-smaller-augmented tags: - automatic-speech-recognition - arabic - dialectal-arabic - asr - transformers - whisper metrics: - wer - cer model-index: - name: whisper-small-arabic-dialectal results: - task: type: automatic-speech-recognition dataset: name: dialectal-arabic-lahgtna-v2 (test) type: oddadmix/dialectal-arabic-lahgtna-v2-smaller-augmented metrics: - type: wer value: 0.428 - type: cer value: 0.151 --- # whisper-small-arabic-dialectal Fine-tune of [`openai/whisper-small`](https://huggingface.co/openai/whisper-small) (244M) for **multi-dialect Arabic** speech recognition (undiacritized output). > **Private / internal model.** Evaluate on your own data before production use. ## Results (932-clip held-out test set) | | WER | CER | |---|---|---| | Base (whisper-small, zero-shot) | ~0.77 | ~0.38 | | **This model (fine-tuned)** | **0.428** | **0.151** | First run. Overfits after ~epoch 2.2; best-by-WER checkpoint saved. ## Model comparison — all Arabic ASR models Same 932-clip held-out test set, same `clean_text` scoring (strip tashkil + tags, keep punctuation + dialect spelling) — so every row is directly comparable. | Model | Params | Zero-shot WER | Fine-tuned WER | CER (best) | |---|---|---|---|---| | **whisper-large-v3-turbo** 🏆 | 809M | 0.590 | **0.344** | 0.115 | | **cohere-transcribe-arabic** | 2.0B | **0.457** | 0.357 | 0.137 | | whisper-medium | 769M | 0.717 | 0.358 | 0.123 | | nemotron-3.5-asr (streaming) | 638M | 0.592 | 0.422 | — | | whisper-small | 244M | ~0.77 | 0.428 | 0.151 | | qwen3-asr-0.6b | 938M | 0.756 | 0.676 | 0.408 | | qwen3-asr-1.7b | 1.7B | — | _training_ | — | - **Best fine-tuned:** `whisper-large-v3-turbo` (WER 0.344), with **cohere-transcribe-arabic** a close second (**0.357**). - **Best zero-shot:** `cohere-transcribe-arabic` (0.457, Arabic-specialized). A **full** fine-tune (all ~2B params, low LR) now *improves* it to **0.357**; an earlier 32 GB **LoRA** attempt had instead *degraded* it (0.510, overfit) — full-parameter tuning with best-checkpoint selection was the fix. - **Streaming / low-latency:** `nemotron-3.5-asr`. - Parakeet-TDT-0.6b-v3 was tried but abandoned (European-only pretraining; cross-lingual tr...
Source context: 259 downloads · 0 likes · Pipeline automatic-speech-recognition · Library transformers · Repo oddadmix/whisper-small-arabic-dialectal
| 0.676 |
| 0.408 |
| qwen3-asr-1.7b | 1.7B | — | training | — |