ufakzeka-kulak: Building and Evaluating a 31.6M-Parameter Turkish Speech Recognizer from Scratch
Organizations: ufak AI
Abstract
ufakzeka-kulak is an open Turkish speech-to-text model of 31.6M parameters, a FastConformer encoder with a token-and-duration transducer (TDT) and a CTC head, trained from scratch and released under Apache-2.0. It writes cased, punctuated Turkish with numbers as words. Its 4,977 training hours come from sources whose licences allow commercial use; 281 hours are human-transcribed, and for the other 4,696 the training text is an uploader subtitle or a machine transcript, kept only where a second, independent reading of the audio agrees with it. The recipe, checkpoint, labelling and export choices were made on development data, and the test sets were scored once, in a release gate fixed before training. With greedy TDT decoding the normalised word error rate (WER) is 0.0921 (95 percent interval 0.0792 to 0.1055) on FLEURS Turkish test and 0.0916 (0.0873 to 0.0958) on Common Voice 27.0 Turkish test, lower than Whisper base and Whisper small on both sets with paired intervals wholly below zero; Whisper large-v3 (greedy) scores 0.0604 and 0.0767. On conversational speech the WER is 0.3807. We also report punctuation and casing, degraded audio, and how closely each shipped export reproduces the trained model.
Figures & tables
| hours by text origin | |||||
|---|---|---|---|---|---|
| source | licence | utterances | hours | subtitle | checked |
| Common Voice Scripted Speech 27.0 Turkish | CC0 1.0 | 64,064 | 67.90 | ||
| Common Voice Spontaneous Speech 5.0 Turkish | CC0 1.0 | 29 | 0.10 | ||
| antalia-voice-corpus | CC BY 4.0 | 892 | 4.16 | ||
| ISSAI Turkish Speech Corpus, train split | CC BY 4.0 | 178,087 | 209.06 | ||
| YODAS ( yodas0.10 and yodas0.00 ) and YODAS v3 | CC BY 3.0 | 780,714 | 4,696.21 | 369.62 | 4,326.59 |
| compared choice | effect | relative | FLEURS-only interval | outcome |
|---|---|---|---|---|
| CR-CTC instead of intermediate CTC | % | [ , ] | not adopted | |
| CTC-side weight 0.1 instead of 0.3 | % | [ , ] | not adopted | |
| BPE-dropout 0.1 instead of none | % | [ , ] | not adopted | |
| random gain, original level | % | [ , ] | adopted | |
| random gain, at and dB | % | adopted |
| Whisper | ufakzeka-kulak WER minus | |||||
|---|---|---|---|---|---|---|
| set | utt. | WER | CER | base WER | Whisper base | Whisper small |
| FLEURS test | 743 | 0.0921 [0.0792, 0.1055] | 0.0335 | 0.2461 | [ , ] | [ , ] |
| CV 27.0 test | 11,874 | 0.0916 [0.0873, 0.0958] | 0.0242 | 0.3287 | [ , ] | [ , ] |
| Real-TurnTurk | 1,532 | 0.3807 [0.3270, 0.4640] | 0.2787 | 0.7242 | [ , ] | [ , ] |
| MediaSpeech | 2,511 | 0.1042 [0.1013, 0.1073] | 0.0422 | 0.3282 | [ , ] | [ , ] |
| WER, no marks | capital | references ending | |||||
|---|---|---|---|---|---|---|---|
| set | PC-WER | or casing | PuncER | CaseER | PER | F1 | in a mark |
| FLEURS test | 0.1508 | 0.0890 | 0.4223 | 0.1878 | 0.4134 | 0.8634 | 0.9960 |
| Common Voice 27.0 test | 0.1132 | 0.0963 | 0.1385 | 0.0530 | 0.1379 | 0.9691 | 0.9832 |
| Real-TurnTurk | 0.4960 | 0.3838 | 0.8337 | 0.3817 | 0.8647 | 0.3116 | 1.0000 |
| copy | FLEURS test | Common Voice 27.0 test | Real-TurnTurk |
|---|---|---|---|
| Opus, 6,000 bit/s | [ , ] | [ , ] | [ , ] |
| Opus, 12,000 bit/s | [ , ] | [ , ] | [ , ] |
| telephone band, A-law | [ , ] | [ , ] | [ , ] |
| dB | [ , ] | [ , ] | [ , ] |
| dB | [ , ] | [ , ] | [ , ] |
| utterances with NeMo’s ids | WER minus NeMo | ||||
|---|---|---|---|---|---|
| file | runtime | CV dev (11,864) | FLEURS dev (338) | CV dev | FLEURS dev |
| transformers TDT, CTC | transformers | 11,864, 11,864 | 338, 338 | 0.0000 | 0.0000 |
| sherpa-onnx TDT, int8, gain 8 | sherpa-onnx | 9,709 | 174 | ||
| sherpa-onnx CTC, int8, gain 8, pad | sherpa-onnx | 9,339 | 142 | ||
| GGUF TDT, f32 | parakeet.cpp | 11,748 | 306 | ||
| GGUF TDT, q8_0 | parakeet.cpp | 11,555 | 297 | ||
Automatic Speech Recognition
Automatic speech recognition converts spoken language into text across speakers, languages, domains, and recording conditions.
See all 493 papers