Голосовые помощники быстро стали обычным явлением. Во многих домах есть Alexa или Google Home, которые контролируют все, от освещения до медиа и даже хронометража.
Технология, на которой работают эти устройства, доступна — по крайней мере, частично — каждому. Google Assistant SDK позволяет использовать службу на ваших собственных устройствах. Из этого туториала Вы узнаете, как настроить Google Assistant на вашем Raspberry Pi и как голосовой активировать светодиод через контакты GPIO.
Оборудование, необходимое для Raspberry Pi Home Assistant
Тебе понадобится:
- Raspberry Pi со свежей установкой Raspbian на SD-карту
,
- USB веб-камера или микрофон.
- Внешний динамик.
- Схема из учебника Pi LED
(необязательный)
- Браузер вошел в вашу учетную запись Google.
Замечания: Оборудование для этого урока может несколько отличаться. Я использовал запасную веб-камеру USB исключительно для ее микрофона. Любая совместимая веб-камера или микрофон должны работать хорошо, и есть большой список Pi-совместимых устройств, чтобы помочь.
Кроме того, я использую 3,5 мм выход для аудио. HDMI и другие источники вывода также будут работать, хотя для этого потребуется изменить настройки звука, приведенные ниже.
Подключите веб-камеру USB и динамик и настройте светодиодную цепь, если вы ее используете.
Настройка звука
Этот учебник может следовать непосредственно на Pi или через соединение SSH с Pi.
Оба способа начинаются в терминале, чтобы проверить настройки звука. Используйте команды арекорд -l а также aplay -l перечислить доступные устройства.
На изображении выше показана веб-камера USB в виде карта 1 а также устройство 0. Запишите номера карт и устройств для выхода на микрофон и динамик.
Теперь, убедившись, что вы находитесь в / Главная / пи каталог, создайте новый файл и откройте его в nano:
sudo nano .asoundrc
Содержимое этого каталога будет отличаться в зависимости от того, какие номера карт и устройств вы используете. Здесь вы можете выбрать выход HDMI, а не 3,5 мм, если хотите.
Когда вы ввели свою версию вышеуказанного кода, нажмите Ctrl + X сохранить и выйти.
Проверьте свои настройки, записав и воспроизведя короткий клип:
Необязательный шаг: Если вы хотите изменить громкость входа вашего микрофона, откройте alsamixer и нажмите F6 цикл между устройствами.
Это оно! Звук настроен.
Создание проекта Google
Откройте браузер Pi, или, если вы подключены через SSH, откройте браузер локально. Перейдите к консоли действий Google и нажмите Новый проект.
Это может занять несколько минут. Когда закончите, оставьте окно активным и откройте новую вкладку — мы скоро к этому подойдем.
Включение Google Assistant API
Для продолжения необходимо внести несколько изменений в Интернете. Перейдите на сайт API Google Assistant и нажмите включить.
Проект также требует разрешения деятельности. Перейдите на панель управления действиями и убедитесь, что включены следующие действия:
- Web Активность приложения (включая флажок Chrome History)
- Информация об устройстве
- Голосовая и звуковая активность
Теперь вы можете перейти к регистрации устройства.
Регистрация вашего Raspberry Pi
Вернувшись в консоль действий, выберите Регистрация устройства с левой панели. Под Товар создать легко запоминающееся имя для вашего устройства. Название производителя не важно (но должно быть там), и выберите Авто для типа устройства.
Нажмите Регистрация модели, и на следующем экране нажмите Загрузить учетные данные OAuth 2.0. Это загрузит файл JSON на ваш компьютер. Если вы не знакомы с файлами JSON, не беспокойтесь, но изучите, как использовать JSON
стоит делать на будущее!
Официальное руководство Google рекомендует переместить файл в / Главная / пи, поэтому откройте файловый менеджер и сделайте это сейчас.
Дополнительный шаг для пользователей 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 и перейдите к / Главная / пи. Войти ls -l перечислить файлы в каталоге. Вы должны увидеть переданный секретный файл JSON клиента.
Установка SDK
Google рекомендует работать в виртуальной среде Python. Создайте новую виртуальную среду под названием окр.
Если вы никогда не делали этого раньше, этот учебник поможет вам научиться использовать виртуальные среды 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. Скопируйте следующий код авторизации и вставьте его обратно в окно терминала.
Вы должны получить подтверждение чтения Сохраненные учетные данные: / home / pi…, Это означает, что Pi успешно авторизован с вашей учетной записью Google.
Тестирование
Теперь, когда все готово, пришло время протестировать ваш Pi Google Assistant. Запустите помощника с помощью этой команды:
googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model
Вам нужно будет заменить мой-DEV-проект с вашим идентификатором проекта (находится под зубчатым колесом настроек консоли действий). Ваш Устройство-модель-идентификатор отображается в разделе «Регистрация устройства» консоли действий.
Попробуйте! Скажите «ОК Google» и задайте вопрос. Вы можете увидеть вывод программы в терминале, услышав ответ:
Это оно! Google Assistant теперь работает на вашем Raspberry Pi. Обратите внимание, что если выходная громкость немного мала, вы можете изменить его, сказав «Эй, Google, увеличь громкость до 80%».
Бонус: Голосовая активация GPIO
Можно управлять светом с помощью Arduino и Siri, но есть более простой способ. Если вы настроили светодиод, вы можете использовать Google Assistant, чтобы управлять им своим голосом.
Настройка Google Assistant для работы с выводами GPIO относительно проста, но требует некоторых дополнительных шагов. Зайдите в Консоль действий Google и найдите свое устройство в разделе Регистрация устройства. Нажмите на него и откройте меню черт:
Повернуть Вкл выкл нажмите и нажмите Сохранить.
Теперь убедитесь, что вы находитесь внутри окр В виртуальной среде клонируйте версию 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)
Эта логика управляет светодиодом, но пока он не настроен на вывод. Установите его в главный() Функция до вызова метода 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 также помогает в изучении основ Python.
Используя этот учебник, вы можете связать PI Assistant с другими проектами Raspberry Pi DIY.
и создай себе голосовой умный дом!