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

CzechVoice: Czech speech to text on the device

Whisper large-v3-turbo fine-tuned on Czech speech on the LUMI supercomputer. It transcribes parliamentary speech, read speech and speech in noise more accurately than the open models we tried. Quantised to 4 bits it fits in 452 MiB and runs offline on a laptop and on an ordinary phone; the audio stays in the device's memory.

Accuracy against open models

Word error rate (WER, lower is better) on the same segments with the same text normalisation and greedy decoding for every model; laptop with an RTX 4050. Numbers: share of numeric entities transcribed correctly. Legal terms: share of legal terms from our list transcribed correctly. Both on the parliamentary set.

modelparametersparliamentFLEURSnoisenumberslegal terms
CzechVoice (ours)0.81 B1.8 %7.3 %6.5 %99.3 %99.5 %
NVIDIA Canary-1b-v20.98 B7.5 %8.4 %22.4 %94.8 %94.2 %
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 %96.5 %96.3 %
NVIDIA Parakeet-TDT-0.6b-v30.6 B10.3 %11.9 %25.8 %94.6 %92.1 %

Parliamentary speech is the training domain of CzechVoice (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. –: not measured.

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