Как сделать джарвиса на компьютер
Джарвис снова в деле
Наверняка, каждый мечтает о своем голосовом ассистенте, под катом еще одна реализация «Джарвиса» из известного фильма.
Давно не покидала мысль о своем «Jarvis» и управлении техникой в доме голосом. И вот, наконец, руки дошли до создания сего чуда. Над «мозгами» долго думать не пришлось, Raspberry Pi подходит идеально.
Реализация
Работать наш ассистент будет по принципу Alexa/Hub:
Оффлайн активация
Активация будет происходить с помощью CMU Sphinx, и все бы хорошо, но из коробки распознание происходит очень медленно, больше 10 сек, что абсолютно не подходит, для решения проблемы нужно очистить словарь от ненужных слов.
Устанавливаем все необходимое:
удаляем все кроме нужного нам Джарвиса:
Теперь pocketsphinx распознает довольно быстро.
Распознавание речи
Сначала была идея воспользоваться сервисом гугла, к тому же его поддержка есть в SpeechRecognition. Но как оказалось гугл берет за это деньги и не работает с физ. лицами.
Благо Яндекс тоже предоставляет такую возможность, бесплатно и предельно просто.
Регистрируемся, получаем API KEY. Все работу можно производить curl’om.
Синтез речи
Тут нам опять поможет Яндекс. Посылаем текст в ответ получаем файл с синтезированным текстом
Jarvis
Собираем все вместе и получаем такой скрипт.
Что тут происходит. Запускаем бесконечный цикл, arecord’om записываем три секунды и отправляем sphinx на распознание, если в файле встречается слово «jarvis»
проигрываем заранее записанный фаил оповещения об активации.
Опять записываем 3 секунды и отправляем Яндексу, в ответ получаем нашу команду. Далее выполняем действия исходя из команды.
На этом собственно все. Сценариев выполнения можно придумать великое множество.
Use-case
Теперь немного примеров реального моего использования
Philips Hue
В приложении Hue устанавливаем статический IP:
Выписываем ID нужных схем, вида «470d4c3c8-on-0»
Конечный вариант скрипта:
В джарвиса добавляем:
LG TV
Берем скрипт отсюда. После первого запуска и ввода кода сопряжения, сам код не меняется, поэтому можно выпилить эту часть из скрипта и оставить только управляющую.
В джарвиса добавляем:
Радио
В джарвиса добавляем:
Еще можно поставить homebridge и управлять всем через Siri, в случае если до джарвиса не докричаться.
Что касается качества распознавания речи, не Alexa конечно, но на расстоянии до 5 метров процент верного попадания приличный. Главная проблема — речь из телевизора\колонок записывается вместе с командами и мешает распознаванию.
На этом все, спасибо.
Ой, у вас баннер убежал!
Редакторский дайджест
Присылаем лучшие статьи раз в месяц
Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.
Похожие публикации
Вывод температуры, пробок и курса валют на светодиодную матрицу Raspberry Pi
Гирлянда на Raspberry Pi
Управление домашними электроприборами («умный дом») через чат бот на Raspberry Pi
Вопросы и ответы
Как автоматические воспроизводить следующий трек из очереди?
Чем определение функций в классе через classmethod лучше, чем простое хранение их в файле?
Как сделать черный список для команд?
Почему я не могу нажать на кнопку в Selenium?
Как сделать распознавание маски на лице на Ubuntu?
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Минуточку внимания
Комментарии 55
Наверняка, каждый мечтает о своем голосовом ассистенте
Очень даже удобно. Я реально пользуюсь управлением светом.
https://www.youtube.com/watch?v=U-6_s7yuGQE&t=28s
>Наверняка, каждый мечтает о своем голосовом ассистенте
Только если он будет комплектоваться телом-андроидом. Я совершенно не представляю, зачем мне голосовой помошник, который не может ничего сделать. Большинством функций умного дома, как по мне, куда удобнее рулить с графического или текстового интерфейса. Вот попробовал я Кортану — ну, поигрался немного, но так и не придумал ей практического применения. Может быть об этом и мечтают люди, у которых нет навыка работы с клавиатурой (хотя опять же, в большинстве случаев хватает навыков работы с мышью или тач-панелью), но зачем такой помощник гикам — ума не приложу.
Я Алексу прошу
* Включить музыку пока готовлю
* Включить/выключить свет на кухне если руки заняты
* Включить/выключить монитор (на нем нет физической кнопки)
* Включить/выключить свет в зале когда мы на диване телек смотрим к примеру
* Поставить таймер на N минут
* Узнать погоду
* Включить/выключить группу приборов
* Включить отопление
В самом начале еще всякую ерунду типа «сколько лет Путину» или «какое расстояние до солнца» спрашивали. Но быстро надоело. Так да, если выключатель в пределах пары метров, то проще им щелкнуть, чем выговаривать фразу, которую надо еще правильно сформулировать. Но все же Echo dot стоит потраченных 50 Евров, хотя и нервирует иногда, своей тупостью.
Включить/выключить свет в зале когда мы на диване телек смотрим к примеру
Про Алексу. Если тишина, то голос не надо повышать, можно обычным тоном говорить. Если в соседней комнате работает телевизор, то это распознованию практически не мешает. Если в той же комнате (у меня это кухня) булькает к примеру кофеварка или работает вытяжка то приходится повышать голос. Иначе либо не понимает, либо «делает вид», что ничего не услышала. Если телевизор сделать совсем громко, то приходится громко говорить. Если алекса сама музыку воспроизводит, то достаточно, что бы она услышала свое имя, она тут же приглушает звук. У меня зал по соседству с кухней, из зала я тоже могу отдавать комманды, правда приходиться повышать голос и глушить телевизор.
В принципе неплохо работает, иногда есть какие то непонятки. Некоторые слова упорно не хочет понимать, возможно потому, что я на иностранном для меня языке говорю. Хотя в логе видно, что предложение поняла. Говорю к примеру «включи монитор», она все распознала, видно в логе, но все равно переспрашивает, какой девайс я имел ввиду. Если тут скажу «монитор» она его включает. Я обошел эту проблему переименовав монитор в «компьютер». Стала понимать слету, даже шепотом.
Но вот из-за таких непоняток невольно начинаешь повышать голос и говорить как робот. У меня такое чуство, что проблема не в распозновании речи как таковой, а понимании семантики.
По моему личному мнению, с вероятностью в 99,9% такого не будет в ближайшие не знаю сколько лет. А то, может и никогда не будет.
Поэтому только условные сценарии, которые более-менее покрывают потребности обитателей. Ну либо мириться с приличным количеством ошибок, если полагаться на некое подобие искусственного интеллекта, который пытается силой своего скудного разума пронзить привычки человека.
И вот я снова становлюсь занудой. Собственно, здесь (на ГТ) каждый, кому не лень, говорит, что то, что мы называем умным домом, это не умный дом.
Вот и я соглашусь: сейчас дома автоматические. А вот до умного нам как до Марса пешком.
Предположим, вы обклеите все датчиками и даже поставите камеры, которые будут (вместе с другим железом) распознавать пол и возраст каждого. Но вот ситуации:
а) Вы приходите домой один
б) Вы приходите домой с известной дому дамой
в) Вы приходите с неизвестной дому дамой
г) Вы приходите домой с известной дому дамой, которой неизвестно, что в пункте в) вы приходили домой с неизвестной дамой
д) Вы приходите домой с известной дому дамой, с которой романтика уже закончилась
Как дом будет понимать кого как встречать, ну или хотя бы кому какой свет — где поярче, где потише? Вот поэтому я и говорю, что пока что можно базироваться только на сценариях, которые более-менее учитывают общие алгоритмы поведения.