Views
No views yet
openai/whisper-large-v3-turbo
(809M) for multi-dialect Arabic speech recognition (undiacritized output).Private / internal model. Evaluate on your own data before production use.
| WER | CER | |
|---|---|---|
| Base (whisper-large-v3-turbo, zero-shot) | 0.590 | 0.278 |
| This model (fine-tuned) | 0.344 | 0.115 |
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 | — |
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.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-large-v3-turbo · full fine-tune (no LoRA)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 گ ڨ چ).1pip install -r requirements.txt
2huggingface-cli login # for the (private) dataset
3
4python train.py \
5 --base_model openai/whisper-large-v3-turbo --run_name my-run \
6 --per_device_train_batch_size 8 --gradient_accumulation_steps 4 \
7 --learning_rate 1e-5 --warmup_steps 500 --max_steps 6000
8
9python evaluate_model.py --model runs/my-run # WER / CERtrain.py force-loads
fp32 so generate() doesn't crash at eval. bf16 autocast is used for training.1import torch, torchaudio
2from transformers import WhisperForConditionalGeneration, WhisperProcessor
3
4repo = "oddadmix/whisper-large-v3-turbo-arabic-dialectal"
5proc = WhisperProcessor.from_pretrained(repo)
6model = WhisperForConditionalGeneration.from_pretrained(
7 repo, torch_dtype=torch.float16).to("cuda").eval()
8
9wav, sr = torchaudio.load("clip.wav") # resample to 16 kHz mono if needed
10feats = proc(wav.mean(0).numpy(), sampling_rate=16000,
11 return_tensors="pt").input_features.to("cuda", torch.float16)
12ids = model.generate(feats, language="ar", task="transcribe")
13print(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.