---
language:
- ckb
license: cc-by-nc-4.0
library_name: transformers
pipeline_tag: automatic-speech-recognition
base_model: openai/whisper-tiny
tags:
- automatic-speech-recognition
- speech-to-text
- asr
- kurdish
- sorani
- central-kurdish
- ckb
- whisper
- edge
- on-device
---
# Vekol-STT (Sorani, edge) — whisper-tiny
Central Kurdish (Sorani) speech-to-text that runs offline on CPU. A small Whisper model
fine-tuned for Sorani, transcribing audio faster than real time on a laptop CPU. Part of
the Vekol hub by Revge.
- Model: `vekol-stt-ckb-tiny` (fine-tuned from `openai/whisper-tiny`, 39M)
- Language: Central Kurdish / Sorani (`ckb`), Arabic script
- Task: speech-to-text (transcription)
- Accuracy: 35.0% WER, 9.85% CER (spacing-free) on the speaker-disjoint Common Voice 25 test
- Size: 37 / 18 MB (int8 / int4)
- Runtime: ONNX Runtime (torch-free, used by the helper) or transformers / PyTorch — both formats included
## License
CC-BY-NC 4.0 (non-commercial). Fine-tuned from OpenAI Whisper (MIT). The weights here are
released non-commercial to keep the hosted service ([vekol.krd](https://vekol.krd))
sustainable. See `NOTICE`. Commercial use needs a license — use the hosted API or get in touch.
## Usage
The simplest path is the `vekol_stt.py` helper from the GitHub repo, which downloads this
model and handles Sorani normalization (ONNX Runtime + numpy, no PyTorch):
```bash
pip install transformers librosa torch
python3 vekol_stt.py audio.wav --model tiny
```
Or directly with transformers. Decode with `language="fa"` — Whisper has no Sorani token, so
this model uses the Persian token as a script anchor:
```python
import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration
proc = WhisperProcessor.from_pretrained("RevgeAI/vekol-stt-ckb-tiny")
model = WhisperForConditionalGeneration.from_pretrained("RevgeAI/vekol-stt-ckb-tiny").eval()
audio, _ = librosa.load("audio.wav", sr=16000)
feats = proc.feature_extractor(audio, sampling_rate=16000, return_tensors="pt").input_features
ids = model.generate(feats, task="transcribe", language="fa", max_new_tokens=225)
print(proc.tokenizer.decode(ids[0], skip_special_tokens=True))
```
## Notes
- Trained on Common Voice 25.0 (ckb) and FLEURS (ckb_iq), normalized to Sorani (Arabic to
Kurdish letter/digit folding; diacritics, ZWNJ and tatweel stripped).
- Accuracy is on the official speaker-disjoint test split (no speaker leakage). CER is
spacing-free because Kurdish has no standard word-spacing.
- For the large models (down to ~1.9% CER) and real-time streaming, use [vekol.krd](https://vekol.krd).
## Links
- Higher-accuracy hosted version: https://vekol.krd
- Code & all sizes: https://github.com/Revge/vekol-stt-ckb-edge
- Base model: https://huggingface.co/openai/whisper-tiny
## Citation
```bibtex
@software{vekol_stt_ckb_edge,
title = {Vekol-STT: Sorani (Central Kurdish) on-device STT},
author = {Shvan, Darvan},
organization = {Revge},
year = {2026},
url = {https://github.com/Revge/vekol-stt-ckb-edge}
}
```
Built by Darvan Shvan at Revge, part of the Vekol hub.