Голос джарвиса при включении компьютера
Наверняка, каждый мечтает о своем голосовом ассистенте, под катом еще одна реализация «Джарвиса» из известного фильма.
Давно не покидала мысль о своем «Jarvis» и управлении техникой в доме голосом. И вот, наконец, руки дошли до создания сего чуда. Над «мозгами» долго думать не пришлось, Raspberry Pi подходит идеально.
- Raspberry pi 3 model b
- USB камера logitech
Реализация
Работать наш ассистент будет по принципу Alexa/Hub:
- Активироваться оффлайн по определенному слову
- Распознать команду в облаке
- Выполнить команду
- Отчитаться о проделай работе либо сообщить запрашиваем информацию
Оффлайн активация
Активация будет происходить с помощью CMU Sphinx, и все бы хорошо, но из коробки распознание происходит очень медленно, больше 10 сек, что абсолютно не подходит, для решения проблемы нужно очистить словарь от ненужных слов.
Устанавливаем все необходимое:
удаляем все кроме нужного нам Джарвиса:
Теперь pocketsphinx распознает довольно быстро.
Распознавание речи
Сначала была идея воспользоваться сервисом гугла, к тому же его поддержка есть в SpeechRecognition. Но как оказалось гугл берет за это деньги и не работает с физ. лицами.
Благо Яндекс тоже предоставляет такую возможность, бесплатно и предельно просто.
Регистрируемся, получаем API KEY. Все работу можно производить curl’om.
Синтез речи
Тут нам опять поможет Яндекс. Посылаем текст в ответ получаем файл с синтезированным текстом
Jarvis
Собираем все вместе и получаем такой скрипт.
Что тут происходит. Запускаем бесконечный цикл, arecord’om записываем три секунды и отправляем sphinx на распознание, если в файле встречается слово «jarvis»
проигрываем заранее записанный фаил оповещения об активации.
Опять записываем 3 секунды и отправляем Яндексу, в ответ получаем нашу команду. Далее выполняем действия исходя из команды.
На этом собственно все. Сценариев выполнения можно придумать великое множество.
Use-case
Теперь немного примеров реального моего использования
Philips Hue
В приложении Hue устанавливаем статический IP:
Конечный вариант скрипта:
В джарвиса добавляем:
LG TV
Берем скрипт отсюда. После первого запуска и ввода кода сопряжения, сам код не меняется, поэтому можно выпилить эту часть из скрипта и оставить только управляющую.
В джарвиса добавляем:
Радио
В джарвиса добавляем:
Еще можно поставить homebridge и управлять всем через Siri, в случае если до джарвиса не докричаться.
Что касается качества распознавания речи, не Alexa конечно, но на расстоянии до 5 метров процент верного попадания приличный. Главная проблема — речь из телевизора\колонок записывается вместе с командами и мешает распознаванию.
Читайте также: