headline
95% confidence intervals: KSC2 [8.43, 8.98], FLEURS kk [7.56, 9.19], FLEURS ru [6.78, 8.59].
WER is computed corpus-level (total errors ÷ total reference words), not as the mean of per-utterance rates — the latter flatters a model on short clips.
versus Whisper large-v3
Identical audio, same harness:
Whisper also degrades worse under telephony conditions (+12.3% relative, against our +5.7%). Our telephony number beats Whisper’s clean number by 4.4×.
The KSC2 rows for Whisper use a 1,200-clip subset for cost control. At a 5× gap, that makes no material difference.
versus ISSAI (published)
ISSAI’s KSC2 paper (Interspeech 2022, Table 2) reports a Transformer streaming recogniser trained on KSC2, evaluated on the same official test split we use:
Their system is streaming and ours is offline, and streaming inherently costs accuracy — so part of that gap is architectural, not just modelling. Even so, our telephony-degraded 9.41% still beats their clean 15.6% by 40%.
per domain
Where the gains actually come from (KSC2 test, WER):
Fine-tuning helps spontaneous speech most and costs a little on easy read speech. That trade was deliberate: conversational audio is the product.
telephony
Real phone audio is narrowband and codec-crushed, so we derive a telephony copy of each test set — 300–3400 Hz band-limit → 8 kHz → G.711 μ-law 8-bit → back to 16 kHz:
Only 5–8% relative degradation, where an unadapted wideband model typically loses 30–80%. The likely reason is exposure: a quarter of the training clips were not natively 16 kHz, and a 300-hour chunk of the corpus is mobile-recorded.
code-switching
KSC2 is explicitly a Kazakh–Russian code-switching corpus, with intra-word switching common enough that its authors defined suffix-level rules for it. Detection here is precision-first and asymmetric on purpose: Russian’s alphabet is a strict subset of Kazakh’s, so orthography can prove a token is Kazakh (via the exclusive lettersәғқңөұүһі) but never that it is Russian. As a control, both monolingual Russian test sets read 0.00% code-switched.
Code-switch counts include established loanwords, so read them as an upper bound on genuine intra-sentential switching.
speed and cost
Measured on an A10, which is the best $/audio-hour for this model:
1,000 hours of recordings ≈ 2.65 GPU-hours ≈ **0.36/audio-hour — see billing.
what we have not measured
Stated plainly, because it affects how much weight these numbers deserve:- No real telephony audio yet. Everything above is clean or simulated.
- No head-to-head against Google STT v2 or Azure Speech, the only other paid engines that support Kazakh.
- No conversational Russian test set — Russian is validated on read speech only, so the Russian half of the code-switching claim is weaker than the Kazakh half.
- Not covered at all: streaming/incremental decoding, speaker diarization, punctuation, truecasing.