Raspberry яндекс станция своими руками

Умная колонка на основе 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. Теперь проверим работает ли микрофон, введя команду на воспроизведение аудио файла:

Источник

Голосовой ассистент на Raspberry Pi.

В этой статье я хочу рассказать о своем опыте изготовления голосового ассистента на RasPI.Всем кому интересно,прошу под кат.

Предисловие

В не столь далеком детстве во время просмотра фильма «Железный человек» у меня появилась маленькая мечта,сделать свой Джарвис с блекджеком и скриптами.И вот спустя 4 года я снова загорелся желанием,а наличие дома RasPI 3 выигранной в майском конкурсе только подстегнуло интерес и желание.

Начинаем

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

Нам понадобиться:

  • Звуковая карта с чипом от C-Media
  • Колонка
  • Микрофон
  • Raspberry Pi
  • Интернет соединение

и много,очень много свободного времени.

Шаг 1.Подготовим систему,установим софт

Подключаем звуковую карту со всей периферией

Логинимся в систему

У меня не получилось по хорошему заставить работать звуковую карту как нужно(Может я криворукий,может гайды в интернете старые) потому я наглым способом вырубил встроенный аудиочип

и добавляем строку

После этих махинаций запускаем команду

На экране должны увидит,что-то похожее на то,что на скрине с моей системы

Читайте также:  Как загнуть уголок своими руками

Также можно через GUI убедиться,что звуковая карта назначена по умолчанию

Для регулировки звука можно воспользоваться

Установим синтезатор речи

Перейдем в домашнюю директорию

Создадим конфиг Festival

и внесем в него эти строки

А теперь попробуем что нибудь сказать

От ввода команды до произношения обычно проходит от 5 до 30 секунд.Медленно,но довольно качественно.

Если услышали мужской голос из динамика,значит у нас все получилось

И модули для него

Шаг 2.Скриптовая часть

Для начала проверим,а работает ли у нас микрофон то вообще?

Говорим что нибудь 4 секунды.

Слышим себя?Если да,то все прекрасно.

Рекомендую создать отдельную директорию под проект.Я использовал имя ‘0’ (ноль)

Запишем основной и самый главный скрипт

Далее используя аудиозапись из прошлых шагов попробуем что либо распознать

Если на выводе уводили тот текст,что содержится в записи,то все успешно распозналось(У меня распознает все точно в 99% случаев)

и запускалку для этого скрипта

Прервать адский круг можно долгим зажатием CTRL+C

Шаг 3.Запускалка запускалки

Для удобства я сделал запускалку запускалки

Как можно понять из скриптов,то запускать основной наш скрипт будут только после «hi».Но вот беда,распознает оффлайн утилита очень-очень плохо.Я частично исправил положение наглым выпиливанием половины словаря программы.

А теперь нам придется попотеть.Удалим из словаря все не нужное.Кому лень это делать,может написать мне в лс,я скину файлик.

И вот после всего этого запускалка начала более менее по божески работать

В конец файла добавим

Шаг3.А вы верите в скрипты?

в директории 0 создадим еще одну

и создадим скриптик для того,чтобы нам по запросу говорили,какова погода на улице

Содержимое строки URL меняем на нужное вам местоположение с этого же сайта

Сделаем говорилку для этого скрипта

и наконец в скрипт 0.py добавим еще одно ветвление для IF

Вооот собственно и все пожалуй.Вопросы и пожелания можете написать в комментарии или личные сообщения,а также в вк(указано в профиле).Если напишите какой либо скриптик для этого управления,то тоже пишите,добавлю в статью с подписью вашего авторства.

Благодарности

Спасибо администрации Raspberrypi.ru

За помощь в создании проекта

Фото устройства в собранном виде

В дырочке спрятался микрофон 🙂

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

Автор:

Комментариев: 15

raspiman

Корпус зачётный! Копите на 3D-принтер, полезная в творчестве штука 🙂 P.S — а можете проверить, есть ли звук с этой звуковой карты при проигрывании видео через VLC, который собирался в этой статье — raspberrypi.ru/blog/632.html

Canabalt

Проверил, работает.Проверял .flac аудиозаписью. Корпус — это шедевр!)

Аудио понятное дело, что будет работать. Интересует именно момент с видео.

Аудио понятное дело, что будет работать. Меня тоже интересует именно момент воспроизведения звука в видео.

Canabalt

Разве есть разница? Аудио то он похоже через Alsa выводит. Буду снова собирать себе vlc и проверять.Отпишусь после проверки

Canabalt

sonoleo

Доброго времени суток. У меня проблемы с созданием файла .WAV через микрофон. Микрофон подключается через внешнюю ауди карту (специально для Raspberry). По команде arecord -l выдает pi@raspberrypi

