Распознавание речи

Здесь вы узнаете о том как

Управлять устройствами с помощью голоса

Для того чтобы управлять устройствами с помощью голоса, сначала этот самый голос необходимо распознать. Сделать это можно с помощью специальных программ, которые воспринимают человеческую речь, распознают её и выводят результат в виде текста. Таких программ на сегодняшний день очень много, в своей основной массе они платные. Хорошая поддержка русской речи, в основном осуществлена в программах российского производства. Но мы не будем останавливаться на их рассмотрении, так как нам нужна бесплатная программка. Среди таковых можно выделить два варианта :

1. Sphinx voice recognition

2. Google web speech API

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

Вторая программа, хотя это даже не программа а интерфейс программирования (условно назовём программой), на данный момент больше подходит для решения задач связанных с распознаванием речи. Есть и обширная база голосов, слов и простой язык программирования, в общем как я считаю сейчас лучше не найти. Но минус в том, что нужно постоянное подключение к сети интернет. Хотя на смартфонах с Android и в offline работает, но постоянно путает окончания.

И так с выбором программы мы определились - Google web speech API, теперь самое главное понять как это все связать в единое целое. Для этого нам нужно выполнить следующую последовательность шагов:

1.Распознать речь. То есть перевести речь в текст.

2.Написать небольшой скрипт, для сравнения распознанного значения с заданным.

3.Если заданное значение равно распознанному, то выполнить команду на включение.

Пункт первый можно выполнить двумя способами:

Способ первый - распознавание речи из записанного аудио файла с произнесенной фразой. Делается это примерно по такому принципу, запускается программка записи звука (в определенном Google-ом формате), файл отправляется на сервер Google для расшифровки, а в ответ мы получаем текст.

Способ второй - распознавание речи с помощью Google web speech API на JavaScript. Работает следующим образом - пишется скрипт, который путем обращения к API, сам производит выше перечисленные действия в интернет браузере с поддержкой функции распознавания речи, таковым является Google Chrome. Насколько я знаю, на данный момент времени, только Chrome имеет 100% поддержку распознавание речи, остальные браузеры пока на пути к этому.

Для воплощения в жизнь нашего опыта, выбираем второй способ. Так как для использования первого способа (формат запроса уже изменился но принцип тот же), необходимы хотя бы небольшие познания в программировании например на PHP и установка как минимум трех программ ( Web сервер apache, интерпретатор php, программа записи звука sox). В нашем опыте нам это не пригодится, самое главное что нам нужно будет сделать, это установить и настроить XBMC и Google Chrome.

И так будем считать, что XBMC и Chrome мы установили. В Chrome нам нужно будет зайти в Меню - Настройки - Показать дополнительные настройки - Личные данные - Настройки контента - Всплывающие окна и выбрать Разрешить открытие всплывающих окон на всех сайтах, затем нажать кнопку Готово. Это нам нужно будет для того чтобы при эмулировании GET запроса (открытии новой вкладки) к XBMC, не появлялся запрос на разрешение открытия Всплывающего окна. Эмулировать GET запрос мы будем потому, что посредством JavaScript его передать, нельзя из-за политики безопасности. Есть конечно разные обходные пути, но мы их рассматривать не будем. Теперь мы напишем наш чудо скрипт, который будет делать следующее: по фразе включить радио - будет включать online радио в XBMC. Еще один нюанс - при первом обращении скрипта к XBMC вылезет окно с запросом Логина и Пароля, нужно будет их ввести и нажать Вход, в дальнейшем окно появляться не будет.

Запускаем программу Блокнот (Windows) и создаем новый файл, затем копируем код который расположен ниже и вставляем его в наш файл.

Создаём новую папку с любым названием, в ней создаем еще одну папку images. Нажимаем ссылки 1 и 2 нажатием правой кнопки мыши на картинках вызываем меню, выбираем пункт Сохранить как, сохраняем в папку images. Находим в нашем файле (в Блокноте) такие строки:

var xbmc_host="192.168.0.62";//ip адрес XBMC

var xbmc_port="8080";//порт хоста XBMC

Чуть ниже строка var xbmc_radio='http://cast.radiogroup.com.ua:8000/avtoradio'; //ссылка на online радио в ней можно поменять ссылку на радио, если это перестанет работать. Меняем IP - 192.168.0.62 и Порт - 8080 на свои значения. Сохраняем файл под именем test.html, в корень новой папки (которая с любым названием).

Запускаем программу XBMC. Открываем файл test.html в Google Chrome и нажимаем на микрофончик, затем кнопку Разрешить. Микрофончик должен замигать красным цветом и появится надпись Командуй. Произносим фразу включить радио, после чего она появится в окошке под микрофончиком и откроется новая вкладка с запросом к XBMC. Как я уже писал, вылезет окно с запросом Логина и Пароля. Вводим их и нажимаем Вход, если все правильно сделано, то XBMC должен начать проигрывать online радио. Можно остановить проигрыватель и повторить нашу фразу еще раз, предварительно нажав на микрофончик. Теперь радио включится само, без лишних телодвижений. Опыт будет смотреться намного эффектней, если XBMC запущен на другом компьютере или приставке которые подключены к одной сети.

Суть данного опыта проста - для того, чтобы управлять устройствами с помощью голоса, достаточно распознать фразу (слово), затем сравнить её с заданной в условии, и если условие выполняется отправить GET (или POST) запрос с параметрами на устройство. Устройство в свою очередь - должно получить запрос и выполнить команду или сообщить об ошибке, которою можно тоже обработать и принять соответствующие меры.

Здесь можно посмотреть как это работает.

Про Google speech api v2 можно почитать здесь.

Программы и технологии используемые в моей системе - Умный Дом

Комментарии Все комментарии

Написать комментарий