Accuracy benchmark

How accurate is speech-to-text, by the numbers the vendors publish.

Every word error rate that AssemblyAI, Deepgram, Sonix and the Russian services publish, with the test set the vendor named, the page it was read from and the date it was read. Numbers from different test sets are not comparable, and the table keeps them apart for that reason.

Updated 2026-10-24 · Author: Mark Burmistrov · 6 minutes

Before the numbers

Three things to know before you read the table.

Numbers from different corpora cannot be compared.

CommonVoice, Earnings21, a far-field microphone and a call-centre set are different test sets with different difficulty. A lower WER on one of them says nothing about the other. The only fair comparison is two engines measured on the same corpus, and every row names its corpus so you can find those pairs.

A relative claim is not a metric.

"36 % more accurate than OpenAI Whisper" is a comparison a vendor makes about another vendor. No test set is published with it and no WER is defined, so it is not a measurement and it does not belong in a WER column. Those rows are kept in their own table and carry a badge.

Every row has its own reading date.

A vendor can change a page without a note. Each row of the table carries the date its page was read and links to that page, so a number can always be checked and never goes stale unnoticed.

The short version.

  • AssemblyAI Universal-3.5 Pro scores 4.87 % WER on CommonVoice and 1.52 % on LibriSpeech Clean. Both are English test sets.
  • GigaAM v3 E2E RNNT scores 11.2 % on the Sber benchmark of ten Russian datasets, and Whisper large-v3 scores 21.0 % on the same benchmark. Sber measured both; Transkriba published the table.
  • On Transkriba's own archive run over 200 clips of Golos crowd, the raw GigaAM v3 branch reaches 1.50 % WER and Whisper large-v3 reaches 12.79 % on the same 1 001 reference words.
  • Deepgram's "36 % more accurate than OpenAI Whisper" and Sonix's "99 % transcription accuracy" are relative claims: the corpus is not named, so they are not WER numbers and they are not in the WER column.
The table

Every published number, with its corpus, its source and its date.

Filter by vendor or by metric, search a row, sort by corpus. The first table holds the measured metrics; the second holds the relative claims.

Loading the rows…

Measured metrics

Rows with a metric and a named corpus. This is the only table with a number column, and the number is a WER or a CER: the share of words the engine got wrong, lower is better.

Word error rate and character error rate published by the transcription services, with the test set, the source and the date it was read
Metric Language Source
Loading the rows…

Relative claims

Numbers a vendor publishes about another vendor. The corpus is not named and no WER is defined, so every row here carries the badge relative claim — corpus not named and stays out of the WER column above.

Relative accuracy claims of the transcription services, with the source and the date it was read
The claim Compared with Source
Loading the rows…

The data of the table is one file, assets/accuracy/vendors.json, and the page loads it from this site. Nothing is sent anywhere, and the numbers are the ones the vendors published, not a ranking we made up.

The chart

Word error rate by test set.

One bar for every published number, grouped by the corpus the vendor named.

Published word error rate by test set One horizontal bar for every published word error rate, grouped by the test set the vendor named. The test sets are different corpora, so the bars cannot be compared with each other: a shorter bar on one corpus does not mean a better engine than a longer bar on another. The table above holds every number with its source and the date it was read.

    Read the axis this way: the vertical axis is a list of test sets, not a scale. A shorter bar on one corpus does not mean a better engine than a longer bar on another corpus, because the corpora are different. The honest comparison is inside one group: two bars of the same corpus, or one bar against another engine on the same corpus.

    Our service

    Our own number: not measured yet.

    We have not run a word error rate measurement of our own on a public corpus, so this page carries no accuracy percentage for Transcrib Si, and we will not print one we cannot reproduce. The transcription key of the engine is not present in the environment of this build, so the reference clips were never sent to it and there was nothing to measure.

    What we can show is the engine behind the service. The public health endpoint of the transcription engine answered on 2026-10-24: it runs the Potok model, takes wav, ogg/opus and flac, accepts a file of up to 64 MB and up to 1 200 seconds of audio in one request, and cuts the audio into 22-second fragments with a 3-second overlap. That is the engine contract, not an accuracy score, and it is on this page instead of a percentage we do not have.

    How we would measure it: normalise the reference text and the transcript, align them word by word, and take (S + D + I) / N — substitutions, deletions and insertions over the number of reference words. The method, the engine build and the speed of every step of the pipeline are written down on the accuracy page, and the evaluation report with the sample set is sent on request.

    Questions

    Six questions people ask about these numbers.

    What is WER, and what is CER?

    WER is the word error rate: the share of words the engine got wrong, after the reference text and the transcript are normalised and aligned word by word. CER is the same measure taken on characters instead of words. Both are lower-is-better numbers, and the metric column says which of the two a row holds.

    Why can I not compare two numbers from two different vendors?

    Because they were measured on different corpora. CommonVoice, Earnings21, a far-field microphone and a call-centre set are different test sets with different difficulty, so a lower WER on one of them says nothing about the other. The only fair comparison is two engines measured on the same corpus, and every row names its corpus so you can find those pairs.

    Why is Deepgram's "36 % more accurate than Whisper" not in the WER column?

    Because it is a claim about another vendor, not a measurement. Deepgram publishes no test set and no WER with that number, so the row is a relative claim, the corpus is not named, and it is kept in its own table where it cannot be read as a WER.

    Which rows are in Russian?

    The Russian rows come from the Sber benchmark, measured by Sber on ten Russian datasets and published by Transkriba, and from Transkriba's own archive run on 200 clips of Golos crowd. Both carry the corpus they were measured on.

    Does Transcrib Si publish its own accuracy number?

    Not yet. We have not run a WER measurement of our own on a public corpus, so we publish no accuracy percentage here. What we publish is the method, the engine and the speed of every step, on the accuracy page. A number nobody can reproduce is worse than no number.

    How fresh are these numbers?

    Every row carries the date its page was read and links to that page. All the pages of this table were read on 2026-10-24. Vendors change their pages without notice, so open the source link before you rely on a number.

    How we count

    Where the numbers of this page come from.

    Every row of the table was read from the page in the source column, on the date in the read column. The raw pages are kept in the repository of the project under research/accuracy/raw/, so the collection can be repeated and the dates can be checked. The script that reads the sources is apps/web/tools/fetch_accuracy_sources.py, and the script that refuses the page if a number has no source is apps/web/tools/check_accuracy_sources.py.

    Our own measurement, when we run it, follows the method published on the accuracy page: the same normalisation, the same word-level alignment and the same formula, so our number could be put next to a number of the table on the same corpus. The WER calculator for that run does not exist in this branch yet, so the method page carries it for now.

    Back to the front page of Transcrib Si, or read how we measure accuracy.

    Try it

    Transcribe a recording and judge the result yourself.

    The free plan needs no card. Our Pro plan is $10 a month paid yearly, with a fair use of 1,500 minutes of audio a month.

    Drop an audio or video file

    or — mp3, wav, m4a, mp4, up to 64 MB and two hours

    A file you upload here goes to the transcription service under your own account. The table above never sees a file at all: it reads a small JSON file of published numbers that sits next to it. What happens to your audio is written down in the security page.