Downloads · 30 days
30
19% of all-time downloads
Tonykip/parakeet-tdt-0.6b-kalenjin
parakeet-tdt-0.6b-kalenjin is a automatic speech recognition model from Tonykip. Use it when you need speech turned into text. It is set up for transformers. The card lists the license as cc-by-4.0.
⚠️ 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 i…
Downloads · 30 days
30
19% of all-time downloads
All-time downloads
156
Public
Parameters
619M
2.5 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors2.5 GB · 100%
From the Hugging Face model README
⚠️ 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.
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:
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.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))
nvidia/parakeet-tdt-0.6b-v3 (FastConformer + TDT, 0.6B, CC-BY-4.0).Anv-ke/Kalenjin (AfriVoices-KE; Wanzare et al., arXiv:2604.08448) — full training corpus, 82,378 clips, streamed (~3.4 passes over clips ≤32s).ng' preserved as a piece); decoder embedding + joint head reinitialized to the new vocabulary; encoder kept warm.max_steps=7723. A TDT-loss correction (sigma=0.05; the 🤗 default 0.0 collapses training to empty output) and int64 gather indices were applied.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.
@misc{kipkemboi2026parakeetkalenjin,
title = {Open Kalenjin Automatic Speech Recognition: Fine-tuned Parakeet Models and the KaleBench-ASR Benchmark},
author = {Kipkemboi, Tony},
year = {2026},
note = {Preprint}
}