Pull to refresh

Голосовое управление медиацентром

Reading time 5 min
Views 42K
Пожалуй, мечта всех писателей-фантастов с момента возникновения научной фантастики как таковой — голосовое управление компьютером. Что ещё, как не живой диалог с машиной, позволяет имитировать наличие у последней искуственного интеллекта и даёт основания рассчитывать на то, что кофемолки рано или поздно сойдут с ума, захватят мир и посадят ничтожных людишек в матрицу?

Первые попытки реализовать распознавание речи происходили ещё в середине прошлого столетия, а с распространением персональных компьютеров естественным оказалось желание использовать для этого процесса их мощности. Помнится, лет 15 назад уже существовали программы для Windows, позволявшие создавать макросы, соответствующие голосовым командам. С их помощью я повергал гостей в священный трепет, когда в ответ на просьбу пройти на три буквы Windows завершала работу и уступала место классической надписи «теперь питание компьютера можно отключить». В основе работы этих программ лежало сравнение принятых команд с записанными заранее. Сравнение это происходило с помощью анализа звуковых волн, а минус данного подхода очевиден — команды надо произносить с одной и той же интонацией и, желательно, в одном и том же состоянии сознания.

image
Картинка по запросу «голосовое управление компьютером». Харрисон Форд как бы говорит нам «enhance 34 to 36», что бы это ни значило...

Более логичный подход — анализ фонетических особенностей произнесённой фразы и попытка сопоставить каждое из слов со словарём, что снижает влияние на результат распознавания таких особенностей, как манера речи и даже некоторые «фефекты фикции». Так как же качественно распознать русскую речь? Первым на ум приходит Google, предоставляющий соответствующий API. Некоторые даже вполне удачно интегрируют использование данного API в свой «умный дом» — скрипт отправляет корпорации добра каждую услышанную фразу, после чего пытается сравнить распознанный текст с одной из заданных команд. Естественно, этот вариант я сразу отмёл, иначе придётся отключать систему каждый раз, когда мне надо будет обсудить как лучше избавиться от трупа. Более того, неизвестно сколько продлится эта халява и не решит ли Google внезапно заблокировать этот сервис.

Поэтому, когда я однажды понял, что хочу разговаривать со своим HTPC, я обратился к оффлайновым системам распознавания. Начал я с одной из самых популярных — CMU Sphinx. Первой фразой, которую я снова и снова пытался донести до неё, была «включи свет!». Предоставляю лог моего тестирования:

рай
размышляя
и умеет выпить пинту
тогда наверху трупа опыта
правда нос водкой миру
опять и опять
тот факт
пять
об этом
сперва это утро
вот тут


То есть, как генератор текстов песен для Земфиры, может, и сойдёт, но для полноценного использования не годится. Адаптация акустической модели и ограничение словаря не слишком улучшили ситуацию.

В этот момент, я пришёл к выводу, что пока что самый вменяемый способ организовать голосовое управление — это вести переговоры с бездушной железкой на языке наиболее предполагаемого противника. Не секрет, что английский язык проще русского во многих отношениях, в том числе и фонетически, что для нас особенно важно. А необходимый для распознавания английской речи функционал уже присутствует в последних версиях Windows. «Позвольте, но мы оксфордов не кончали! » — возразит кто-то из читателей. И правильно делали. Воронежский строительный техникум гораздо лучше подготовит к жизни в реальном мире. А наличие идеального прононса, как выяснилось, вовсе не нужно. Если компьютеры будущего понимают даже невнятный бубнёж Харрисона Форда, то чем мы хуже? Например, мой акцент представляет собой смесь Бората и какого-нибудь безумного русского генерала из голливудского трэш-фильма, в чём можно убедиться, посмотрев видео ниже. Я даже не поленился сделать субтитры, потому что сам с трудом понимаю, что я там несу.



Как это работает?


В качестве «прокладки» между пользователем и Windows Speech Recognition используется продукт под названием VoxCommando (~27$). Эта программа используя средства Windows распознаёт фразу и сравнивает её с командами, заданными пользователем. Благодаря ограничению словаря, точность распознавания близка к 100%.

К VoxCommando прилагается большое количество полезных плагинов, в том числе и для XBMC, который был мне особенно интересен. Кроме XBMC-плагина, также заслуживают внимания:
  • плагин для EventGhost — использую для отправки IR-сигналов управления телевизором и ресивером.
  • плагин произвольных HTTP-запросов — обращаюсь к API яндексовского переводчика, того самого, который перевёл «snake scale» как «змея масштаба».
  • также есть плагины для Vera и X10, позволяющие управлять домашней автоматизацией, например, освещением.

image
Настройка голосовых команд. Левое окно — список команд и соответствующие им фразы и их вариации. Правое — редактор текущей команды со списком необходимых действий (в данном случае — обращение к XBMC с использованием JSON-RPC API).

VoxCommando позволяет использовать Text-to-Speech-движки, установленные в системе, поэтому можно попытаться организовать полноценный диалог с машиной. Я на этом внимание не заострял, только лишь научил барышню отвечать «I am» на вопрос «Who's your daddy?» и на этом успокоился.

Микрофон


Ещё один важный вопрос — выбор микрофона. Тем, кто когда-либо сталкивался с распознаванием речи, известно, что лучше всего для этого подходит головная гарнитура. Но отдавать приказы искусственному интеллекту, нацепив на голову ворох проводов и пластмассы, как-то ни разу не киберпанково — в любом фантастическом фильме вас за такое засмеют. Некоторые довольно успешно используют Kinect или такую штуку, как The Voice Tracker, но у этих девайсов достаточно недостатков — довольно сильно ограничена дальность качественного восприятия речи, высокая зависимость от фоновых шумов, ложные срабатывания от воспроизводимого в данный момент контента. Вполне возможна ситуация, когда главный герой какой-нибудь мелодрамы во время признания в любви случайно произнесёт название музыкального альбома в стиле порно-грайнд, а медиацентр воспримет это как недвусмысленный сигнал, что пора прикоснуться к прекрасному.

В поисках решения этой проблемы я наткнулся на Amulet Remote. С виду это обычный MCE-пульт, но кроме инфракрасного передатчика он содержит в себе ещё и беспроводной микрофон, активирующийся при приведении устройства в вертикальное положение.

image
Amulet Remote. При приведении устройства в вертикальное положение логотип на пульте загорается красным, намекая на то, что он хочет общаться.

Несмотря на некоторые недоработки (небольшое по сравнению с обычными пультами время автономной работы и проблемы с обучаемостью), думаю, это самое удачное устройство для голосового управления HTPC на данный момент. Сейчас Amulet Remote предлагается за 69 долларов, но так как производитель высылает свою продукцию только в США, для доставки придётся воспользоваться услугами компании-посредника. Качество распознавания с использованием Amulet Remote на очень высоком уровне, да оно и не удивительно — устройство разработано в Ирландии и, по всей видимости, прошло жёсткое стресс-тестирование ирландским акцентом.

Заключение


Описанный выше вариант вполне можно использовать не только для того, чтобы контролировать медиацентр, но и для управления различными системами «умного дома», а также для большинства других задач, требующих автоматизации, будь то обращение к некоему веб-сервису, запуск приложения или отправка ИК-сигнала. Например, с помощью голосовой команды можно узнать погоду или включить кондиционер. Разве что за пивом послать пока не получится, но будем надеятся на дальнейшие шаги технического прогресса в этом направлении.
Tags:
Hubs:
+13
Comments 15
Comments Comments 15

Articles