rzgar/whisper-large-v3-sorani-kurdish-ckb-v1

🤗 On Hugging Faceapache-2.01.5B params3.1 GBsafetensors✓ Checksum-verifiedupdated 0d ago
Magnet

🎺 Version 2

Whisper Large-V3 for Sorani Kurdish (ckb) - V1

This is a fine-tuned version of OpenAI's whisper-large-v3 specifically optimized for Central Kurdish (Sorani / ckb) Automatic Speech Recognition (ASR).

Because Sorani Kurdish is a severely under-resourced language in AI, this model was trained to provide the basic baseline for transcribing podcasts, news, and conversational audio.

⚠️ Important Usage Note

| Metric | Score |

|---------------------------|-----------|

| Word Error Rate | 31.5% |

| Evaluation Loss | 0.0429 |

| Epochs trained | 6.94 |

Trained on a smaller Sorani Kurdish dataset (V1). V2 with significantly more data is upcoming.

Due to the shared Arabic-based script and overlapping vocabulary, this model was trained using the persian language token as a forced decoder ID. This prevents English hallucinations and ensures the correct Kurdish script characters (like ە, ۆ, ێ, ڵ, ڕ) are generated. You must pass language="persian" during inference.

🚀 How to use

Using Transformers Pipeline

import torch
import librosa
from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq

model_id = "rzgar/whisper-large-v3-sorani-kurdish-ckb-v1"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch.float16, device_map="cuda")

audio, sr = librosa.load("audio.wav", sr=16000)
inputs = processor(audio, return_tensors="pt", sampling_rate=16000).to("cuda", dtype=torch.float16)

forced_decoder_ids = processor.get_decoder_prompt_ids(language="persian", task="transcribe")

generated_ids = model.generate(
    input_features=inputs.input_features,
    forced_decoder_ids=forced_decoder_ids,
    num_beams=5
)
print(processor.batch_decode(generated_ids, skip_special_tokens=True)[0])

🚧 Known Limitations (V1)

Orthographic Bias: Because the base model has a strong Persian/Arabic prior, it occasionally defaults to Persian spelling rules for complex Kurdish words ( بودژە , بودجە).

Hallucinations: On very noisy audio or long silences, it may still occasionally hallucinate. Using Greedy Decoding _(num_beams=1)_ or strict _no_speech_threshold_ parameters is recommended for noisy datasets.

📅 Roadmap (V2)

V2 will include expanded training on diverse Kurdish dialects, more conversational data, and orthographic corrections to fix Persian spelling biases.