Специалист Microsoft рассказал о механизме работы функции распознавания голоса Kinect
Сенсор понимает голосовые команды, которые геймер отдает ему с другого конца комнаты. Доктор Иван Ташев, один из ведущих исследователей в группе технологий речи Microsoft Research, рассказал "Ленте.ру" о том, как работает функция распознавания голоса в Kinect, почему геймерам не нужна аудиогарнитура, ожидать ли нам игры с голосовым управлением и будет ли устройство поддерживать русский язык.
Лента.ру: Сенсор Kinect и геймера разделяют несколько метров - существенная дистанция для любого микрофона, особенно если учесть, что в комнатах бывает шумно - лето, распахнутое окно, автомобили. Как удается заставить Kinect "расслышать" то, что ему говорят?
Иван Ташев: Ранее распознать речь человека было возможно лишь в том случае, если он находился в непосредственной близости от микрофона - идеальным считалось расстояние в два сантиметра. Если же перенести микрофон на расстояние в один, два, три или даже четыре метра, возникают сразу несколько проблем. Первая - это шум. Шум исходит в том числе и от устройств, которые работают в комнате - от телевизора и от самой консоли Xbox. Мозг человека умеет отделять шум от голоса. Тем не менее, иногда с этой задачей не под силу справиться даже людям - поставьте человека на расстояние четырех метров от микрофона, запишите его голос и попробуйте прослушать.
Вторая задача, которую необходимо решить, - это так называемая реверберация. Мы с вами сидим в комнате и разговариваем, но при этом вы воспринимаете примерно одну треть от изначальной энергии моего голоса. Остальное - это отражения звука от стен, стола и других поверхностей. Получается, что вы слышите мой голос плюс множество его задержанных более слабых копий. Это снижает разборчивость речи.
Наконец, одна из самых сложных задач, которые стояли перед разработчиками "распознавателя" речи - это звук от динамиков. Динамики расположены очень, очень близко к Kinect, а пользователь, который произносит голосовые команды, находится далеко. К тому же геймеры, как известно, имеют привычку выставлять звук на максимальную громкость.
Получается, что устройство должно уметь, во-первых, отсекать звук из динамиков, а во-вторых, уменьшать реверберации и шум. Только в этом случае в "распознаватель речи" будет поступать разборчивый звук относительно высокого качества.
Поэтому Kinect нужны целых четыре микрофона?
Помочь нам отсечь звук из динамиков и снизить реверберации и шум могут сразу несколько технологий. Одна из них носит название технологии направленных микрофонов.
В Kinect - совершенно верно - имеются четыре микрофона, и они позволяют системе захвата определить, откуда идет звук, и отсечь шумы и реверберацию. Вторая технология - это так называемое эхоподавление. С его помощью можно отделить звук голоса от звука динамиков. Эхоподавление - один из самых старых алгоритмов обработки сигнала, и он используется практически в каждом спикерфоне (телефоне с громкоговорящей связью). Но в случае со спикерфоном уровень громкости динамика приближен к уровню громкости голоса человека. В случае с Kinect динамики звучат громче, а человек - тише. Более того, сигнал от динамиков является не монофоническим, а стереофоническим.
Выход мы нашли, разработав алгоритм стереоакустического эхоподавления. Само по себе это было довольно непростой исследовательской задачей, а Kinect стал первым устройством, где применяется подобная технология. Более того, Kinect - первое потребительское устройство, которое способно распознавать речь с расстояния трех-четырех метров.
Важно также, что в Kinect, в отличие от автомобильных гарнитур и других аналогичных устройств, отсутствует кнопка Push-to-talk ("Нажми и говори"). Иными словами, пользователю не нужно выполнять никаких действий, чтобы подать знак компьютеру - "Смотри, я сейчас заговорю".
Сейчас голосовое управление поддерживает в первую очередь меню Xbox 360 - консолью можно управлять, отдавая команды "Xbox, open tray", "Xbox, play disc", "Xbox, pause" и так далее. А как насчет голосовых команд в играх?
XDK, или Xbox Development Kit, поставляется с анализатором речи, и разработчики игр могут встраивать его в свои приложения. Базовый пакет игр включает в себя две игры с функцией распознавания речи. Одна из них - это Kinectimals. Ее очень любят дети, потому что она сочетает в себе речь, жесты, графику, звук.
Хочу еще раз подчеркнуть, что речь - это отличный способ взаимодействия с компьютером, но просто речь в чистом виде - это телефон, а зачем нам возвращаться в девятнадцатый век? Наш выбор - это объединить речь, жесты, графику, звук в единый интуитивный интерфейс. Чтобы начать им пользоваться, не нужно читать мануалы или проходить подготовку. Все понятно и так.
В настоящий момент Kinect понимает четыре языка: английский, испанский, японский и французский. Будет ли поддержка новых языков - например, русского?
Серьезный вопрос. Сам по себе распознаватель речи - довольно сложная программа, но она может работать с любым языком. Чтобы научить ее новому языку, нам нужно собрать образцы речи на этом языке - тысячу часов записи, а еще лучше сто тысяч, - чтобы извлечь из них акустические модели. Это не столько инженерная, сколько организационная задача. Чтобы собрать коллекцию образцов и проанализировать их, требуется немало финансовых и человеческих ресурсов, но мы это делаем. Да, мы работаем над этим, и в будущем Kinect научится понимать новые языки. Россия - важный рынок для Microsoft, поэтому вероятно, что в относительно скором времени появится поддержка и русского языка. Если вернуться к исследовательским задачам, то мы в Microsoft работаем над тем, чтобы Kinect смог обучаться новым языкам как можно быстрее.
Если рассматривать вопрос с технической точки зрения, то все люди на Земле принадлежат к одному биологическому виду. Их речевой аппарат способен воспроизводить определенное количество звуков, называемых фонемами. Фонем насчитывается 67-68. В разных языках число фонем разное. Огромным подспорьем будет, если мы научимся применять накопленный для конкретного языка материал ко всем языкам этой языковой группы - например, славянским языкам или романским языкам.
Распознавание речи применяется пока в основном в развлекательной сфере: это игровой Kinect, угадыватели песен наподобие Shazam и так далее. Найдет ли эта технология более "серьезное" применение? Представим: включает пользователь компьютер и говорит ему: а запусти-ка Outlook и напиши моему бизнес-партнеру, что встреча в четверг отменяется...
Это возможно уже сегодня. Такая задача даже гораздо проще, чем распознавание речи в Kinect - поскольку пользователь, в отличие от геймера, сидит в тихом офисе в относительной близости от компьютера. Функция распознавания речи имеется в современных версиях Windows 7 и Microsoft Office 2010. Она не так популярна, потому что с точки зрения удобства ввода информации голос не может соперничать с мышкой и клавиатурой. Пока вы печатаете текст на клавиатуре, у вас есть время подумать.
Ну и проговаривать вслух все подряд тоже не хочется.
Да, и это в том числе. Ситуация кардинально меняется, когда речь заходит о портативных устройствах или устройствах без клавиатуры. Или возьмем автомобилистов - во многих странах запрещено набирать текст на телефоне за рулем, поэтому вводить информацию голосом может быть едва ли не единственным выходом. Примером может служить автомобильная информационно-развлекательная система Kia UVO, которую совместно разрабатывают KIA и Microsoft. Она будет поддерживать возможность набора SMS голосом.