Рубрики
Проекты на Raspberry Pi

Умная колонка на основе Raspberry Pi и Google Assistant

Наверняка многие из вас задумывались об умной колонке (смарт-динамике), которой можно было бы управлять с помощью голоса. Одним из самых популярных подобных устройств является Amazon Echo, а у нас в России среди подобных устройств наиболее популярна домашняя станция с голосовым помощником (умная колонка) от Яндекса. Однако не последнее место в этом списке занимает и сервис Google Home, который также предоставляет расширенные функции голосового управления.

Различные голосовые помощники становятся все более популярными по мере того, как человечество все больше движется в сторону технологий интернета вещей (Internet of Things, IoT) и искусственного интеллекта (AI). Наверняка вы все слышали о таких голосовых помощниках как Google Assistant, Apple Siri и Amazon Alexa. Каждый из них основан на технологии искусственного интеллекта и имеет свою экосистему. В данной статье мы познакомимся с подобной экосистемой от Google. Компания Google уже выпускает свои умные колонки (smart speakers). Но в этой статье мы рассмотрим создание подобной умной колонки своими руками на основе платы Raspberry Pi и голосового помощника (ассистента) от Google (Google Assistant). Фактически, мы получим устройство, похожее на Google Home Speaker. Подобные умные колонки также еще называют смарт-колонками или смарт-динамиками.

Google обеспечивает нам API (программный интерфейс приложения), который можно использовать для создания «продвинутых» голосовых служб. Данный API имеет открытый исходный код и его можно скачать на Github. Используя голосовые сервисы Google, мы можем с помощью голоса проигрывать интересующую нас музыку, узнавать погоду, заказывать билеты и многое другое.

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress).
  2. Внешний динамик с разъемом 3.5mm.
  3. Любая веб-камера или микрофон с поддержкой USB 2.0.

Мы в этом проекте использовали веб-камеру – она имеет в своем составе встроенный микрофон.

Проверка микрофона веб-камеры на совместимость с Raspberry Pi

1. Откройте терминал Raspberry Pi и введите в нем команду arecord -l. В результате выполнения этой команды вы увидите все устройства, подключенные к плате Raspberry Pi, как показано на следующем рисунке.

Card 1 в данном случае – это и есть микрофон веб-камеры, который мы собираемся использовать. Если данная надпись не отображается на экране, значит что то не так:

  • веб-камера неисправна;
  • проблемы с соединением (физическим) между веб-камерой и платой Raspberry Pi;
  • веб-камера и плата Raspberry Pi несовместимы.

2. Теперь проверим работает ли микрофон, введя команду на воспроизведение аудио файла:

3. Чтобы воспроизвести записанный аудио файл, используем команду:

Если у вас к HDMI выходу платы Raspberry Pi подключен монитор, то умолчанию звук с платы также будет транслироваться через HDMI кабель и вы услышите его на встроенных динамиках монитора (если они у него есть). Но мы в данной статье будем использовать внешний динамик, подключаемый к разъему 3.5mm платы, поэтому чтобы переключить трансляцию звука с HDMI кабеля на разъем 3.5mm используем команду:

После этого перейдем в расширенные настройки (Advance option). Из списка этих опций выберите Audio, затем list -> select Force 3.5mm -> select Ok и затем перезагрузите вашу плату Raspberry Pi.

После выполнения этих настроек вы должны будете слышать звук из динамика, подключенного к разъему 3.5mm.

Примечание: если вы хотите увеличить или уменьшить уровень звука для микрофона введите команду alsamixer в терминале. Выберите звуковую карту (sound card) нажав F6. Нажмите F4 чтобы изменить коэффициент усиления микрофона (Mic dB gain), установите тот уровень, который вам необходим.

Если у вас не веб-камера, а USB 2.0 микрофон, то последовательность действий будет аналогична рассмотренной.

Установка Google API на Raspberry Pi

1. Вначале вам необходимо зарегистрироваться на Google Console Actions dashboard.

2. После того как зарегистрируетесь и войдете в свой Google аккаунт, вы должны увидеть следующее окно.

Нажмите в нем на Add/Import Project (добавить/импортировать новый проект).

3. В следующем окне вам необходимо ввести имя проекта (Project Name) и затем нажать на Create Project (создать проект).

4. Затем в новой вкладке браузера откройте Google developers console и выполните в ней поиск Google Assistant API. Убедитесь там в том, что выбран ваш проект, после чего поставьте галочку Enable. После этого нажмите кнопку Enable.

5. Теперь откройте предыдущую вкладку браузера с консолью Google и пролистайте ее до самого низа. Там вы найдете опцию Device Registration (регистрация устройства), нажмите на нее.

6. В следующем открывшемся окне нажмите на Register Model. После этого вам необходимо будет ввести Product Name (имя продукта), Manufacturer name (имя производителя) и установить Device Type (тип устройства). Эти имена вы можете ввести любыми, на свое усмотрение.

После этого запишите Device Model Id (идентификатор модели устройства) — он нам понадобится в дальнейшем, и нажмите на Register Model.

7. На следующем экране вам предложат скачать сертификат (Download Credentials). Чтобы скачать сертификат нажмите кнопку Download OAuth 2.0 credentials. Этот скачанный файл сертификата имеет очень важное значение, поэтому сохраните его в безопасном месте. Затем нажмите Next.

8. Далее можно задать некоторые особенности/характерные черты (traits) проекта, но мы не будем этого делать, поэтому нажимаем кнопку Skip.

9. После того как все будет сделано, вы должны увидеть следующий экран:

10. Далее необходимо открыть страницу с Activity Controls. На этой странице вам необходимо активировать следующие настройки (activity controls) чтобы удостовериться в том, что Google Assistant API будет работать корректно:
— Web & App Activity;
— Location History;
— Device Information;
— Voice & Audio Activity.

