WER — метрика ошибок распознавания речи. По ссылке доступны определения WER, micro-WER, медианы WER и среднего WER.
Два термина: ROVER и OOF
ROVER объединяет расшифровки, OOF проверяет результат
Что такое ROVER
ROVER — это способ собрать одну итоговую расшифровку из нескольких. Название расшифровывается как Recognizer Output Voting Error Reduction — «голосование по ответам распознавателей для снижения числа ошибок». Алгоритм выравнивает готовые тексты по словам и в каждой позиции выбирает вариант, который получил больше голосов. Метод описан в работе NIST.
Простой пример: три системы написали «доброе утро», одна — «доброго утра». ROVER выберет вариант большинства. Само аудио он не распознаёт и новую модель не обучает.
Что такое OOF
OOF — сокращение от out-of-fold, то есть «проверка на отложенной части данных». Для каждого фолда настройку выбирают по четырём частям, а качество измеряют на пятой; затем результаты пяти отложенных частей объединяют.
Здесь 489 записей разделены на пять частей. Для каждой части порядок разрешения ничьих выбирался по остальным четырём. Затем результаты на пяти отложенных частях объединили в один итог.
ROVER объединяет несколько расшифровок, а OOF-проверка показывает, сохраняется ли результат на отложенных записях.
Результат 5-кратной OOF-проверки
ROVER снизил micro-WER с 8,520% до 7,793%
Четыре потоковых движка получили одинаковый вес 1:1:1:1. Каждая из 489 записей оценивалась вне той части данных, на которой выбирался порядок разрешения ничьих. Эталон не участвовал ни в выравнивании, ни в голосовании.
8,53% — относительное сокращение числа ошибок, а не 8,53 процентного пункта. Абсолютная разница — 0,727 п. п.
Сравниваете ASR для встреч или звонков? Отправьте коллеге результат вместе с ограничениями и файлами проверки.
В первом исследовании мы сравнили отдельные движки распознавания русской речи. Затем проверили, снизит ли объединение сохранённых расшифровок число ошибок без повторной отправки аудио.
Эксперимент проводился только на уже сохранённых текстах. Новых запросов к провайдерам и повторного распознавания аудио не было.
На этом корпусе четыре движка с равными весами снизили число ошибок относительно лучшего одиночного движка на отложенных частях данных. Неравные веса дали ещё восемь исправлений, но их преимущество не подтвердилось статистически.
Как четыре версии превращаются в одну
Приводим четыре гипотезы к единым правилам сравнения.
Строим словесную сетку через расстояние Левенштейна.
В каждой позиции считаем голоса, включая голос за пропуск.
Если голосов поровну, используем заранее заданный приоритет.
Основа — последовательно строящаяся словесная сеть альтернатив (confusion network). Следующая гипотеза выравнивается с уже собранной сеткой, после чего в каждой позиции выбирается слово с максимальным весом. Пустой вариант — полноценный кандидат: если большинство движков пропустило слово, ансамбль тоже может его удалить.
Вес определяет силу голоса. Приоритет движков включается только при ничьей — например, когда два движка выбрали один вариант, а два другой. Эталонная расшифровка появляется только после готового ответа, чтобы посчитать WER; подсматривать в неё во время выравнивания или голосования нельзя.
Что именно объединяем. Для потокового сценария ROVER применяется только к нескольким версиям одной и той же завершённой реплики. Частичные результаты на экране остаются ответом одного быстрого движка: ждать остальные ради каждого промежуточного слова бессмысленно.
Потоковый ансамбль: 1:1:1:1
В выбранную для следующего эксперимента конфигурацию вошли четыре потоковых распознавателя, для которых нашлось 489 общих записей. Каждый получил один голос:
Приоритет разрешения ничьих — GPT → Sber → Deepgram → Yandex. Он выбирался только на тренировочной части каждого фолда. Любопытно, что во всех пяти фолдах порядок оказался одинаковым. Поэтому полный описательный пересчёт совпал с OOF-ответами, но это свойство именно этого запуска, а не гарантия метода.
Как устроена OOF-проверка
Мы сделали детерминированную 5-кратную OOF-проверку: разбили записи на пять частей и для каждой части выбирали приоритет только по остальным четырём. Запись попадала в итоговый результат один раз — когда была тестовой. Фолд вычислялся из идентификатора записи и seed=42 через SHA-256, поэтому разбиение можно повторить.
| Конфигурация | micro-WER | Ошибок | Замены | Вставки | Пропуски |
|---|---|---|---|---|---|
| OpenAI gpt-realtime-whisper | 8,520% | 1781 | 804 | 113 | 864 |
| ROVER 1:1:1:1 · OOF | 7,793% | 1629 | 645 | 75 | 909 |
| Изменение ROVER − GPT | −0,727 п. п. | −152 | −159 | −38 | +45 |
По отдельным записям ROVER выиграл у GPT 154 раза, проиграл 80 и дал ничью 255 раз. Медиана WER снизилась с 6,452% до 5,405%, среднее по записям — с 9,093% до 7,728%.
ROVER сократил число замен на 159 и вставок на 38, но добавил 45 пропусков. Поэтому одного WER недостаточно: в продукте нужно отдельно определить цену каждого типа ошибки.
Почему мы отказались от «умных» весов
Мы проверили схему, в которой сильнейший одиночный движок получает больше голосов: GPT 4, Sber 3, Deepgram 2, Yandex 1. На полном наборе она получила micro-WER 7,754% — формально лучше равных весов с 7,793%.
Разница — 0,038 процентного пункта и восемь правок на 20 904 слова. По записям линейные веса лучше в 45 случаях, равные — в 42, ещё 402 результата совпадают. Парный бутстрэп из 30 000 повторных выборок по записям дал 95%-й интервал для разницы «линейные минус равные» от −0,158 до +0,077 п. п. Ноль внутри интервала: данных недостаточно, чтобы считать улучшение доказанным.
Для следующего продуктового эксперимента выбраны равные веса 1:1:1:1. Преимущество 4:3:2:1 не доказано, а равные голоса проще объяснить и воспроизвести. Переносимость обеих схем на другой корпус ещё не измерялась.
Насколько пересекаются ошибки выбранных движков
ROVER помогает, когда распознаватели ошибаются в разных местах. Если добавить три почти одинаковые версии одной модели, их общий промах превращается в уверенное большинство.
Мы сравнили пересечения ошибочных позиций по коэффициенту Жаккара. У выбранных потоковых движков значения лежат примерно в диапазоне 0,404–0,493. У родственных режимов пересечение заметно выше: пакетный и потоковый Sber — 0,845, faster-whisper и OpenAI Whisper — 0,650, пакетный и потоковый Yandex — 0,657.
Одиночного WER недостаточно для выбора состава: пользу каждого нового движка нужно проверять по итоговой метрике ансамбля.
Что делать, если один из движков недоступен
Мы отдельно пересчитали тот же 5-кратный OOF-протокол, каждый раз убирая один потоковый движок. Это оценка качества по сохранённым полным гипотезам, а не симуляция сетевой аварии. Она показывает изменение WER при потере каждого голоса.
| Доступная конфигурация | micro-WER | Ошибок | Изменение к 4 движкам |
|---|---|---|---|
| Все четыре | 7,793% | 1629 | — |
| Без Yandex | 7,970% | 1666 | +0,177 п. п. |
| Без Sber | 8,214% | 1717 | +0,421 п. п. |
| Без Deepgram | 8,429% | 1762 | +0,636 п. п. |
| Без GPT | 9,472% | 1980 | +1,679 п. п. |
Для продуктового эксперимента можно проверить такую схему:
- Три или четыре совпадающие по идентификатору завершённые реплики — запускаем ROVER с равными весами; отсутствующий движок пропускаем и сохраняем тот же порядок ничьих.
- Два ответа или меньше, разные идентификаторы сегментов либо истёк таймаут — сразу берём лучший доступный одиночный ответ.
- Частичные реплики показываем от одного основного потокового движка; ансамбль включаем после финализации.
Промежуточный текст показывает один движок; ожидание остальных возникает только после финализации реплики и ещё не измерено. В продуктовом эксперименте предстоит проверить задержку, стоимость, синхронизацию сегментов и коррелированные сбои провайдеров.
Пакетная конфигурация снизила WER внутри той же выборки
Для пакетной обработки лучшая найденная конфигурация собрала GigaAM, faster-whisper, пакетный Deepgram и пакетный Sber с весами 4:3:2:1. На пересечении из 488 записей она получила micro-WER 6,789% против 7,464% у GigaAM — лучшего одиночного движка на тех же записях.
| Конфигурация | Записей | Слов | micro-WER | Ошибок |
|---|---|---|---|---|
| GigaAM | 488 | 20 901 | 7,464% | 1560 |
| Пакетный ROVER 4:3:2:1 | 488 | 20 901 | 6,789% | 1419 |
Пакетная цифра получена на той же выборке, по которой выбрали состав и веса. Это описательный результат внутри выборки (in-sample), без OOF-проверки. Он описывает найденного кандидата, но не оценивает качество на новых данных.
Внутри этого набора ансамбль оказался лучше GigaAM на 122 записях, хуже на 66 и совпал на 300. Он сократил суммарное число ошибок на 141, в том числе замен — на 130 и вставок — на 93, но добавил 82 пропуска. Чтобы проверить переносимость результата, конфигурацию нужно заморозить и применить без донастройки на внешнем корпусе.
Потоковый и пакетный результаты рассчитаны на разных пересечениях данных: OOF-проверка использует 489 записей и 20 904 слова, пакетный описательный результат — 488 записей и 20 901 слово.
Что именно считается ошибкой
На качество ансамбля влияют голосование и правила сравнения. В этой версии эталон очищается от редакторских пометок в квадратных скобках: служебный фрагмент вместе со скобками не входит в WER. В гипотезе движка такой текст не удаляется автоматически и по-прежнему может считаться лишним.
На корпусе было 123 вхождения квадратных скобок в 67 записях, всего 33 варианта пометок. Очистка сократила эталон с 21 123 до 20 901 слова: удалено 220 служебных токенов, ещё два слова исчезли из-за склейки после нормализации.
Отдельно разрешили только две пары написаний названий разными алфавитами: telegram ↔ телеграм и discord ↔ дискорд. Это не общая транслитерация и не нечёткое совпадение любых брендов. Такая замена повлияла лишь на три пары «движок × запись» в одном клипе и убрала четыре ошибки; основное изменение метрик дало удаление служебных пометок.
Числа приводятся к записи русскими словами. Если оставить цифры как есть или применить другие правила нормализации, итоговый WER может измениться.
Что это исследование не доказывает
- Это один корпус. Mozilla Common Voice Spontaneous Speech 3.0 ru: 491 запись, 177 минут, 15 говорящих. Спонтанные ответы — не телефонные звонки, переговорная, многоголосая встреча или шумный торговый зал.
- Разбиение сделано по записям, не по говорящим. В OOF обучался только порядок ничьих, но перенос на полностью новых говорящих отдельно не измерялся.
- Мы оценивали точность текста. Задержка, стоимость, синхронизация сегментов, доступность API, диаризация и влияние сетевых сбоев в WER не входят.
- Несколько облаков расширяют контур данных. Стоимость и требования к приватности растут вместе с числом провайдеров; локальный ансамбль может быть устроен иначе.
- Пакетный результат пока описательный. Его нельзя называть подтверждённым улучшением до проверки замороженной конфигурации на другом корпусе.
Карточка корпуса указывает CC0 1.0. Перед открытием интерактивной выборки пользователь подтверждает предупреждение о содержании и обязуется не устанавливать личности говорящих.
Данные, отчёт и воспроизводимость
Публикуем не только итоговые проценты, но и входные гипотезы, OOF-ответы, отчёт и контрольные суммы. ROVER работает поверх сохранённых текстов, поэтому результат можно перепроверить без ключей провайдеров и повторной оплаты распознавания.
Предупреждение о содержании. Исходные спонтанные ответы могут содержать обсценную лексику и чувствительные темы. Не используйте аудио и тексты для установления личности говорящих.
Следующие проверки
- Замораживаем для следующего эксперимента потоковую схему 1:1:1:1 и приоритет GPT → Sber → Deepgram → Yandex; не подгоняем её под следующий набор.
- Проверяем на внешних данных — реальных встречах и звонках с согласия участников, со срезами по шуму, микрофону и длине реплики.
- Для пакетного кандидата проводим независимый тест конфигурации GigaAM 4, faster-whisper 3, пакетный Deepgram 2, пакетный Sber 1.
- Добавляем продуктовые метрики: время до финального текста, стоимость минуты, доступность, долю несинхронных сегментов и цену разных типов ошибок.
- Тестируем деградацию вживую: таймауты, пропуски ответов и коррелированные сбои, а не только удаление готовой гипотезы из таблицы.
На этом корпусе ROVER дал на 152 ошибки меньше OpenAI gpt-realtime-whisper. Схема 4:3:2:1 исправила ещё восемь ошибок, но её преимущество статистически не подтвердилось. До внедрения обе конфигурации нужно проверить на внешнем корпусе.
Предыдущая часть: «В нашем тесте лучший движок распознавания русской речи оказался открытым и локальным».