Speech-to-text accuracy by language
Whisper Large v3 lists 100 languages. Listing is not the same as working, so we sent 30 public test clips per language through this API and scored every transcript. 83 languages could be measured. 34 came out good or better, 22 are usable only with correction, and 27 are not usable, including 3 that return empty transcripts.
| Language | Code | Whisper Large v3 | Rating | Parakeet TDT | Auto-detected | Voices |
|---|---|---|---|---|---|---|
| Spanish | es |
2.7% WER | Excellent | 3.5% | 10 of 10 | voices |
| Italian | it |
2.7% WER | Excellent | 2.4% | 10 of 10 | voices |
| German | de |
3.4% WER | Excellent | 6.3% | 8 of 10 (1 as English, 1 as Romanian) | — |
| Portuguese | pt |
3.4% WER | Excellent | 4.4% | 10 of 10 | voices |
| Japanese | ja |
4.2% CER | Excellent | — | 10 of 10 | voices |
| Cantonese | yue |
5.1% CER | Excellent | — | 0 of 10 (4 as Thai, 3 as Chinese, 2 as Vietnamese, 1 as English) | — |
| English | en |
5.2% WER | Excellent | 5.8% | 10 of 10 | voices |
| Indonesian | id |
5.5% WER | Excellent | — | 5 of 10 (5 as Javanese) | — |
| Polish | pl |
5.6% WER | Excellent | 7.6% | 9 of 10 (1 as English) | — |
| Russian | ru |
5.8% WER | Excellent | 7.2% | 5 of 10 (4 as Belarusian, 1 as English) | — |
| Ukrainian | uk |
6.4% WER | Excellent | 6.6% | 10 of 10 | — |
| Finnish | fi |
6.6% WER | Excellent | 15% | 10 of 10 | — |
| French | fr |
6.6% WER | Excellent | 5.2% | 10 of 10 | voices |
| Catalan | ca |
6.8% WER | Excellent | — | 10 of 10 | — |
| Dutch | nl |
7.1% WER | Excellent | 7.8% | 10 of 10 | — |
| Turkish | tr |
7.3% WER | Excellent | — | 10 of 10 | — |
| Vietnamese | vi |
7.9% WER | Excellent | — | 10 of 10 | — |
| Bulgarian | bg |
8.4% WER | Good | 11% | 10 of 10 | — |
| Malay | ms |
8.6% WER | Good | — | 7 of 10 (3 as Indonesian) | — |
| Swedish | sv |
8.8% WER | Good | 18% | 8 of 10 (2 as Nynorsk) | — |
| Chinese | zh |
9.5% CER | Good | — | 10 of 10 | voices |
| Norwegian | no |
9.7% WER | Good | — | 9 of 10 (1 as English) | — |
| Romanian | ro |
10% WER | Good | 13% | 10 of 10 | — |
| Slovak | sk |
11% WER | Good | 10% | 9 of 10 (1 as English) | — |
| Greek | el |
11% WER | Good | 35% | 10 of 10 | — |
| Croatian | hr |
11% WER | Good | 10% | 8 of 10 (2 as English) | — |
| Czech | cs |
12% WER | Good | 14% | 8 of 10 (1 as Slovak, 1 as English) | — |
| Thai | th |
12% CER | Good | — | 10 of 10 | — |
| Galician | gl |
12% WER | Good | — | 9 of 10 (1 as Spanish) | — |
| Tagalog | tl |
13% WER | Good | — | 10 of 10 | — |
| Korean | ko |
13% WER | Good | — | 10 of 10 | — |
| Bosnian | bs |
13% WER | Good | — | 9 of 10 (1 as Croatian) | — |
| Arabic | ar |
13% WER | Good | — | 10 of 10 | — |
| Danish | da |
15% WER | Good | 20% | 10 of 10 | — |
| Macedonian | mk |
16% WER | Fair | — | 10 of 10 | — |
| Hungarian | hu |
17% WER | Fair | 16% | 10 of 10 | — |
| Estonian | et |
17% WER | Fair | 17% | 10 of 10 | — |
| Latvian | lv |
20% WER | Fair | 26% | 10 of 10 | — |
| Azerbaijani | az |
20% WER | Fair | — | 10 of 10 | — |
| Urdu | ur |
21% WER | Fair | — | 5 of 10 (5 as Hindi) | — |
| Serbian | sr |
21% WER | Fair | — | 5 of 10 (3 as Bosnian, 2 as English) | — |
| Slovenian | sl |
24% WER | Fair | 27% | 10 of 10 | — |
| Lithuanian | lt |
28% WER | Fair | 23% | 10 of 10 | — |
| Hebrew | he |
28% WER | Fair | — | 10 of 10 | — |
| Persian | fa |
28% WER | Fair | — | 10 of 10 | — |
| Afrikaans | af |
30% WER | Fair | — | 10 of 10 | — |
| Kazakh | kk |
31% WER | Fair | — | 10 of 10 | — |
| Welsh | cy |
32% WER | Fair | — | 10 of 10 | — |
| Icelandic | is |
33% WER | Fair | — | 10 of 10 | — |
| Swahili | sw |
34% WER | Fair | — | 10 of 10 | — |
| Maori | mi |
36% WER | Poor | — | 10 of 10 | — |
| Hindi | hi |
43% WER | Poor | — | 10 of 10 | voices |
| Belarusian | be |
47% WER | Poor | — | 10 of 10 | — |
| Armenian | hy |
50% WER | Poor | — | 10 of 10 | — |
| Lingala | ln |
66% WER | Poor | — | 8 of 10 (1 as English, 1 as Hausa) | — |
| Kannada | kn |
70% WER | Poor | — | 10 of 10 | — |
| Telugu | te |
70% WER | Not usable | — | 9 of 10 (1 as Malayalam) | — |
| Gujarati | gu |
70% WER | Not usable | — | 10 of 10 | — |
| Javanese | jw |
71% WER | Not usable | — | 7 of 10 (3 as Indonesian) | — |
| Occitan | oc |
71% WER | Not usable | — | 0 of 10 (3 as French, 3 as Lingala, 2 as Haitian Creole, 2 as English) | — |
| Maltese | mt |
72% WER | Not usable | 22% | 10 of 10 | — |
| Bengali | bn |
73% WER | Not usable | — | 10 of 10 | — |
| Tamil | ta |
73% WER | Not usable | — | 9 of 10 (1 as Telugu) | — |
| Georgian | ka |
76% WER | Not usable | — | 10 of 10 | — |
| Marathi | mr |
80% WER | Not usable | — | 8 of 10 (1 as English, 1 as Hindi) | — |
| Luxembourgish | lb |
82% WER | Not usable | — | 10 of 10 | — |
| Punjabi | pa |
82% WER | Not usable | — | 10 of 10 | — |
| Hausa | ha |
83% WER | Not usable | — | 10 of 10 | — |
| Mongolian | mn |
85% WER | Not usable | — | 10 of 10 | — |
| Tajik | tg |
86% WER | Not usable | — | 10 of 10 | — |
| Uzbek | uz |
89% WER | Not usable | — | 10 of 10 | — |
| Pashto | ps |
92% WER | Not usable | — | 10 of 10 | — |
| Nepali | ne |
92% WER | Not usable | — | 10 of 10 | — |
| Somali | so |
93% WER | Not usable | — | 10 of 10 | — |
| Lao | lo |
over 100% CER | Not usable | — | 6 of 10 (4 as Thai) | — |
| Yoruba | yo |
over 100% WER | Not usable | — | 10 of 10 | — |
| Sindhi | sd |
over 100% WER | Not usable | — | 10 of 10 | — |
| Malayalam | ml |
over 100% WER | Not usable | — | 10 of 10 | — |
| Assamese | as |
over 100% WER | Not usable | — | 10 of 10 | — |
| Shona | sn |
over 100% WER | Not usable | — | 9 of 10 (1 as Swahili) | — |
| Khmer | km |
100% CER | Returns nothing | — | 10 of 10 | — |
| Burmese | my |
100% CER | Returns nothing | — | 10 of 10 | — |
| Amharic | am |
over 100% WER | Returns nothing | — | 10 of 10 | — |
Reading the table
WER is word error rate: substitutions, deletions and insertions divided by the number of words in the reference. 5% means about one word in twenty is wrong. It can exceed 100% when the model inserts words. Languages written without spaces (Chinese, Japanese, Thai and others) are scored on characters instead, shown as CER. Auto-detected is how many of ten clips Whisper labelled with the right language when no language was sent; where it is not ten of ten, send the code.
Method
- Audio: the first 30 clips, 2 to 30 seconds each, of the test split of FLEURS, a public read-speech dataset recorded by native speakers. Clean audio, one speaker, no background noise: treat the numbers as a best case for your own recordings.
- Requests:
POST /v1/audio/transcriptionson the public endpoint withlanguageset, default settings, on September 17, 2026. Parakeet was run on the same clips for its 25 languages. - Scoring: both reference and transcript were Unicode-normalised, lower-cased and stripped of punctuation. Numbers were not converted, so "100" against "one hundred" counts as an error; this inflates the rate slightly for every language.
- Thirty clips is a small sample. Differences of a point or two between languages are noise; differences between 5% and 50% are not.
- Ratings: up to 8% WER (6% CER) excellent, up to 15% (12%) good, up to 35% (25%) fair, up to 70% (50%) poor, above that not usable. "Returns nothing" means at least half the clips came back empty.
Languages we could not measure
FLEURS has no test set for Bashkir, Tibetan, Breton, Basque, Faroese, Hawaiian, Haitian Creole, Latin, Malagasy, Nynorsk, Sanskrit, Sinhala, Albanian, Sundanese, Turkmen, Tatar, Yiddish. Whisper accepts their codes, but we have no evidence either way, and most are low-resource languages, which is where the measured results above are weakest. Test on your own audio before relying on them; new accounts include free credit for exactly that.
Found a result that does not match your experience? Tell us what audio you used and we will re-run it.
