Moravian AI/CzechSpeech: Czech speech to text on the deviceENCS

CzechSpeech: Czech speech to text on the device

CzechSpeech is a speech-to-text model (Whisper large-v3-turbo) fine-tuned on Czech speech by Moravian AI. It transcribes parliamentary speech, read speech and speech in noise more accurately than available open models of comparable size. Quantised to 4 bits it fits in 452 MiB and runs offline on a laptop or on an ordinary phone.

Word error rate: lower is better

Word error rate (WER) on the same segments with the same text normalisation and greedy decoding for every model; laptop with an RTX 4050. Lower is better.

modelparametersparliamentFLEURSnoise
CzechSpeech (ours)0.81 B1.8 %7.3 %6.5 %
NVIDIA Canary-1b-v20.98 B7.5 %8.4 %22.4 %
Whisper large-v3, fine-tuned on Czech Common Voice 131.55 B8.0 %9.6 %29.1 %
Whisper large-v31.55 B8.1 %10.2 %27.8 %
Whisper large-v3-turbo (our starting point)0.81 B9.5 %11.4 %29.5 %
NVIDIA Parakeet-TDT-0.6b-v30.6 B10.3 %11.9 %25.8 %

Parliamentary speech is the training domain of CzechSpeech (different segments than the test), and the FLEURS training split was in its training data too. The least favourable comparison is therefore FLEURS: 7.3 % against 8.4 % for Canary-1b-v2.

Numbers and legal terms: higher is better

Share transcribed correctly on the parliamentary set: numeric entities (numbers, dates, amounts) and legal terms from our list. Higher is better. Measured for the models below.

modelnumbers correctlegal terms correct
CzechSpeech (ours)99.3 %99.5 %
NVIDIA Canary-1b-v294.8 %94.2 %
Whisper large-v3-turbo (our starting point)96.5 %96.3 %
NVIDIA Parakeet-TDT-0.6b-v394.6 %92.1 %

Size, memory and speed

devicefilesizememoryspeedWER parliament / FLEURS / noise
Pixel 9a phone, processor only, 4 threads4 bits (q4_0)452 MiB0.83 GB RAM6.9 s of speech in 2.7 s1.9 / 7.7 / 6.8 %
Laptop with an RTX 4050 (6 GB)5 bits (q5_0)547 MiB0.89 GB VRAM0.33 s per segment1.8 / 7.4 / 6.6 %

Memory: the peak of the whole app on the phone, the added GPU memory on the laptop. Laptop speed: median per parliamentary segment, about 25× faster than real time. GPTQ quantisation with Czech calibration data: 5 bits lose nothing against 8 bits, 4 bits lose 0.1 to 0.3 points of WER. On the phone the encoder processes only the recorded speech instead of a fixed 30-second window, and the model is loaded only while recording and transcribing (about 1 s, in parallel with the recording). The WER of the 4-bit file was measured on the laptop with the same file. Phone speed: whisper.cpp, repeated run; the first transcription after the app starts is slower.

The audio stays on the device

Google on the same phone

On a Pixel 9a on 3 November 2026, through the public Android API: the system on-device recogniser offers 37 languages including Polish and Russian, but not Czech, and Speech Services by Google (the service behind Gboard dictation) answers "language not supported" for Czech when asked to work offline. An English sentence went through offline correctly. Czech dictation from Google on this phone therefore goes through the cloud.

How it was measured

Licence and release