WER считает неверное имя, неверное число и потерянное «не» такими же ошибками, как и пропущенное «the». Оценивайте систему по тому, какие ошибки она ловит и видны ли её исправления, а не по главной цифре.
Частота ошибок в словах (word error rate, WER) — стандартная мерка для распознавания речи. Возьмите эталонную расшифровку, которую проверил человек, и сопоставьте с ней результат машины слово за словом. Посчитайте три вида ошибок: замены (неверное слово), вставки (слово, которого не было в речи) и пропуски (пропущенное слово). Сложите их и разделите на число слов в эталоне.
WER = (замены + вставки + пропуски) / число слов в эталоне
Выравнивание делается не на глаз. Две расшифровки сопоставляются по минимальному расстоянию редактирования (расстояние Левенштейна, применённое к словам, а не к буквам): из всех способов сопоставить результат с эталоном скорер выбирает тот, где правок меньше всего, и считает их. Поскольку вставки учитываются, а знаменатель — это длина эталона, WER может превысить 100 процентов: модель, которая заполняет тихую минуту текстом, получает худший результат, чем та, что ничего не пишет.
Допустим, эталон: «we will meet Dr Okafor at nine on Thursday», девять слов, а машина пишет «we will meet the doctor at nine on Tuesday». Это три замены (Dr, Okafor, Thursday) на девять слов, то есть WER 33 процента. Две трети слов верны, но вы всё равно на не той встрече и не в тот день. Если бы ошибочным было только «Thursday», результат составил бы 11 процентов. Версия, где все слова верны, но добавлено «um», которого никто не произносил, тоже получит 11 процентов, потому что вставка считается так же, как замена.
Перед подсчётом оба текста обычно нормализуют, и выбор на этом этапе сдвигает результат не меньше, чем сама модель. «Dr» — это то же слово, что «Doctor»? «nine» — то же, что «9»? Учитываются ли регистр и знаки препинания? Строгий подсчёт засчитал бы «Dr» против «Doctor» как замену. Большинство опубликованных цифр приводят всё к нижнему регистру, убирают знаки препинания и записывают все числа одним способом, словами или цифрами, перед сравнением. Поэтому цифра поставщика незаметно зависит от нормализатора, который вы не видите. Языки, где слова не разделяются пробелами, например китайский, японский и тайский, не имеют чёткой границы слова, поэтому их оценивают по частоте ошибок в символах (character error rate, CER): та же формула, но применённая к символам.
Из этого следуют два вывода. Во-первых, WER 5 процентов — это одно слово из двадцати, то есть несколько сотен слов в часовом выступлении. Для масштаба: человеческих расшифровщиков часто называют в районе 4–5 процентов на разговорной речи, а широко цитируемый результат 2017 года на телефонном корпусе Switchboard дал машине около 5,1 процента, хотя обе цифры зависят от записи и правил подсчёта. Во-вторых, итог целиком зависит от тестового аудио: чистое чтение вслух даёт одну цифру, а шумная панель с акцентами и перебиваниями — совсем другую. Заявленный WER описывает тестовый набор поставщика не меньше, чем его систему.
Это и есть подсчёт. Чего он не учитывает, так это цену каждой ошибки для читателя.
WER считает каждое слово равным. Читатели — нет:
Каждая из этих ошибок — это одна-две ошибки в столбце WER. В столбце читателя они варьируются от нуля до другой встречи в другой день. Поэтому вопрос не только в том, «какова частота ошибок», но и в том, «какие это ошибки и что их ловит».
Несколько слоёв ловят то, что распознавание делает неверно, и каждое изменение записывается, чтобы его можно было проверить и отменить. В живой транскрибации это происходит, пока текст ещё поступает: каждая строка сначала появляется как черновик, который может измениться, и только потом становится окончательной (Задержка живого перевода: объяснение рассказывает, почему).
Некоторые ошибки подходят под звучание, но не под предложение: «their» там, где нужно «there». Такие ошибки можно поймать по контексту, и исправление доходит до читателей как заметное обновление (transcript.amended в API), а не как тихая перезапись. Контекст хорошо работает со словами, которые предложение способно предсказать. С теми, которые предсказать нельзя, он бессилен.
Имена и технические термины — это ошибки, которые контекст исправить не может: имя часто встречается лишь один раз, и вокруг нет ничего, по чему его можно угадать. Референсный сценарий решает эту задачу: передайте системе речь, слайды или список имён и терминов до начала, и её слова получат приоритет над тем, что движок расслышал неверно. Во время записи сценарий следует за расшифровкой как телесуфлёр, так что ведущий видит, насколько далеко продвинулся движок. Сценарий покрывает слова, которые можно предсказать; шумное аудио и акценты порождают те, которые предсказать нельзя.
Некоторые ошибки видит только человек в зале. Ручные исправления позволяют ведущему переписать любое слово или строку, пока транскрибация ещё идёт, и каждый слушатель трансляции видит изменение. Система указывает ведущему на вероятные кандидаты: слова, в которых движок был не уверен, можно подсветить и подчеркнуть, и ведущий может пройти по неясным фрагментам один за другим, а не перечитывать всю расшифровку. Через API GET /v1/recordings/{id}/corrections можно получить исправления записи, а POST /v1/corrections/{id}/revert отменяет одно из них; см. справочник API. Но даже человек в зале не может исправить строку, которую никто не расслышал.
Последний слой признаёт, что часть аудио восстановить нельзя. Когда строка набирает меньше порога уверенности транскрибации (confidence.hideBelow, по умолчанию 0,60), слушатели видят вместо неё «Аудио неразборчиво», и строку никогда не озвучивают. Читатели теряют строку, но не получают выдуманную.
Те же вопросы, которые сформировали эти слои, применимы к любому заявлению о точности поставщика, включая наше.
Короткий чек-лист для чтения любого заявления о точности:
VocalStack не публикует внутреннюю цифру WER по первой причине выше: она описывала бы наш тестовый набор, а не ваше аудио. Мы измеряем точность непрерывно. Когда сравниваем другие системы, используем опубликованные независимые тесты и цифры поставщиков, но никогда закрытые внутренние испытания. Остальное пусть решит ваше собственное аудио.