Sota (សោតៈ, "ear") turns Khmer and English speech into text you can copy: voice notes, meetings, lectures and phone calls. Small enough to run on your phone, without internet, so your voice never leaves the device.
Record yourself or upload an audio file. The model (≈33 MB, downloaded once) runs on your own device, so your voice is never uploaded. Early test model: best on clear Khmer speech.
Most speech tools were trained mostly on English. Khmer brings problems they rarely see.
Khmer is written without spaces, so "word error rate" does not fit. Sota is scored by character error rate (CER), with spaces ignored.
People say តោះទៅ cafe ថ្ងៃនេះ. Today's Khmer models often write the English words as Khmer sounds instead.
Phone calls, street noise, fast talk and many accents. Models tuned on clean read speech lose accuracy exactly here.
Sota is trained from scratch: about 26 million parameters (≈33 MB as an int8 file), roughly 23× smaller than Qwen3-ASR-0.6B. It shares Chakkhu's recipe: Khmer clusters as tokens, a fast CTC head plus a cluster decoder, a runaway guard and beam search.
Figure 1. Overview. Log-Mel features → Conv2D subsampling → 12 Conformer blocks → CTC head and attention decoder, trained together.
| Design | On a phone? |
|---|---|
| Fine-tune Whispermultilingual, encoder–decoder | slow, may repeat |
| Fine-tune Qwen3-ASR0.6B parameters, strong on clean speech | too big |
| Conformer + CTC onlysmall and fast | weak spelling |
| Hybrid CTC + cluster decoderour choice, ≈26M | fast + right spelling |
We tested Sota and the best free Khmer speech models on the same 12 hours of held-out recordings (6,513 clips, 16 speakers never used in training), with the same rules. Lower CER is better.
| Model | Size | All | nxkmer | OpenSLR42 |
|---|---|---|---|---|
| Sotafrom scratch · beam 5 | 26M · 33 MB int8 | 3.40% | 3.25% | 5.20% |
| Qwen3-ASR-0.6B-Khmerfine-tuned Qwen3-ASR | 0.6B | 13.20% | 13.34% | 11.41% |
| whisper-small-khmer-v2fine-tuned Whisper small | ≈244M | 18.57% | 19.72% | 4.61% † |
Qwen3-ASR-0.6B-Khmer and whisper-small-khmer-v2, the strongest open Khmer models, run on CPU like Sota.
Now: 16 speakers held out from training (clean read and spoken Khmer). Next: harder real-life clips (phone calls, noise and Khmer–English mixing), scored separately.
CER = wrong, missing or extra characters ÷ characters in the right answer. Spaces and punctuation are removed first. Same clips and rules for every model.
Every set is checked for a license that allows training before it is used.
| Real Khmer speech, ≈237 hourspeople recorded reading and talking; 16 kHz mono, text normalized, split by speaker; dev and test come only from here | checking |
| Synthetic speech, ≈610 hoursmade by VoxPocket TTS: many voices, styles and Khmer–English sentences; at most half of each epoch | own |
| AugmentationSpecAugment masks, speed 0.9 / 1.0 / 1.1, background noise, room echo, phone-call audio | own |
| Khmer text for the decoderthe same sentences Chakkhu learns from | own |
| Held-out speakersfrom the real speech, never seen in training (not even as cloned voices) | own |
| Real-life clipsphone calls, street noise, Khmer + English (to collect) | own |
| khmer-asr-compare-eval287 Khmer and code-switched clips on Hugging Face (gated) | checking |
One step at a time, each with a check before the next.
Sota សោតៈ, the ≈26M hybrid design and three architecture figures.
3,402 Khmer cluster tokens, shared with Chakkhu.
≈850 h (≈237 h real): resampled, text cleaned, split by speaker, cloned voices and repeated sentences removed.
Qwen3-ASR-Khmer 13.2% and Whisper-small-khmer 18.6% CER on the same 12 h test set.
Decoder learned Khmer text first, then a small test run, then the full run: 100k steps on one GPU. Test CER 3.4%.
Early test: web demo, Space and model are live. Next: phone, noise and Khmer–English tests.
Voice typing in the Akkhara keyboard, on phone and computer, offline.