Vekol

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) 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):

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:

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.

Links

Citation

@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.

Downloads last month
75
Safetensors
Model size
37.8M params
Tensor type
F32
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for RevgeAI/vekol-stt-ckb-tiny

Quantized
(227)
this model