$ arecord -l **** List of CAPTURE Hardware Devices **** card 0: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 А по команде: #arecord -B —buffer-time=1000000 -f dat -r 16000 -d 4 -D plughw:1,0 test.wav или #arecord -B —buffer-time=1000000 -f dat -r 16000 -d 4 -D plug:default test.wav Выдает ошибку: arecord: main:682: audio open error: No such file or directory. Файл test.wav создан заранее пустой. Была попытка указать имя не существующего файла — результат такой же. Предварительно я перешел в каталог: cd /home/pi/Voice тут сидят мои файлы. В чем может быть проблема?

Accente

Так. А вот эту канитель надо испробовать на Cubieboard.

Всем привет. У меня такой вопрос. Может Raspberry, при загрузке необходимых программ, работая автономно без компьютера, интернета, wi-fi, работать как голосовое общение с Raspberry еще и подключить какие нибудь выходные устройства, да и чтобы общение было на русском языке.

Читайте также:  Изготовление поролоновой приманки своими руками

cccp812

Здравствуйте, у меня возникла вот такая проблема:pi@raspberrypi:

/0 $ ./launcherarecord: main:722: audio open error: Нет такого файла или каталога184044Traceback (most recent call last): File «/usr/local/lib/python3.4/dist-packages/speech_recognition/__init__.py», line 651, in recognize_sphinx from pocketsphinx import pocketsphinxImportError: No module named ‘pocketsphinx’During handling of the above exception, another exception occurred:Traceback (most recent call last): File «z.py», line 17, in t = r.recognize_sphinx(audio) File «/usr/local/lib/python3.4/dist-packages/speech_recognition/__init__.py», line 653, in recognize_sphinx raise RequestError(«missing PocketSphinx module: ensure that PocketSphinx is set up correctly.»)speech_recognition.RequestError: missing PocketSphinx module: ensure that PocketSphinx is set up correctly.completedarecord: main:722: audio open error: Нет такого файла или каталогаstat: не удалось выполнить stat для «voice.wav»: Нет такого файла или каталогаподскажите пожалуйста, как решить?Спасибо.

cccp812

Здравствуйте, у меня возникла вот такая проблема:pi@raspberrypi:

/0 $ ./launcherarecord: main:722: audio open error: Нет такого файла или каталога184044Traceback (most recent call last): File «/usr/local/lib/python3.4/dist-packages/speech_recognition/__init__.py», line 651, in recognize_sphinx from pocketsphinx import pocketsphinxImportError: No module named ‘pocketsphinx’During handling of the above exception, another exception occurred:Traceback (most recent call last): File «z.py», line 17, in t = r.recognize_sphinx(audio) File «/usr/local/lib/python3.4/dist-packages/speech_recognition/__init__.py», line 653, in recognize_sphinx raise RequestError(«missing PocketSphinx module: ensure that PocketSphinx is set up correctly.»)speech_recognition.RequestError: missing PocketSphinx module: ensure that PocketSphinx is set up correctly.completedarecord: main:722: audio open error: Нет такого файла или каталогаstat: не удалось выполнить stat для «voice.wav»: Нет такого файла или каталогаподскажите пожалуйста, как решить?Спасибо.

valway

Попробуйте так: arecord -B —buffer-time=1000000 -f dat -r 16000 -d 4 -D plughw:0,0 voice.wav поиграйте с plughw:1,0