11. Далее снова переключитесь на Google developers console. Нажмите на ней на Credentials в левой стороне экрана. Нажмите на OAuth consent screen.

12. Введите свой адрес Email и любое имя в поле Product name и сохраните введенные данные.

На этом установка Google API закончена.

Установка Google Assistant для Raspberry Pi Google Home

Этот этап проекта нельзя выполнить подключаясь к плате Raspberry Pi по протоколу SSH, вам необходимо будет использовать встроенный в Raspberry Pi OS браузер.

1. Первым делом обновите программное обеспечение платы Raspberry Pi.

2. После этого нам необходимо создать файл, в котором мы сможем хранить ранее скачанный сертификат (credentials). Для этого выполните следующие команды:

3. В этот созданный файл необходимо скопировать содержимое файла с сертификатом (credentials file), который мы скачали ранее. Откройте .json в предпочитаемом вами текстовом редакторе, нажмите ctrl + A (выделить все) и затем ctrl + C чтобы скопировать содержимое файла.

После копирования содержимого файла сохраните файл нажав Ctrl + X, затем Y, затем Enter.

4. После сохранения файла с сертификатом мы установим некоторые дополнения, необходимые для работы с Google assistant.

Выполните следующую команду чтобы установить Python3 и Python 3 Virtual Environment на нашу плату Raspberry Pi.

5. После этого включим python3 в качестве нашего виртуального окружения (virtual environment) с помощью команды:

6. Установите последние версии pip и setuptools с помощью команды:

7. Чтобы активировать окружение python, выполните команду:

8. После этого установите библиотеку Google ассистента (Google Assistant Library) с помощью следующих команд:

На этом мы закончили процесс установки всех необходимых библиотек и дополнений.

Авторизация Raspberry Pi в Google Assistant

1. Сначала установим инструмент авторизации от Google (Google authorization tool) на нашу плату Raspberry Pi с помощью команды:

2. После этого необходимо запустить Google Authentication library (библиотеку аутоинтефикации). Это можно сделать с помощью следующей команды:

В результате этой команды будет сгенерирован URL, скопируйте этот URL и вставьте его в свой веб-браузер.

3. В своем браузере залогиньтесь в своем Google аккаунте, если у вас несколько таких аккаунтов, то выберите тот, в котором вы установили API ключ.

После входа в свой аккаунт вы увидите длинный авторизационный код (authentication code). Скопируйте этот код, вставьте его в окно термина и нажмите enter. Если ваш авторизационный код пройдет проверку, вы увидите строку, показанную на вышеприведенном рисунке, которая появится в командной строке.

4. Теперь наш авторизационный сертификат проверен, но Google все еще хочет проверить нас через pop дисплей. Но в настоящее он у нас заблокирован службой CORS (Cross-origin resource sharing, совместного использования ресурсов), поэтому нам необходимо отключить эту службу нижеприведенной командой.

Перед исполнением этой команды удостоверьтесь в том, что ваш браузер chromium закрыт, только после этого открывайте окно терминала и вводите команду. Эта команда запустит браузер chromium с отключенной службой безопасности CORS, поэтому не серфите в интернете пока эта служба отключена.

После открытия бразузера перейдите в предыдущее окно терминала, из которого вы устанавливали Google assistant.

5. После этого введите нижеприведенную команду чтобы запустить в первый раз Google assistant. В этой команде замените <projectid> на идентификатор (id) вашего проекта.

Если вы забыли Project ID (идентификатор вашего проекта), перейдите в Actions Console on Google, нажмите в ней на проект, который вы создали, затем нажмите на иконку с шестеренкой в левом верхнем углу экрана, затем нажмите на Project Settings.

Также замените <deviceid> на номер идентификатора вашего устройства (device ID), который вы получили ранее.

Эта команда откроет новую вкладку в браузере Chromium.

6. Теперь нажмите Enter в окне терминала чтобы можно было задать свой любой вопрос помощнику.

Когда вы введете свой первый вопрос, на экране может появиться следующая картина:

Нажмите на Continue -> I understand -> Allow. Если данный экран (картинка) не появилась, то значит все в порядке.

7. Теперь вы сможете задавать свои вопросы ассистенту Google и получать на них обоснованные ответы (отклики).

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

Вы можете отключить открытие новой вкладки удалив аргумент –display из вышеприведенной команды.

Использование Google Assistant в Raspberry Pi

Ранее мы успешно авторизовали Raspberry Pi в Google Assistant. Теперь всегда, когда вы хотите запустить Google Assistant, вам необходимо будет выполнить следующую последовательность шагов:

1. Выполнить команду для запуска окружения (environment) Google Assistant.

После этого вы будете видеть приглашение (env) в начале каждой строки.

2. Чтобы начать разговор с ассистентом (образец разговора, sample), выполните следующую команду:

В этот раз при выполнении данной команды нам уже не нужно вводить product id (идентификатор продукта) и device id (идентификатор устройства).

3. Также начать разговор с ассистентом Google можно сказав Ok Google. Чтобы это сделать вам необходимо ввести неправильный device id (идентификатор устройства). К примеру, в качестве device id вы можете ввести aaaa, abcd.

Выполните следующую команду:

Теперь вы можете спрашивать у Google assistant все что угодно просто сказав ему Ok Google.

Для того, чтобы превратить наш проект в умную колонку, необходимо подключить к плате Raspberry Pi динамик и микрофон.

Видео, демонстрирующее работу проекта

Источник статьи

2 ответа к “Умная колонка на основе Raspberry Pi и Google Assistant”

Честно говоря, не знаю, не пробовал пока собирать этот проект. Посмотрите в настройках Google Assistant — возможно, в нем уже появилась поддержка русского языка

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *