Diy

Как создать самостоятельный помощник Google Home с помощью Raspberry Pi

Как создать самостоятельный помощник Google Home с помощью Raspberry Pi

Голосовые помощники быстро стали обычным явлением. Во многих домах есть Alexa или Google Home, которые контролируют все, от освещения до медиа и даже хронометража.

Технология, на которой работают эти устройства, доступна — по крайней мере частично — каждому. Google Assistant SDK позволяет использовать службу на своих устройствах. Из этого туториала Вы узнаете, как настроить Google Assistant на вашем Raspberry Pi и как голосовой активировать светодиод через контакты GPIO.

Оборудование, необходимое для Raspberry Pi Home Assistant

Raspberry Pi Google Assistant Требуется оборудование

Тебе понадобится:

  1. Raspberry Pi со свежей установкой Raspbian на SD-карту
  2. USB веб-камера или микрофон.
  3. Внешний динамик.
  4. Схема из учебника по светодиодам Pi (необязательно)
  5. Браузер вошел в вашу учетную запись Google.

Примечание . Оборудование для этого урока может несколько отличаться. Я использовал запасную веб-камеру USB исключительно для ее микрофона. Любая совместимая веб-камера или микрофон должны работать хорошо, и существует обширный список Pi-совместимых устройств, чтобы помочь.

Кроме того, я использую 3,5 мм выход для аудио. HDMI и другие источники вывода также будут работать, хотя для этого потребуется изменить настройки звука ниже.

Подключите веб-камеру USB и динамик и настройте светодиодную цепь, если вы ее используете.

Настройка звука

Этот учебник может следовать непосредственно на Pi или через соединение SSH с Pi.

Оба способа начинаются в терминале, чтобы проверить настройки звука. Используйте команды arecord -l и aplay -l для просмотра списка доступных устройств.

Проверьте устройства воспроизведения и записи

На изображении выше показана веб-камера USB в виде карты 1 и устройства 0 . Запишите номера карт и устройств для выхода на микрофон и динамик.

Теперь, убедившись, что вы находитесь в каталоге / home / pi , создайте новый файл и откройте его в nano:

sudo nano .asoundrc 

Содержимое этого каталога будет отличаться в зависимости от того, какие номера карт и устройств вы используете. Здесь вы можете выбрать выход HDMI, а не 3,5 мм, если хотите.

Конфигурационный файл asoundrec для микрофона и динамика

Когда вы ввели свою версию кода выше, нажмите Ctrl + X, чтобы сохранить и выйти.

Проверьте свои настройки, записав и воспроизведя короткий клип:

Сделайте тестовую запись, чтобы проверить ваши настройки

Необязательный шаг: если вы хотите изменить входную громкость вашего микрофона, откройте alsamixer и нажмите F6 для переключения между устройствами.

Это оно! Звук настроен.

Создание проекта Google

Откройте браузер Pi, или, если вы подключены через SSH, откройте браузер локально. Перейдите к консоли действий Google и нажмите « Новый проект» .

Создать новый проект Google

Это может занять несколько минут. Когда закончите, оставьте окно активным и откройте новую вкладку — мы скоро к этому подойдем.

Включение Google Assistant API

Есть несколько онлайн-настроек, которые вам нужно будет сделать, чтобы продолжить. Перейдите на веб-сайт API Google Assistant и нажмите « Включить» .

Включить Google Assistant API

Проект также требует разрешения деятельности. Перейдите на панель управления действиями и убедитесь, что включены следующие действия:

  • Активность в Интернете и приложениях (включая флажок Chrome History)
  • Информация об устройстве
  • Голосовая и звуковая активность

Изменение настроек Google Activity

Теперь вы можете перейти к регистрации устройства.

Регистрация вашего Raspberry Pi

Вернувшись в консоль действий, выберите Регистрация устройства на левой панели. Под Product создайте легко запоминающееся имя для вашего устройства. Имя производителя не имеет значения (но должно быть там), и выберите « Авто» для типа устройства.

Зарегистрируйте свой Pi в качестве модели

Нажмите Зарегистрировать модель и на следующем экране нажмите Загрузить учетные данные OAuth 2.0 . Это загрузит файл JSON на ваш компьютер. Если вы не знакомы с файлами JSON, не беспокойтесь, но изучите, как использовать JSON стоит делать на будущее!

Официальное руководство Google рекомендует переместить файл в / home / pi , поэтому откройте файловый менеджер и сделайте это сейчас.

Дополнительный шаг для пользователей SSH:

Если вы используете SSH, вы скачаете файл JSON на свой локальный компьютер вместо Pi. Чтобы передать его, откройте отдельное окно терминала без SSH-соединения. Из этого окна скопируйте секретный файл JSON клиента с помощью этой команды:

 scp ~/Downloads/client_secret_client-id.json pi@raspberry-pi-ip-address:/home/pi/ 

Замените «raspberry-pi-ip-address» на IP-адрес вашего Pi, и не забывайте двоеточие перед путем. Если вы загрузили файл JSON в другое место, измените локальный путь, чтобы отразить это. Введите пароль при появлении запроса, и файл будет скопирован в домашнюю директорию Pi.

Скопируйте идентификатор секретного города в ПИ

Вернитесь к терминалу SSH и перейдите к / home / pi . Введите ls -l, чтобы получить список файлов в каталоге. Вы должны увидеть переданный секретный файл JSON клиента.

Установка SDK

Google рекомендует работать в виртуальной среде Python. Создайте новую виртуальную среду с именем env .

Если вы никогда не делали этого раньше, этот учебник поможет вам научиться использовать виртуальные среды Python .

