⌛ Как Правильно Измерять Качество STT?

Мы часто сталкиваемся с заблуждениями по поводу того как "правильно" проверять качество STT систем. В этой статье мы бы хотели описать как это правильно делается и какие метрики используются для оценки качества. Важно еще понимать как эти метрики интерпретировать.

Валидационные датасеты

Для начала формируется и размечается так называемая "валидационная" выборка из аудио-файлов, которые:

  • Модель не видела при тренировке;
  • Являются показательными для домена, в котором вы работаете (например, если вы хотите проверять звонки - значит надо найти звонки);
  • Качество аудио и кодеки тоже должны примерно соответствовать вашему домену;

Как правило, хватает где-то в районе 2-5 часов на один домен (больше, если у вас много уникальных и редких слов, но конечно можно взять фразы состоящие только из таких слов, что может быть сложнее на практике).

Дальше с аудио-файлами обычно проделывают такие действия (мы можем это все проделать за вас):

  • Для удобства аудио нарезаются на смысловые отрывки до 20 секунд длиной;
  • Каждый кусочек транскрибируется;
  • После нарезки проводится нормализация (числительные превращаются в буквы);
  • Удаляются слишком короткие, сломанные, плохие файлы;

У нас все эти процессы автоматизированы.

Применяемые метрики

Мы используем метрику Word Error Rate (можно совместно с Сharacter Error Rate). Для простоты понимания:

  • WER можно понимать как примерный % НЕВЕРНЫХ слов;
  • WER 50% - каждое второе слово неверно;
  • WER 20% - каждое пятое;
  • WER 10% - каждое десятое;
  • WER 5% - каждое двадцатое;

В реальности WER считается чуть сложнее (учитываются также замены и удаления слов), но суть от этого особо не меняется. Если вы знакомы с расстоянием Левенштейна - то WER это оно для слов, а CER - для букв.

Учитывайте также, что если STT модель проглотила предлог или поставила слово не в тот падеж, то в русском языке метрика WER получает штраф. Поэтому для русского WER выше, чем для английского при прочих равных.

А как эти метрики чувствуют себя на практике?

В английском языке WER людей при ручной транскрибации речи составляет ([1], [2]):

  • 4-5% на чистой речи;
  • 10-12% на шумной речи / речи с акцентом / речи с дефектами;

На русском языке наша оценка уровня WER людей на чистой речи - минимум 6-7% (из-за склонений и спряжений).

Что это означает для систем распознавания речи? Если не вдаваться в подробности настройки систем под конкретные домены, то логично ожидать, что при прочих равных системы будут выдавать такие метрики:

Домен Русский Английский
Ручное транскрибирование 5-7% 4-5%
Чистая речь 7 -10% 5-10%
Звонки 10-20% 10-15%
Шумные данные 20-40% 20-30%

Много это или мало зависит от вашей конкретной задачи, но если вам говорят, что система имеет WER меньше 5% для русского языка, это как минимум повод сильно задуматься.