Голосовые помощники быстро стали обычным явлением. Во многих домах есть Alexa или Google Home, которые контролируют все, от освещения до медиа и даже хронометража.
Технология, на которой работают эти устройства, доступна — по крайней мере частично — каждому. Google Assistant SDK позволяет использовать службу на своих устройствах. Из этого туториала Вы узнаете, как настроить Google Assistant на вашем Raspberry Pi и как голосовой активировать светодиод через контакты GPIO.
Оборудование, необходимое для Raspberry Pi Home Assistant
Тебе понадобится:
- Raspberry Pi со свежей установкой Raspbian на SD-карту
- USB веб-камера или микрофон.
- Внешний динамик.
- Схема из учебника по светодиодам Pi (необязательно)
- Браузер вошел в вашу учетную запись 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 мм, если хотите.
Когда вы ввели свою версию кода выше, нажмите Ctrl + X, чтобы сохранить и выйти.
Проверьте свои настройки, записав и воспроизведя короткий клип:
Необязательный шаг: если вы хотите изменить входную громкость вашего микрофона, откройте alsamixer и нажмите F6 для переключения между устройствами.
Это оно! Звук настроен.
Создание проекта Google
Откройте браузер Pi, или, если вы подключены через SSH, откройте браузер локально. Перейдите к консоли действий Google и нажмите « Новый проект» .
Это может занять несколько минут. Когда закончите, оставьте окно активным и откройте новую вкладку — мы скоро к этому подойдем.
Включение Google Assistant API
Есть несколько онлайн-настроек, которые вам нужно будет сделать, чтобы продолжить. Перейдите на веб-сайт API Google Assistant и нажмите « Включить» .
Проект также требует разрешения деятельности. Перейдите на панель управления действиями и убедитесь, что включены следующие действия:
- Активность в Интернете и приложениях (включая флажок Chrome History)
- Информация об устройстве
- Голосовая и звуковая активность
Теперь вы можете перейти к регистрации устройства.
Регистрация вашего Raspberry Pi
Вернувшись в консоль действий, выберите Регистрация устройства на левой панели. Под Product создайте легко запоминающееся имя для вашего устройства. Имя производителя не имеет значения (но должно быть там), и выберите « Авто» для типа устройства.
Нажмите Зарегистрировать модель и на следующем экране нажмите Загрузить учетные данные 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» и задайте вопрос. Вы можете увидеть вывод программы в терминале, услышав ответ:
Это оно! Теперь на вашем Raspberry Pi работает помощник Google. Обратите внимание, что если громкость звука немного мала, вы можете изменить его, сказав: «Привет, Google, увеличь громкость до 80%».
Бонус: Голосовая активация GPIO
Можно управлять светом с помощью Arduino и Siri , но есть более простой способ. Если вы настроили светодиод, вы можете использовать Google Assistant, чтобы управлять им своим голосом.
Настройка Google Assistant для работы с выводами GPIO относительно проста, но требует некоторых дополнительных шагов. Перейдите в Консоль действий Google и найдите свое устройство в разделе Регистрация устройства. Нажмите на нее и откройте меню черт:
Включите черту 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, попробуйте некоторые из лучших команд командам мы рассмотрели некоторые замечательные мини-игры