Установите последние версии Pip, Setuptools и Wheel и активируйте свою виртуальную среду:

 env/bin/python -m pip install --upgrade pip setuptools wheel source env/bin/activate 

У Google Assistant есть некоторые зависимости, которые вы должны установить в виртуальной среде.

 sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev 

Наконец, установите Google Assistant SDK, примеры и инструмент OAuth.

 python -m pip install --upgrade google-assistant-library python -m pip install --upgrade google-assistant-sdk[samples] python -m pip install --upgrade google-auth-oauthlib[tool] 

Это все, что нужно, чтобы начать работу. Если какая-либо из установок не удалась, тщательно проверьте орфографию и расстояние.

Аутентификация Raspberry Pi

Используйте google-auth-oauthlib [инструмент] с загруженным ранее файлом JSON с учетными данными для аутентификации вашего Raspberry Pi.

 google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \ --scope https://www.googleapis.com/auth/gcm \ --save --headless --client-secrets /home/pi/YOUR_CLIENT_SECRET_ID.json 

Вам необходимо заменить YOUR_CLIENT_SECRET_ID на загруженный файл, поэтому сначала стоит скопировать имя файла. Этот идентификатор клиента должен быть правильным. Не меняйте имя файла!

Вы должны получить сообщение со ссылкой с просьбой вставить код авторизации.

Генерация ссылки авторизации из командной строки.

При нажатии на ссылку открывается браузер. Вам будет предложено включить устройство в вашей учетной записи Google. Скопируйте следующий код авторизации и вставьте его обратно в окно терминала.

Вы должны получить подтверждение в виде Credentials Saved: / home / pi… , означающее, что Pi успешно авторизован с вашей учетной записью Google.

Тестирование

Теперь, когда все готово, пришло время протестировать ваш Pi Google Assistant. Запустите помощника с помощью этой команды:

 googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model 

Вам нужно будет заменить my-dev-project на ваш ID проекта (находится под зубчатым колесом «Настройки» консоли действий). Ваш идентификатор модели устройства указан в разделе «Регистрация устройства» консоли действий.

Попробуйте! Скажите «ОК Google» и задайте вопрос. Вы можете увидеть вывод программы в терминале, услышав ответ:

Терминальный вывод для Google Assistant

Это оно! Теперь на вашем Raspberry Pi работает помощник Google. Обратите внимание, что если громкость звука немного мала, вы можете изменить его, сказав: «Привет, Google, увеличь громкость до 80%».

Бонус: Голосовая активация GPIO

Можно управлять светом с помощью Arduino и Siri , но есть более простой способ. Если вы настроили светодиод, вы можете использовать Google Assistant, чтобы управлять им своим голосом.

Настройка Google Assistant для работы с выводами GPIO относительно проста, но требует некоторых дополнительных шагов. Перейдите в Консоль действий Google и найдите свое устройство в разделе Регистрация устройства. Нажмите на нее и откройте меню черт:

Активация черты OnOff Assistant

Включите черту OnOff и нажмите Сохранить.

Теперь, убедившись, что вы находитесь в виртуальной среде env , клонируйте версию SDK на свой Pi с помощью git:

 git clone https://github.com/googlesamples/assistant-sdk-python 

Поскольку это виртуальная среда, вам нужно установить RPi.GPIO, прежде чем двигаться дальше.

 pip install rpi.gpio 

Теперь перейдите к папке, содержащей скрипт hotword.py .

 cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library 

Модификация скрипта

Вам нужно будет добавить несколько строк в скрипт hotword.py, поэтому откройте его в редакторе nano:

 nano hotword.py 

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

 import RPi.GPIO as GPIO 

Ищите метод process_event . В строке 66 удалите или закомментируйте оператор печати и добавьте оператор if для управления светодиодом.

 #print('Do command', command, 'with params', str(params)) if command == "action.devices.commands.OnOff": if params['on']: print('---------------') print('Led turned on') print('---------------') GPIO.output(18, GPIO.HIGH) else: print('---------------') print('Led turned off') print('---------------') GPIO.output(18, GPIO.LOW) 

Эта логика управляет светодиодом, но пока он не настроен на вывод. Установите его в функции main () до вызова метода process_event.

 GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT, initial=GPIO.LOW) 

Теперь вывод GPIO настроен на вывод и инициализируется в низком состоянии. Сохранить и выйти. Вы можете запустить ваш измененный скрипт, передавая номер идентификатора модели (находится в консоли действий) в качестве аргумента.

 python hotword.py --device-model-id YOUR-MODEL-ID-HERE 

Вывод терминала такой же, как и раньше, и помощник будет работать как стандарт. Однако теперь, когда вы говорите «ОК, Google, включите», вы увидите новый вывод:

Терминальное сообщение с указанием «Включение светодиода»

Примечание. Приведенное выше изображение было обрезано, на нем показаны только помощник, который услышал запрос, и оператор печати, добавленный в сценарий.

Вы должны увидеть, что ваш светодиод тоже горит!

Голос активировал светодиод.

Ваш собственный DIY Raspberry Pi Google Home Assistant

Этот проект является хорошим введением в использование сервисов Google API. Теперь, когда у вас есть устройство Google Assistant, попробуйте некоторые из лучших команд командам мы рассмотрели некоторые замечательные мини-игры

Похожие посты
Diy

Вещи, которые вы должны иметь в виду, прежде чем брать ноутбук или смартфон в службу технической поддержки

Diy

Как использовать Arduino для съемки красивой скоростной фотографии

DiyLinux

Пять великолепных расширений Raspberry Pi, которые делают его еще более полезным

Diy

Первые шаги с Arduino: пристальный взгляд на печатную плату и структуру программы