Яндекс. Диктовка не просто записывает произнесенные слова — она способна понимать команды

Лингвистика

Однажды Анатолю Франсу порекомендовали хорошую стенографистку. Придя к писателю, девушка сообщила ему, что успевает записывать 130 слов в минуту. "Где же я их столько возьму?" — задумчиво спросил Франс.

Фото: Тимофей Яржомбек

С недавних пор каждый из нас может почувствовать себя Анатолем Франсом: в роли стенографистки выступит приложение "Яндекс.Диктовка", которое было представлено на Пятой технологической конференции Яндекса 30 октября.

Эта программа демонстрирует наработки, входящие в состав библиотеки для распознавания и порождения речи Yandex SpeechKit. Теперь с разнообразными возможностями этой библиотеки могут поэкспериментировать не только программисты, но и простые пользователи.

Многие сталкивались с распознаванием речи от Яндекса или Google, управляя навигатором с помощью голоса или спрашивая у карты адрес. Распознавание речи стало особенно востребованным в середине 2000-х годов, когда гаджеты поумнели, а управлять ими с клавиатуры оказалось неудобно: ведь скорость набора текстов в смартфоне и даже планшете гораздо ниже, чем в компьютере. Пока пользователь введет название "улица 26 Бакинских комиссаров", пройдет полминуты, даже если положиться на подсказки, все равно придется набирать "26 Б", переключаясь с цифровой клавиатуры на буквенную. Кроме того, хорошее распознавание речи облегчит жизнь слабовидящим, да и все остальные наверняка предпочли бы общаться с телефоном на человеческом языке, а не осваивать хитрые интерфейсы постоянно меняющихся операционных систем. Яндекс.Диктовка — шаг на пути к этому светлому будущему. "Поставь будильник на семь утра" или "Поехали на улицу Льва Толстого, дом 16", — вот какими фразами Яндекс предлагает теперь общаться с телефоном. Yandex SpeechKit не смущает, если одна и та же мысль выражается по-разному: он может понять, что "набери номер Ивана Ивановича" и "позвони Ивану Ивановичу" — это одно и то же.

Схема: Тимофей Яржомбек

Схема: Тимофей Яржомбек

Распознавание речи — одна из самых непростых задач прикладной лингвистики. Дело в том, что речь не устроена линейно, как мы привыкли считать: слова не состоят из отдельных звуков в четкой последовательности. Звуковой сигнал, соответствующий слову стул, невозможно без остатка разделить на четыре части: с, т, у и л. Характерные особенности звуков накладываются друг на друга, не говоря уж о том, что одинаковых звуков вовсе не существует: каждое произнесенное нами у или т имеет свои высоту, темп, тембр и так далее.

В традиционных учебниках по фонетике сообщается, что в русском языке около 40 согласных звуков и примерно десяток гласных, если различать ударные и безударные. Однако оказалось, что такая классификация на практике неприменима: Yandex SpeechKit для анализа учитывает контекстные варианты звуков (например, к перед у звучит иначе, чем перед а), а для повышения точности делит каждый звук на три части: начало, середину и конец. Эти минимальные части контекстно зависимых звуков и составляют фонетический алфавит Яндекса — 4000 так называемых сенонов.

Получив на вход звук, Яндекс членит его на фреймы — кусочки по 25 миллисекунд. Затем анализируется спектр каждого фрейма, после чего надо определить, какому сенону соответствует этот фрейм. Чтобы это сделать, используется статистическая модель, которая учитывает как сходство спектра фрейма со спектральными характеристиками сенонов, так и вероятность появления той или иной последовательности сенонов.

Некоторые сочетания звуков менее вероятны, чем другие. Например, если человек услышал перед м какой-то то ли шипящий, то ли свистящий глухой звук, то он может опираться на то, что щм почти не встречается в русских словах, чм и шм встречаются чаще, а см — еще чаще, и предположить, что это скорее всего с. Примерно по такому принципу и распознает речь Яндекс.

Но когда идентифицирована последовательность сенонов, остается еще одна сложная задача — понять, какому реальному слову она соответствует. Русский язык сложен для распознавания речи в том числе из-за особенностей своей орфографии. К примеру, мы различаем слова спица, спится и спиться, которые в естественной речи произносятся одинаково. А значит, программа распознавания речи должна не просто распознавать речь, но и понимать ее, причем иногда ориентируясь на далекий контекст: если человек говорит "мне не спится", то мягкий знак в последнем слове скорее всего не нужен, а вот если он возьмет и добавит перед этим "как бы", то мягкий знак будет куда уместнее: "Как бы мне не спиться!" Человек легко справляется с такими тонкостями, а вот компьютеру нужна большая база текстов, по которой можно посмотреть, какие формы расслышанных слов оказываются самыми вероятными в том окружении, в котором они встретились.

Яндекс.Диктовка не просто записывает все слова, которые произнес пользователь, но и способна понимать и интерпретировать его команды: например, если надиктовать ей "мама мыла раму точка", то на выходе получим "мама мыла раму." — с точкой, а не со словом "точка" в конце. Чтобы начать запись, надо сказать: "Яндекс, записывай!" С помощью голосовых команд можно добавлять слова в уже надиктованный текст, заменять их или удалять. Впрочем, сколько я ни произносил "мама мыла раму, замени раму на окно", все равно получалось в лучшем случае "мама мыла раму заминировано окно".

Создатели Диктовки сообщают, что качество распознавания зависит от тематики запроса: для географических названий оно составляет 95 %, для коротких фраз — 88 %, для текстов вроде заметок и смс — 82 %. Видимо, эти оценки вполне соответствуют действительности: из двадцати московских улиц, пришедших мне на ум, точно распознались девятнадцать: среди них были даже такие странные названия, как 2-я Квесисская улица и переулок Обуха, и только улица Лестева отправилась куда-то в Англию и превратилась в улицу Лестера. Пользователю, который хочет найти понимание у своего телефона, приходится трудиться: говорить разборчивее, медленнее, не проглатывать слоги. Проведя несколько часов за тестированием Яндекс. Диктовки я понял, что, даже отложив телефон, выговариваю безударные гласные намного четче, чем того требует русский язык (правда, как усердно я ни якал, заставить приложение написать "я свячу куличи", а не "я свечу куличи", не удалось). Речевые технологии Яндекса доступны сторонним разработчикам. Они могут встраивать их в свои мобильные приложения, игры, компьютерные программы и корпоративные сервисы. Условия лицензии наверняка порадуют начинающих программистов, которые смогут вволю поэкспериментировать с распознаванием речи: если число голосовых обращений к приложению меньше 10 тысяч в сутки, Яндекс позволяет использовать свои наработки бесплатно. А если масштабы больше, придется раскошеливаться и платить примерно 20 - 30 копеек за каждый запрос.

Разумеется, система распознавания речи от Яндекса — не единственная в своем роде. Есть много конкурирующих продуктов, каждый из которых имеет свои достоинства, недостатки и сферы применения. Но мы можем надеяться, что распознавание речи от Яндекса будет лучше приспособлено к русскому языку, чем его аналоги от Google или Microsoft, для которых англоязычный рынок важнее, — и, возможно, через несколько лет каждый из нас будет хвастаться тем, что носит в кармане личного стенографиста.

Факты

84% качество распознавания общих поисковых запросов

95% качество распознавания гео-запросов

1.1 секунды
среднее время ответа

Песню на сутки противоречиво

Программа хорошо понимает шаблонные тексты. Например, если предложить ей послушать речь министра экономического развития Алексея Улюкаева на форуме "Россия зовет", результат получается вполне приемлемый. "Если долго проводить последовательную политику, то и инфляция снизится, и экономический рост ускорится", — говорит Улюкаев. "Пишу долго проводить последовательную политику инфляции снизится экономический рост ускорится", — стенографирует Яндекс.

С более сложно устроенными текстами Диктовка пока все же не справляется. Едва ли академик-лингвист Андрей Зализняк, произнося речь при получении Солженицынской премии, сказал "Счастья, которым шуберт таких случаев вместо массу информации песню на сутки противоречиво дает нам вносить неловко". "Средства массовой информации" в этом фрагменте еще кое?как опознаются, но смысл в целом ускользает. Неудивительно, что Яндекс. Диктовка плохо работает и с живой речью.


текст Александр Пиперски

научный сотрудник лаборатории социолингвистики РАНХиГС, преподаватель кафедры компьютерной лингвистики РГГУ

иллюстрации Тимофей Яржомбек

Загрузка новости...
Загрузка новости...
Загрузка новости...
Загрузка новости...
Загрузка новости...
Загрузка новости...
Загрузка новости...
Загрузка новости...
Загрузка новости...
Загрузка новости...
Загрузка новости...