Добрый день. У меня Raspberry Pi 2, внешней звуковой карты нет. Установил festival, пробую тестовую команду echo «test» | festival —tts , получаю ошибку pipe_open: fork failed. После перезагрузки все-таки команда сработала, слово «test» я услышал). Но при попытке выполнить команду снова — та же ошибка ((. Что это может значить? Поверхностно «погуглив» толкового ответа не нашел. ps подскажите, почему такая пауза большая между вводом команды и произношением? Спасибо

Всем привет. Можете сказать сколько времени уходит после произношения команды до ее выполнения.

Источник

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit

Мы решили поделиться с Вами бюджетным готовым решением, надеемся Вы оцените наши старания. Решение проверенное, рабочее. Во вложении можно скачать все файлы программ и настройки. Отдаем все бесплатно.

Умный дом для заказчика в основном «игрушка» которым можно похвастаться перед друзьями, но эти игры стоят не малых усилий интеграторам!

Речь пойдет о некоторых проблемах и решениях, связанных именно с освещением в доме, как о неотъемлемом блоке «умного дома».

Проблема 1: Если система централизованная, то в случае сбоя центрального контроллера программа не может управлять реле включения света.

Решение: Использовать распределенные модули управления с внутренней логикой, по нашему опыту одним из самых зарекомендовавших себя устройств в этом — программируемое реле ПР200 производства компании ОВЕН. Советуем использовать версию 220в, т.к. бытовые выключатели рассчитаны именно на это напряжение и будет меньше проблем с логической «единицей» на дискретном входе.

Это устройство имеет 8 каналов (реле) которые можно запрограммировать с использованием внутренней логики (как распределенную систему), дополнительно подключаются еще модули расширения 2шт. по 8 каналов, но тут есть риск остаться без большего количество управляемых светильников при выходе из строя самого ПР200 (8 каналов против 24), если соберетесь экономить, подумайте!

Несмотря на то, что программу выглядит просто, к ней мы шли несколько лет не по своей вине, компания Овен относительно недавно (после появления ПР200) добавила возможность управлять сетевой переменной как с наружи, так и изнутри.

Подробнее о программе:

I8 – это дискретный вход с 8 выключателя в доме или комнате

RTRIG – детектор переднего, необходим для формирования единичного (на один цикл программы) импульса

TO INT – преобразования Bool в INT можно было бы и обойтись, но Slave сетевая переменная в Owen Logic не поддерживает bool.

Читайте также:  Как правильно сделать пирамиду своими руками

XOR – исключающее или, если на одном входе 1, то и выход 1, если на оба входа подать 1 выход обнулится, основной элемент программы, который решает по нажатию на выключатель включить или выключить свет.

Реле8 – входная и выходная сетевая переменная, как я и говорил выше с недавнего времени можно использовать эти две переменные с одним регистром (адресом) Modbus, это нам дает возможность сохранить в нее необходимое нам состояние как снаружи, так и внутри без использования различных триггеров. Эти сетевые переменные имеют энергонезависимую память, поэтому при скачке напряжения освещение вернется в последнее состояние.

TO BOOL – конвертируем INT в BOOL значение, потому как реле на выходе имеет состояние False/True.

Шаг 1: программу для 8 каналов можно скачать по ссылке в конце статьи и залить в программируемое реле, не забудьте сменить целевую платформу для своей версии ПР200/110 иначе прошить устройство не удастся!

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

Решение 1: Использовать готовые кнопки без фиксации, которые есть у большинства производителей выключателей таких как Shneider, Biticino, ABB и др. (рекомендованное решение, хоть кнопки в одном положении и включенных и выключенных ламп это выглядит эстетически красиво)

Решение 2: Отлавливать в ПР200/110 изменение состояния входа при использование типичного бытового выключателя с фиксацией и дальше посылать импульс программе которую скачали выше, если свет был включен то он погаснет и наоборот (не рекомендуется, т.к. через некоторое время все кнопки будут перепутаны верх и низ)

Проблема 3: верхний уровень у большинства производителей систем умного дома не дотягивает до эстетического и функционального совершенства.

Решение: используем HomeKit от Apple, которое: функционально, удобно и есть голосовое управление.

Шаг 2: стыкуем ПР200/110 с HomeKit

Для этого необходимы следующие инструменты:

Решение рекомендованное для демонстраций:

Raspberry Pi 2/3/4 и к нему usb конвертер rs485 (например с Alliexpress)

Решение рекомендованное для инсталляций на базе модуля Raspberry CM3+ в промышленном исполнении c 2 двумя встроенными RS485 портами:

Подключите Ваше устройство на базе Raspberry к питанию и домашней сети желательно патчкордом, а не по wifi.

Соедините RS485 порт Вашего устройства и ПР200/110.

Далее определите IP адрес который выдал Ваш роутер и подключитесь по SSh например через программу PUTTY (по умолчанию логин pi пароль raspberry)

Установите программный продукт node-red для стыковки протокола HomeKit на верхнем уровне и Modbus Rtu на нижнем, смотри инструкцию по установке тут.

Не забудьте сделать Ваш node-red сервисом для автозагрузки.

Установите пакет HomeKit и modbus для node-red

Ждем перезагрузки и переходим в браузер «ВАШ IP»:1880 (например 192.168.1.110:1880)

Копируем следующий поток (код в конце статьи) и вставляем в веб интерфейс «движка» правил node-red

Заходим в Menu -> import -> вставляем код потока

Необходимо применить поток нажав на кнопку Deploy

В случае неудачи советуем правильно указать RS485 порт в настройках Modbus плагина «Запрос модбас» и «Write Reset FC6» (пример /dev/ttyUSB0).

Для достоверности перезагрузите Ваше устройство SSH à sudo reboot

Шаг 3. Настройка приложения на Вашем Apple устройстве довольно простая.

Даем имя нашему дому по желанию, в нашем примере ПР200

Добавляем и соглашаемся использовать несертифицированный аксессуар

Вводим код доступа, в нашем случае 111 11 111, его можно заменить в настройках Node-red в каждом из аксессуаров HomeKit

Добавляем все наши лампы в комнаты, это можно сделать позже.

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

Мы не агитируем к коммерческому использованию протокол HomeKit, любые действия противоречащие лицензионному соглашению APPLE по использованию протокола HomeKit разработчик берет на себя!

Программу для ОВЕН ПР200 и скрипт для NodeRed можно бесплатно скачать тут.

Источник

Оцените статью