Открытый замер распознавания русской речи. Семь движков, три домена, одна нормализация на всех, доверительные интервалы, построчные транскрипты в репозитории.
Главный результат: единого победителя нет. Движок, выигравший студийную начитку, оказывается предпоследним на аудиокнигах и спонтанной речи. Любой бенчмарк по одному корпусу — включая первую версию этого — вводит в заблуждение.
English summary: an open, per-domain WER benchmark of Russian ASR — self-hosted Whisper large-v3-turbo, Deepgram Nova-2/Nova-3, GigaAM v3, NVIDIA Parakeet TDT. Rankings invert across domains: the winner on clean read speech ranks second-to-last on audiobooks and spontaneous speech. Per-sample transcripts published so anyone can recompute.
WER, ниже — лучше. В скобках 95 % доверительный интервал (бутстрап по высказываниям, 20 000 реплик). Общего среднего по доменам нет намеренно — оно бы спрятало ровно то, ради чего этот замер делался.
| движок | как вызывали | студийная начиткаn=775 |
аудиокнигиn=296 |
спонтанная речьn=20 |
|---|---|---|---|---|
| GigaAM v3 | 🤝 private.rpa.icu → 🟢 gigaam-v3 |
4.50 % [4.02; 5.01] | 6.57 % 🥇 [5.75; 7.42] | 6.95 % 🥇 [4.58; 9.63] |
| Deepgram nova-3 | 🌍 api.deepgram.com |
6.55 % [5.84; 7.30] | 8.88 % [7.88; 9.92] | 7.12 % [4.77; 9.83] |
| WhisperX-пайплайн | 🟢 speechcore.neuraldeep.ru |
4.45 % [3.96; 4.97] | 9.85 % [8.74; 10.97] | 7.73 % [5.57; 10.17] |
| Whisper large-v3-turbo | 🟢 хаб, whisper-1 |
4.44 % [3.95; 4.95] | 9.89 % [8.80; 11.02] | 7.73 % [5.57; 10.17] |
| Deepgram nova-2 | 🌍 api.deepgram.com |
3.97 % 🥇 [3.54; 4.42] | 10.22 % [8.96; 11.58] | 9.27 % [6.70; 12.08] |
| Whisper-turbo, RU файн-тюн | 🟢 хаб, whisper-podlodka-turbo 🤝 |
8.80 % [8.15; 9.46] | 10.78 % [9.38; 12.31] | 10.21 % [7.84; 12.70] |
| NVIDIA Parakeet TDT 0.6b v3 | 🖥️ локально на RTX 4090 | 5.56 % [5.08; 6.07] | 10.84 % [9.75; 12.00] | 9.27 % [7.16; 11.72] |
🟢 доступно на нашем шлюзе api.neuraldeep.ru · 🤝 модель крутится у партнёра в РФ ·
🌍 внешний коммерческий API · 🖥️ подняли у себя ради замера, в проде не держим
GigaAM v3 — модель SberDevices под лицензией
MIT; мы её не переобучали. В замере она вызывалась напрямую у партнёрского
апстрима, а с 7 августа 2026 доступна на нашем шлюзе как gigaam-v3 — тот же
вес, добавлен только наш слой авторизации и учёта.
Домены: FLEURS-ru — чтение новостных фраз в студии · RuLibriSpeech — аудиокниги · Podlodka Speech — лекции и интервью подкаста, спонтанная речь.
студийная начитка : nova-2 3.97 › whisper 4.44 › speechcore 4.45 › gigaam 4.50 › parakeet 5.56 › nova-3 6.55
аудиокниги : gigaam 6.57 › nova-3 8.88 › speechcore 9.85 › whisper 9.89 › nova-2 10.22 › parakeet 10.84
спонтанная речь : gigaam 6.95 › nova-3 7.12 › speechcore 7.73 › whisper 7.73 › nova-2 9.27 › parakeet 9.27
Nova-2 с первого места падает на предпоследнее. На аудиокнигах это не
случайность выборки: интервалы gigaam [5.75; 7.42] и nova-2 [8.96; 11.58]
не пересекаются, разрыв в полтора раза при n=296.
GigaAM выигрывает два домена из трёх, хотя на студийной начитке была лишь четвёртой. Модель обучалась под русский целенаправленно, и преимущество проявляется там, где речь перестаёт быть дикторской.
Реальный материал стоит вдвое дороже лабораторного. На студийной начитке движки дают 4–6 %, на аудиокнигах и спонтанной речи — 6.5–10 %. Цифры однодоменных бенчмарков систематически оптимистичны.
NVIDIA parakeet-tdt-0.6b-v3 — многоязычная модель на 25 европейских языков, русский среди них. Подняли у себя на одной RTX 4090 и прогнали тем же харнессом: 1 091 высказывание, ни одного отказа.
Она проигрывает во всех трёх доменах. На аудиокнигах — последнее место из
семи: 10.84 % против 6.57 % у GigaAM, разрыв в 1.65 раза, и интервалы
gigaam [5.76; 7.49] и parakeet [9.75; 12.00] не пересекаются при n=296.
Зато она очень быстрая. Медиана 0.088 с на 11 секунд аудио — ×126 реального времени на одной 4090, без батчинга, при 627 M параметров и 2.3 ГБ VRAM. Это единственный сценарий, где её стоит вспомнить: массовая пакетная расшифровка архива, где важна пропускная способность, а не последний процент WER.
tdt-0.6b-v3 и старше.
Отдельно посчитали WER на подмножестве высказываний, где в эталоне есть
латиница — термины вроде observability, performance review.
| движок | FLEURS, латиница n=38 |
Podlodka, латиница n=5 |
|---|---|---|
| Whisper large-v3-turbo / WhisperX | 7.89 % | 10.84 % |
| Deepgram nova-2 | 8.24 % | 11.33 % |
| GigaAM v3 | 10.27 % | 11.33 % |
| Parakeet TDT | 10.63 % | 12.07 % |
| Deepgram nova-3 | 11.47 % | 10.59 % |
На чистом русском GigaAM выигрывает с отрывом, а на репликах с английскими словами уступает Whisper — 10.27 % против 7.89 %. Объяснение напрашивается: она обучена под русский целенаправленно, Whisper многоязычен по устройству.
🔴 Это наблюдение, а не результат. Выборки крошечные (38 и 5 высказываний), доверительные интервалы мы не считали — на таких n они перекроют всё. Латиница сюда попала случайно, внутри русских корпусов. Отдельного бенчмарка на смешанную речь не существует ни для русского, ни для английского, хотя именно так звучит любая ИТ-планёрка. Это дыра, которую стоит закрыть отдельным набором.
Отдельный вопрос: что происходит на непрерывной записи, а не на фразе в 11 секунд. Файлы собраны склейкой высказываний FLEURS — так меняется ровно одна вещь, длина, при тех же словах и эталоне.
| движок | 11 с | 5 мин | 15 мин | 30 мин |
|---|---|---|---|---|
| Deepgram nova-2 | 3.97 % | 4.23 % | 3.85 % | 3.57 % |
| WhisperX-пайплайн | 4.45 % | 4.68 % | 5.77 % | 4.99 % |
| GigaAM v3 | 4.50 % | 4.90 % | 4.74 % | ошибка 499 |
| Deepgram nova-3 | 6.55 % | 6.90 % | 7.01 % | 6.97 % |
whisper-1 через шлюз |
4.44 % | 4.68 % | 13.74 % | 12.98 % |
Пайплайн с VAD оправдан именно здесь. На коротких клипах он не давал ничего (разница +0.01 п.п.), на длинных — держит 5–6 % там, где голая модель уходит в 13 %.
🔴 Оговорка про строку whisper-1. Её деградация — не свойство модели, а
маршрутизация: на длинных файлах запрос через шлюз уходит в фолбэк на партнёрский
лейн. Доказательство — отпечаток дефекта разрыва слов (см. ниже): в 15-минутном
ответе whisper-1 их 30, у партнёрской модели 32, у WhisperX-пайплайна и
Deepgram — 0. На коротких файлах у whisper-1 был один разрыв на 775
высказываний. То есть на длинном аудио через шлюз возвращается не та модель,
которую запросили.
GigaAM на 30 минутах вернула HTTP 499 — предел есть, точная граница не найдена.
RU-файн-тюн Whisper-turbo вставляет пробел внутрь слова при декодировании:
телевизион ные · обнаруж ены · передав аться · выб орочно · прив ести
Речь распознана верно, слово разорвано — для WER это двойной штраф, замена плюс вставка. На FLEURS дефект встретился 286 раз в 247 из 775 высказываний (32 %), у остальных движков — 2–9 случаев на весь сплит.
Сколько WER приходится на этот дефект (oracle-оценка)
Если склеивать разорванные слова, сверяясь с эталоном, получаем верхнюю границу «что было бы при идеальной починке». Это число с утечкой правильного ответа, в проде так нельзя — оно отвечает только на вопрос, какая доля ошибок приходится на разрывы.
| движок | WER | после oracle-починки | разрывов | высказываний задето |
|---|---|---|---|---|
| RU файн-тюн turbo | 8.80 % | 5.01 % | 286 | 247/775 |
| nova-2 | 3.97 % | 3.86 % | 9 | 9/775 |
| Whisper turbo | 4.44 % | 4.32 % | 9 | 9/775 |
| WhisperX-пайплайн | 4.45 % | 4.33 % | 9 | 9/775 |
| GigaAM v3 | 4.50 % | 4.42 % | 6 | 6/775 |
| nova-3 | 6.55 % | 6.52 % | 2 | 2/775 |
python harness/split_bug.py "results/fleurs/*.jsonl"
Nova-3 пишет числительные словами, эталон FLEURS — цифрами:
эталон : в 1990 году он был добавлен в список всемирного наследия
nova-3 : в тысяча девятьсот девяностом году он был добавлен … [WER 15%]
Нормализация числительных опускает её WER на 1.60 п.п. (6.55 → 4.95), а разрыв с nova-2 сокращается с 2.58 до 1.13. Признак виден сразу: у nova-3 CER вдвое ниже WER, у остальных — втрое-вчетверо. Это известная ловушка мультиязычных замеров, ей посвящена работа «What is lost in Normalization?».
pip install -r requirements.txt
# 1. собрать построчные транскрипты: движок × домен
K=<ключ> python harness/run_bench.py --engine whisper-1 --domain fleurs --limit 775
DG=<ключ> python harness/run_bench.py --engine nova-2 --domain rulibrispeech --limit 300
RPA=<ключ> python harness/run_bench.py --engine gigaam-v3 --domain podlodka --limit 20
# 2. добрать строки, где API вернул ошибку (иначе выборки движков разойдутся)
python harness/retry_failed.py "results/fleurs/*.jsonl"
# 3. метрики и интервалы внутри домена
python harness/analyze.py "results/fleurs/*.jsonl" --runs 50000
# 4. сводка по доменам
python harness/summarize.py --domains fleurs rulibrispeech podlodka
# 5. длинные записи
python harness/make_long.py --minutes 1 5 15 30
python harness/long_bench.py --engines whisper-1 nova-2 speechcore
# 6. диагностика разрывов слов
python harness/split_bug.py "results/fleurs/*.jsonl"Сырые транскрипты — results/, по папке на домен. Метрики считаются
из них, так что любой может пересчитать своей нормализацией, не обращаясь к API.
- Аудио: те же исходные байты каждому движку, без пересжатия и ресемплинга. Транспорт различается (multipart против raw body) — одинаковы именно байты.
- Нормализация (одинаково к эталону и гипотезе): нижний регистр,
ё→е, снятие пунктуации, схлопывание пробелов. Смысл — штрафовать за неверно распознанное слово, а не за оформление; тот же принцип, что у нормализатора Whisper и Open ASR Leaderboard. - Колонка с числительными (в
analyze.py): числа прописью переводятся в цифры. Она дополняет базовую метрику: для русского разбор неполный — количественные берутся, порядковые нет. - Метрики:
jiwer, корпусные WER и CER (сумма ошибок к сумме длин, а не среднее по высказываниям). - Интервалы: бутстрап по высказываниям
(Bisani & Ney, ICASSP 2004),
seed=0, перцентили с линейной интерполяцией — результат детерминирован. Для пар движков — разница на общих высказываниях (paired). - Ошибки вызова не выбрасываются, а перепрогоняются (
retry_failed.py): иначе у движков остаются разные подмножества и сравнение перестаёт быть парным. - Дата прогонов: 6–7 августа 2026. Окружение и параметры вызовов —
results/environment.json; эндпоинт, домен и время старта каждого прогона — в строке_metaсоответствующего JSONL.
- нет телефонии. Главный пробел: у OpenSTT есть 203 часа телефонных звонков с ручной разметкой, но он раздаётся торрентами и в этот заход не попал. Телефонный домен самый тяжёлый — в литературе там WER доходит до 35 %;
- нет дальнего поля и шума — нужен Golos farfield;
- спонтанная речь на 20 высказываниях. Это весь тестовый сплит Podlodka. Интервалы там широкие и перекрываются: порядок движков — наблюдение, а не доказанный факт. Аудиокниги (n=296) и начитка (n=775) надёжнее;
- длинные записи собраны склейкой, а не записаны непрерывно: нет смены темы, перебивок и естественных пауз;
- задержка не мерялась в контролируемых условиях — движки гонялись параллельно на боевых лейнах, поэтому таблицы скорости здесь нет; сырые значения есть в JSONL.
Контекст, не сравнение с таблицами выше: наборы и методики разные.
| источник | WER |
|---|---|
| Whisper v3 на Common Voice 17.0 ru | 9.84 % |
| его RU файн-тюн там же | 6.39 % |
| Deepgram Nova-3, общий batch (англоцентричный) | 5.26 % |
| OpenSTT: телефон / YouTube / книги | 34.8 / 19.1 / 18.1 % |
| ESB, Whisper, среднее по 9 наборам (английский) | 10.6 % |
MIT — см. LICENSE.