С тех пор, как на сцену распознавания речи вышло глубинное обучение, количество ошибок в распознавании слов кардинально уменьшилось. Но, несмотря на все те статьи, которые вы могли читать, у нас до сих пор нет распознавания речи человеческого уровня. У распознавателей речи множество причин для отказов. Для прогресса необходимо принять их наличие и предпринять шаги по решению этих проблем. Это единственный способ перейти от распознавания, подходящего для некоторых людей большую часть времени, к распознаванию, работающему для всех людей всё время.
Улучшения в количестве ошибочно распознанных слов. Тестовый голосовой набор был собран на телефонном коммутаторе в 2000 году из 40 случайных разговоров двух человек, чей родной язык – английский
Говорить о том, что мы достигли уровня человека в распознавании речи в разговорах, основываясь лишь на наборе разговоров с телефонного коммутатора, это всё равно, что утверждать, что робомобиль водит не хуже человека, протестировав его в единственном городе в солнечный день без всякого уличного движения. Произошедшие в деле распознавания речи в последнее время сдвиги удивительны. Но заявления по поводу распознавания речи на уровне человека слишком смелы. Вот несколько областей, в которых всё ещё необходимо добиваться улучшений.
Акценты и шум
Один из очевидных недостатков распознавания речи – обработка акцентов и фонового шума. Основная причина этого в том, что большая часть тренировочных данных состоит из американского говора с высоким отношением сигнала к шуму. К примеру, в наборе разговоров с телефонного коммутатора есть только беседы людей, чей родной язык – английский (по большей части, это американцы) с небольшим фоновым шумом.
Но увеличение тренировочных данных само по себе, скорее всего, не решит эту проблему. Существует множество языков, содержащих много диалектов и акцентов. Нереально собрать размеченные данные для всех случаев. Создание высококачественного распознавателя речи только для американского английского требует до 5 часов аудиозаписей, переведённых в текст.
Сравнение людей, занимающихся преобразованием речи в текст, с Baidu’s Deep Speech 2 на разных типах речи. Люди хуже справляются с распознаванием неамериканских акцентов – возможно, из-за обилия американцев среди них. Думаю, что люди, выросшие в определённом регионе, с гораздо меньшим количеством ошибок справились бы с распознаванием акцента этого региона.
При наличии фонового шума в движущейся машине отношение сигнал/шум может достигать величин в -5dB. Люди легко справляются с распознаванием речи другого человека в таких условиях. Автоматические распознаватели гораздо быстрее ухудшают показатели с увеличением шума. На графике видно, как сильно увеличивается отрыв людей при увеличении шума (при низких значениях SNR, signal-to-noise ratio)
Семантические ошибки
Часто количество ошибочно распознанных слов не является самоцелью системы распознавания речи. Мы нацеливаемся на количество семантических ошибок. Это та доля выражений, у которых мы неправильно распознаём смысл.
Пример семантической ошибки – когда кто-то предлагает «let’s meet up Tuesday» [давайте встретимся во вторник] а распознаватель выдаёт «let’s meet up today» [давайте встретимся сегодня]. Бывают и ошибки в словах без семантических ошибок. Если распознаватель не распознал «up» и выдал “let’s meet Tuesday”, семантика предложения не изменилась.
Нам нужно аккуратно использовать количество ошибочно распознанных слов в качестве критерия. Для иллюстрации этого я дам вам пример с наихудшим из возможных случаев. 5% ошибок в словах соответствует одному пропущенному слову из 20. Если в каждом предложении 20 слов (что для английского языка вполне в рамках среднего), то количество неправильно распознанных предложений приближается к 100%. Можно надеяться на то, что неправильно распознанные слова не меняют семантический смысл предложений. А иначе распознаватель может неправильно расшифровать каждое предложение даже с 5% количеством ошибочно распознанных слов.
Сравнивая модели с людьми важно проверять суть ошибок и следить не только за количеством неправильно распознанных слов. По моему опыту, люди, транслирующие речь в текст, делают меньше ошибок и они не такие серьёзные, как у компьютеров.
Исследователи из Microsoft недавно сравнили ошибки людей и компьютерных распознавателей схожего уровня. Одно из найденных различий – модель путает “uh” [э-э-э…] с “uh huh” [ага] гораздо чаще людей. У двух этих терминов очень разная семантика: “uh” заполняет паузы, а “uh huh” обозначает подтверждение со стороны слушателя. Также у моделей и людей обнаружили много ошибок совпадающих типов.
Много голосов в одном канале
Распознавать записанные телефонные разговоры проще ещё и потому, что каждого говорящего записывали на отдельный микрофон. Там не происходит наложения нескольких голосов в одном аудиоканале. Люди же могут понимать нескольких ораторов, иногда говорящих одновременно.
Хороший распознаватель речи должен уметь разделять аудиопоток на сегменты в зависимости от говорящего (подвергать его диаризации). Также он должен извлечь смысл из аудиозаписи с двумя накладывающимися друг на друга голосами (разделение источников). Это необходимо делать без микрофона, расположенного прямо у рта каждого из спикеров, то есть так, чтобы распознаватель работал хорошо, будучи размещённым в произвольном месте.
Качество записи
Акценты и фоновый шум – всего два фактора, к которым распознаватель речи должен быть устойчив. Вот ещё несколько:
• Реверберация в разных акустических условиях.
• Артефакты, связанные с оборудованием.
• Артефакты кодека, используемого для записи и сжатия сигнала.
• Частота дискретизации.
• Возраст говорящего.
Большинство людей не отличат на слух записей из mp3 и wav-файлов. Прежде чем заявлять о показателях, сравнимых с человеческими, распознаватели должны стать устойчивыми и к перечисленным источникам вариаций.
Контекст
Можно заметить, что количество ошибок, которые люди делают на тестах в записях с телефонной станции, довольно высоко. Если бы вы беседовали с другом, который не понимал бы 1 слово из 20, вам бы было очень сложно общаться.
Одна из причин этого – распознавание без учёта контекста. В реальной жизни мы используем множество разных дополнительных признаков, помогающих нам понимать, что говорит другой человек. Некоторые примеры контекста, используемые людьми, и игнорируемые распознавателями речи:
• История беседы и обсуждаемая тема.
• Визуальные подсказки о говорящем – выражения лица, движение губ.
• Совокупность знаний о человеке, с которым мы говорим.
Сейчас у распознавателя речи в Android есть список ваших контактов, поэтому он умеет распознавать имена ваших друзей. Голосовой поиск на картах использует геолокацию, чтобы сузить количество возможных вариантов, до которых вы хотите построить маршрут.
Точность систем распознавания увеличивается с включением в данные подобных сигналов. Но мы только начинаем углубляться в тип контекста, который мы могли бы включить в обработку и в методы его использования.
Развёртывание
Последние достижения в распознавании разговорной речи невозможно развернуть. Представляя себе развёртывание алгоритма распознавания речи, нужно помнить о задержках и вычислительных мощностях. Эти параметры связаны, поскольку алгоритмы, увеличивающие требования к мощности, увеличивают и задержку. Но для простоты обсудим их по отдельности.
Задержка: время от окончания речи пользователя и до окончания получения транскрипции. Небольшая задержка – типичное требование для распознавания. Она сильно влияет на ощущения пользователя от работы с продуктом. Часто встречается ограничение в десятки миллисекунд. Это может показаться слишком строгим, но вспомните, что выдача расшифровки — это обычно первый шаг в серии сложных вычислений. К примеру, в случае голосового интернет-поиска после распознавания речи нужно ещё успеть выполнить поиск.
Двунаправленные рекуррентные слои – типичный пример улучшения, ухудшающего ситуацию с задержкой. Все последние результаты расшифровки высокого качества получаются с их помощью. Проблема только в том, что мы не можем ничего подсчитывать после прохода первого двунаправленного слоя до тех пор, пока человек не закончил говорить. Поэтому задержка увеличивается с длиной предложения.
Слева: прямая рекуррентность позволяет начинать расшифровку сразу. Справа: двунаправленная рекуррентность требует подождать окончания речи перед тем, как начинать расшифровку.
Хороший способ эффективно включать будущую информацию в распознавание речи пока ещё ищут.
Вычислительная мощность: на этот параметр влияют экономические ограничения. Необходимо учитывать стоимость банкета для каждого улучшения точности распознавателя. Если улучшение не достигает экономического порога, развернуть его не получится.
Классический пример постоянного улучшения, которое никогда не развёртывают – совместное глубинное обучение [ensemble]. Уменьшение количества ошибок на 1-2% редко оправдывает увеличение вычислительных мощностей в 2-8 раз. Современные модели рекуррентных сетей тоже попадают в эту категорию, поскольку их очень невыгодно использовать в поиску по пучку траекторий, хотя, думаю, в будущем ситуация поменяется.
Хочу уточнить – я не говорю, что улучшение точности распознавания с серьёзным увеличением вычислительных затрат бесполезно. Мы уже видели, как в прошлом работает принцип «сначала медленно, но точно, а затем быстро». Смысл в том, что до тех пор, пока улучшение не станет достаточно быстрым, использовать его нельзя.
В следующие пять лет
В области распознавания речи остаётся ещё немало нерешённых и сложных проблем. Среди них:
• Расширение возможностей новых систем хранения данных, распознавания акцентов, речи на фоне сильного шума.
• Включение контекста в процесс распознавания.
• Диаризация и разделение источников.
• Количество семантических ошибок и инновационные методы оценки распознавателей.
• Очень малая задержка.
С нетерпением жду прогресса, который будет достигнут в следующие пять лет по этим и другим фронтам.
Автор: Вячеслав Голованов