Голос джарвиса при включении компьютера

Обновлено: 05.07.2024

Наверняка, каждый мечтает о своем голосовом ассистенте, под катом еще одна реализация «Джарвиса» из известного фильма.

image



Давно не покидала мысль о своем «Jarvis» и управлении техникой в доме голосом. И вот, наконец, руки дошли до создания сего чуда. Над «мозгами» долго думать не пришлось, Raspberry Pi подходит идеально.

  • Raspberry pi 3 model b
  • USB камера logitech

Реализация

Работать наш ассистент будет по принципу Alexa/Hub:

  1. Активироваться оффлайн по определенному слову
  2. Распознать команду в облаке
  3. Выполнить команду
  4. Отчитаться о проделай работе либо сообщить запрашиваем информацию

Оффлайн активация

Активация будет происходить с помощью CMU Sphinx, и все бы хорошо, но из коробки распознание происходит очень медленно, больше 10 сек, что абсолютно не подходит, для решения проблемы нужно очистить словарь от ненужных слов.

Устанавливаем все необходимое:


удаляем все кроме нужного нам Джарвиса:


Теперь pocketsphinx распознает довольно быстро.

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

Сначала была идея воспользоваться сервисом гугла, к тому же его поддержка есть в SpeechRecognition. Но как оказалось гугл берет за это деньги и не работает с физ. лицами.

Благо Яндекс тоже предоставляет такую возможность, бесплатно и предельно просто.

Регистрируемся, получаем API KEY. Все работу можно производить curl’om.

Синтез речи

Тут нам опять поможет Яндекс. Посылаем текст в ответ получаем файл с синтезированным текстом

Jarvis

Собираем все вместе и получаем такой скрипт.


Что тут происходит. Запускаем бесконечный цикл, arecord’om записываем три секунды и отправляем sphinx на распознание, если в файле встречается слово «jarvis»


проигрываем заранее записанный фаил оповещения об активации.

Опять записываем 3 секунды и отправляем Яндексу, в ответ получаем нашу команду. Далее выполняем действия исходя из команды.

На этом собственно все. Сценариев выполнения можно придумать великое множество.

Use-case

Теперь немного примеров реального моего использования

Philips Hue


В приложении Hue устанавливаем статический IP:

image

Конечный вариант скрипта:


В джарвиса добавляем:

LG TV

Берем скрипт отсюда. После первого запуска и ввода кода сопряжения, сам код не меняется, поэтому можно выпилить эту часть из скрипта и оставить только управляющую.

В джарвиса добавляем:

Радио

В джарвиса добавляем:


Еще можно поставить homebridge и управлять всем через Siri, в случае если до джарвиса не докричаться.

Что касается качества распознавания речи, не Alexa конечно, но на расстоянии до 5 метров процент верного попадания приличный. Главная проблема — речь из телевизора\колонок записывается вместе с командами и мешает распознаванию.

Читайте также: