Instructions to use Tonykip/parakeet-tdt-0.6b-kalenjin with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Tonykip/parakeet-tdt-0.6b-kalenjin with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="Tonykip/parakeet-tdt-0.6b-kalenjin")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Tonykip/parakeet-tdt-0.6b-kalenjin", device_map="auto") - Notebooks
- Google Colab
- Kaggle
parakeet-tdt-0.6b-kalenjin
⚠️ Experimental — not recommended for use. This Parakeet fine-tune was a research experiment. On real-world Kalenjin audio it is less reliable than the recommended model,
Tonykip/whisper-kalenjin-v3-turbo— use that instead. This repo is kept for reproducibility and research transparency.
An open automatic speech recognition (ASR) model for Kalenjin — a Highland Nilotic
language of Kenya's Rift Valley (~2M speakers). This is an honest fine-tune of NVIDIA's
parakeet-tdt-0.6b-v3 (a 0.6B-parameter
FastConformer encoder with a Token-and-Duration Transducer decoder). It is not trained from
scratch, and it does not beat the strongest closed baseline overall — see Results for the
honest comparison.
Adaptation rebuilds the SentencePiece tokenizer to Kalenjin orthography (vocab 2048, BPE,
preserving the velar-nasal apostrophe in ng' — a real Kalenjin letter, not punctuation),
reinitializes the decoder embedding + joint head to the new vocabulary, and keeps the acoustic
encoder warm. Covered dialects: Kipsigis and Nandi.
Results (KaleBench-ASR, held-out unscripted, n=198)
Character Error Rate (CER) is the primary metric — Kalenjin has no single agreed orthography, which inflates WER. 95% confidence intervals are paired bootstrap (B=2000, seed=1234).
| System | CER | 95% CI | WER | Kipsigis / Nandi CER |
|---|---|---|---|---|
parakeet-tdt-0.6b-v3 (base, 0 Kalenjin) |
0.534 | [0.514, 0.558] | 1.00 | 0.524 / 0.661 |
| Whisper-large-v3-turbo+LoRA (closed incumbent, beam-5) | 0.211 | [0.199, 0.224] | 0.656 | 0.212 / 0.196 |
| this model — v3 (full-corpus, greedy) | 0.260 | [0.251, 0.270] | 0.756 | 0.260 / 0.267 |
Honest reading:
- This is the best open Kalenjin ASR model, and it is dialect-balanced (Kipsigis 0.260 ≈ Nandi 0.267), unlike the incumbent's Nandi tilt.
- Under matched greedy decoding it leads the closed incumbent decisively (the incumbent's greedy CER is 0.483). The incumbent's headline 0.211 uses beam-5 search; Parakeet-TDT in 🤗 Transformers currently supports greedy decoding only, so the comparison is asymmetric in decoding budget.
- The reported scores are comparable but not yet a formally citable KaleBench score: all 198 clips currently carry
needs_native_validation=true. Numbers are reproducible to the digit and use the same gold + normalizer for every system; native by-ear validation (in progress) is what makes them citable.
Usage
Parakeet-TDT's joint head emits token logits and duration logits; during greedy decoding you must mask the duration columns so the argmax can never select a duration slot as a token.
import torch, soundfile as sf
from transformers import (ParakeetForTDT, ParakeetProcessor, ParakeetTokenizer,
LogitsProcessorList)
repo = "Tonykip/parakeet-tdt-0.6b-kalenjin"
model = ParakeetForTDT.from_pretrained(repo, dtype=torch.bfloat16).to("cuda").eval()
processor = ParakeetProcessor.from_pretrained(repo)
processor.tokenizer = ParakeetTokenizer.from_pretrained(repo) # the rebuilt Kalenjin tokenizer
V = model.config.vocab_size
class MaskDurations: # keep argmax inside the real vocab
def __call__(self, input_ids, scores):
if scores.shape[-1] > V:
scores[..., V:] = float("-inf")
return scores
wav, sr = sf.read("clip.wav") # mono; resample to 16 kHz if needed
feats = processor.feature_extractor(wav, sampling_rate=16000, return_tensors="pt")
feats = {k: (v.to("cuda", dtype=model.dtype) if torch.is_floating_point(v) else v.to("cuda"))
for k, v in feats.items()}
with torch.no_grad():
out = model.generate(**feats, logits_processor=LogitsProcessorList([MaskDurations()]))
seq = out.sequences if hasattr(out, "sequences") else out
print(processor.tokenizer.decode(seq[0], skip_special_tokens=True))
Training
- Base:
nvidia/parakeet-tdt-0.6b-v3(FastConformer + TDT, 0.6B, CC-BY-4.0). - Data:
Anv-ke/Kalenjin(AfriVoices-KE; Wanzare et al., arXiv:2604.08448) — full training corpus, 82,378 clips, streamed (~3.4 passes over clips ≤32s). - Tokenizer: rebuilt Kalenjin SentencePiece (BPE, vocab 2048;
ng'preserved as a piece); decoder embedding + joint head reinitialized to the new vocabulary; encoder kept warm. - Recipe: L40S (Modal), bf16, gradient checkpointing, per-device batch 8 × grad-accum 4, lr 1e-4,
max_steps=7723. A TDT-loss correction (sigma=0.05; the 🤗 default0.0collapses training to empty output) and int64 gather indices were applied.
Intended use & limitations
- Intended: transcription of spoken Kalenjin (Kipsigis / Nandi), research on low-resource African ASR, and as a baseline for the KaleBench-ASR benchmark.
- Limitations: only Kipsigis + Nandi are covered (no Marakwet/Sabaot/Tugen/Pokot evaluation); greedy decoding only (no beam in Transformers for TDT); code-switched English/Swahili spans are transcribed phonetically rather than preserved; training transcripts are themselves unvalidated, which likely caps accuracy. Not intended for surveillance, profiling, or any non-consensual use.
License & attribution
This fine-tune and rebuilt tokenizer are released under CC-BY-4.0, inheriting the base model's
license. The training audio comes from Anv-ke/Kalenjin (CC-BY-4.0, gated) — please cite
AfriVoices-KE (arXiv:2604.08448) in any derivative work. Built by Tony Kipkemboi, a native
Kalenjin speaker.
Citation
@misc{kipkemboi2026parakeetkalenjin,
title = {Open Kalenjin Automatic Speech Recognition: Fine-tuned Parakeet Models and the KaleBench-ASR Benchmark},
author = {Kipkemboi, Tony},
year = {2026},
note = {Preprint}
}
- Downloads last month
- 15
Model tree for Tonykip/parakeet-tdt-0.6b-kalenjin
Base model
nvidia/parakeet-tdt-0.6b-v3Paper for Tonykip/parakeet-tdt-0.6b-kalenjin
Evaluation results
- CER (greedy) on KaleBench-ASR (held-out unscripted, n=198)self-reported0.260
- WER (greedy) on KaleBench-ASR (held-out unscripted, n=198)self-reported0.756