Как сделать умную колонку своими руками
Будь в курсе последних новостей из мира гаджетов и технологий
iGuides для смартфонов Apple
Как самому собрать умную колонку с поддержкой Google Assistant

Александр Кузнецов — 5 мая 2017, 15:02

Компания Google выпустила конструктор Voice Kit, с помощью которого можно создать домашнюю умную колонку с поддержкой сервиса Google Assistant и распознаванием голоса через Google Cloud Speech API.
Voice Kit распространяется бесплатно вместе с журналом MagPi, который издаёт компания Raspberry Pi и где рассказывается о всевозможных устройствах, созданных на базе её компьютерных плат. Конструктор создавался Google в сотрудничестве с инженерами Raspberry Pi. Приобрести Voice Kit отдельно можно будет в американской сети магазинов Barnes & Noble, а также в Великобритании у WH Smith, Tesco, Sainsburys и Asda. Возможно, через какое-то время он появится в продаже на Ebay и других онлайн-барахолках.

В комплекте Voice Kit содержится не всё необходимое для сборки умной колонки, пользователю потребуется компьютер Raspberry Pi 3. Он продаётся отдельно: в США его сейчас можно купить на Amazon за 36,81 доллара (примерно 2150 рублей), а в России он, например, есть в магазинах DNS, хотя и стоит заметно дороже — 3599 рублей.
При наличии Raspberry Pi 3 собрать умную колонку можно всего за несколько минут. В коробке помимо динамика, стереофонического микрофона и логической платы находятся кабеля, крепления и даже картонный корпус. При желании можно самостоятельно собрать корпус из другого материала — например, напечатав его из пластика на 3D-принтере.

Voice Kit отличается от колонки Google Home. Голосовое распознавание на самосборной колонке работает не постоянно — оно активируется нажатием на специальную кнопку. Если вы не опасаетесь, что Google может вас прослушивать, эту кнопку можно исключить из цепи, тогда колонка будет постоянно активна. Кроме того, этот гаджет совместим с операционной системой Android Things, благодаря чему его можно связать с устройствами категории «интернет вещей». Различные варианты сборки и настройки можно найти в инструкции к Voice Kit.
Конструктор Voice Kit — первый проект Google, выпущенный в рамках новой экспериментальной инициативы AIY Projects. Вероятно, Google будет и дальше выпускать подобные конструкторы с поддержкой различных сервисов.
Гаджеты Google и многое другое вы можете купить у наших друзей из Big Geek. Скидка по промокоду iGuides
Можно ли сделать умную колонку из обычной, подключив ее к Android-смартфону
Я скептически отношусь к умным колонкам. И главная моя претензия не столько в самой концепцией общения с воображаемым другом, сколько в цене подобных устройств. Самая дешевая Яндекс Станция Лайт с 5-ваттным динамиком стоит 4 990 ₽, в то время как за эти же деньги можно купить 10 китайских Bluetooth-колонок с аналогичным качеством звука. Спрашивается, зачем платить больше, если можно сделать умную колонку, подключив дешевый спикер к своему смартфону?

Разберемся, может ли обычная колонка, подключенная к смартфону с голосовым ассистентом, считаться умной
Ведь что собой представляет умная колонка? По сути, это самое обычное аудиоустройство, только с голосовым ассистентом, для работы которого требуется подключение к интернету. А раз виртуальный помощник есть на Android, то у нас без труда получится сделать умную колонку из обычной, настроек ее сопряжение с телефоном. Но так ли это на самом деле, и может ли простой китайский ширпотреб заменить Яндекс Станцию или VK Капсулу?
⚡ Подпишись на AndroidInsider в Дзене, чтобы получать новости из мира Андроид первым
Как сделать умную колонку из блютуз-колонки
Прежде всего нам нужно настроить голосовой помощник на телефоне. На устройствах с операционной системой Android в качестве такового по умолчанию выступает Google Ассистент. Если при первом включении смартфона вы не настроили команду «ОК, Google», то сделайте следующее:
- Запустите приложение Google.
- Нажмите на иконку своей учетной записи и откройте настройки.
- Перейдите в раздел «Google Ассистент», а затем — «Voice Match».
- Активируйте функцию «Hey Google».

После включения этой опции ассистент будет откликаться по команде «ОК, Google»
Также в настройках приложения Google надо убедиться, что включена работа ассистента на заблокированном экране. Она позволит нам не прикасаться к смартфону для вызова голосового ассистента. Что еще осталось? Правильно, нужно подключить колонку к телефону:
- Включаем блютуз-колонку.
- Открываем настройки Bluetooth на смартфоне.
- Включаем блютуз и жмем на название своей колонки.
- Подтверждаем сопряжение.

Неужели колонка поумнела?
Ну все: умная колонка готова. Теперь через ассистента Google можно узнать погоду и даже позвонить кому-нибудь из своей телефонной книги. При этом Android-устройство должно находиться в непосредственной близости, ведь именно оно оснащено железом, способным обрабатывать запросы.
❗ Поделись своим мнением или задай вопрос в нашем телеграм-чате
Аудиоустройство лучше подключить к источнику питания. А если в вашем доме завалялся старый смартфон, его тоже можно поставить на вечную зарядку, чтобы умная колонка своими руками всегда была готова общаться с пользователем. Круто же?
Как сделать умную колонку с Алисой из обычной
Если вы решите сделать умную колонку с Алисой, то столкнетесь с одной неприятной особенностью этого голосового ассистента. Настройки Android не позволят ему работать на заблокированном экране, то есть без прикосновения к смартфону.

И все-таки не Яндекс Станция, правда?
Либо устройство должно постоянно лежать с активным экраном, либо вам придется вызывать ассистента вручную. О том, как включить Алису на телефоне, мы рассказывали в отдельном материале. Это же касается любого другого голосового ассистента.
Что умеет умная колонка
Если все так замечательно, то зачем нужна умная колонка? На самом деле, подключив блютуз-устройство к смартфону, мы не наделили его интеллектом. Мало того, что все запросы обрабатываются средствами операционной системы Android, так еще сам голосовой помощник адаптирован только для работы на телефоне.
Загляни в телеграм-канал Сундук Али-Бабы, где мы собрали лучшие товары с АлиЭкспресс
Вот вам простой пример. Если вы спросите у ассистента, как приготовить борщ, то он введет соответствующий запрос в браузере, а вся поисковая выдача отобразится на экране смартфона и не будет озвучена. Это касается всех обращений. Спросили о погоде или просто поинтересовались, как дела у вашего виртуального друга, — получили ответ не только голосом, но и текстом. А чтобы закрыть диалоговое окно, все равно придется коснуться смартфона.

Ассистент все равно думает, что его вызывают со смартфона
Яндекс Станция Лайт и любая другая умная колонка на просьбу помочь с приготовлением какого-нибудь блюда озвучит заготовленный шаблон или информацию из интернета. При этом вам не придется прикасаться ни к ней, ни к смартфону. Такое управление можно в полной мере называть голосовым.
То есть мы не сделали из обычной колонки умную, а просто заменили динамик смартфона на более мощный спикер. Пользоваться подобной комбинацией устройств неудобно, а потому смысл покупать умные колонки, был, есть и будет. Даже с учетом невысокого качества звука, предлагаемого за такие деньги. Все-таки эти устройства предназначены для взаимодействия с головым ассистентом, а не для прослушивания музыки.
- Новичкам в Android
- Приложения для Андроид
- Умный дом
- Яндекс Алиса
Я сделаю свою «умную» колонку… «with blackjack and hookers!»
Привет всем. В данной статье я расскажу историю как мы с двоюродным братом сделали свою «умную» колонку.
На самом деле никакая она неумная, грубая и не особо полезная, но зато весёлая и с характером.
За мной сама идея, программирование, железо (подбор и настройка).
От брата 3D-модель, 3D-печать, железо (подбор и электромонтаж).
Статья по-большей части описывает то, что делал я, лишь немного касаясь 3D-модели.
«Ты на самом деле хочешь дружить с роботом?»
Будучи большим фанатом известного мультсериала «Футурама», однажды (где-то в 2018 году) мне захотелось заиметь самодельную голову робота Бендера Родригеса. В голове, в том числе крутились дурацкие варианты сделать её из какой-нибудь кастрюли. В силу своей глупости идея была забыта и заброшена ровно до того момента пока у одного хорошего человека, моего брата, товарища xbost’а не появился 3D-принтер (весна 2019 года). И тут эта идея снова ожила…
Обсудив эту идею за пивом, принялись за работу. Брат начал делать 3D-модель, а я искать, что из электронного хлама в ящике стола можно задействовать в проекте.
К тому моменту, у меня уже несколько лет валялась без дела плата Intel Galileo Gen2. И было желание задействовать её в этом проекте. Изначально никаких «умных» функций не планировалась, просто запихнуть её в корпус вместе с динамиком и светодиодами, вытащить кнопочку, при нажатии на которую воспроизводились бы цитаты из серий и светились диоды.
В то же время вокруг буйным цветом расцветали (и продолжают расцветать сейчас) умные колонки с голосовыми ассистентами. Они вежливы (Алиса правда хамовата), достаточно много всего умеют и не работают без Интернета. И по мне достаточно скучны.
Это привело к мысли, что на основе Бендера с его вредным, эгоистичным и вообще отрицательным характером можно сделать для себя отличную «умную» колонку. Этакий арт-проект, протест против умных колонок. И обязательно работающую оффлайн, даже ценой производительности.
Первые попытки
Почитав о системах распознавания речи с возможностью оффлайн-распознавания, а также узнав, что ещё один хороший человек, коллега с прошлой работы, в то время писавший диплом, использует CMU Sphinx, выбор был остановлен на нём.
В силу своей природной… хм… невнимательности, я упустил существование более подходящей для моей задачи версии – pocketsphinx, и начал с «большого» CMU Sphinx на Java.
Создал простенькие JSGF-грамматику и программу на Яве. Взял несколько наиболее известных цитат для проигрывания(“with blackjack and hookers”, “bite my shiny metal ass”, “kill all humans” и т.п.). Пробовал изначально на достаточно мощном компьютере(MacBook Pro 13-го года), был доволен результатом производительности, но понимал, что на Галилео меня ждёт нечто другое. Но дело оказалось совсем плохо.
Вообще Галилео уже давно заброшен Интелом. Стандартный Линукс, шедший с ним мне в принципе особенно не нравился. Поэтому попробовал с последней доступной для него сборкой Дебиан.
Туда с проблемами(подробности уже честно не вспомню) был поставлен JRE. В качестве устройства ввода/вывода аудио была использована USB-гарнитура. И… Результат был крайне печален в плане производительности. Сейчас опять же не вспомню, возможно неправильную акустическую модель использовал на ней, но на реакции уходило 30-60 секунд. Плюс брат начал разрабатывать 3D-модель, и сказал, что габариты Галилео большеваты. Плюс отсутствие встроенного Wi-Fi. В общем Галилео опять отправилась в стол.
Решено было попробовать на гораздо более популярной Малинке, и выбор пал на слабую, но самую компактную версию Raspberry Pi Zero W. А также, прокачав внимательность, узнал о pocketsphinx (отличная статья для старта), перешёл на него, и переписал программу на Питоне.
При переходе на Малину, с подачи xbost’а, родилось название для проекта – Pinder (Raspberry Pi + Bender). Да, я прекрасно помню историю с Pidora в русскоязычном сегменте, но в данном случае намеренно выбрал такое лулзовое для русского уха название.
И так предыстория завершена, можно переходить непосредственно к описанию Пиндера.
Внутренняя железная часть
Перечень использованных компонентов:
- Raspberry Pi Zero W – собственно основа всего.
- UPS-Lite for Raspberry Pi Zero Маленький ИБП для Малинки. Его штатный выключатель был выпаян, и к его контактам был припаян микропереключатель (см. далее по списку).
- RGB адресная светодиодная лента на WS2812B, 60 светодиодов на 1 метр Для подсветки и анимации «зубов»(18 штук) и глаз(2 штуки).
- USB-аудиокарта В принципе подойдёт любая, работающая в Линуксе. Подключается через OTG-кабель в единственный доступный для этого порт на Малине Зеро.
- Усилитель и один динамик от таких колонок В общем тут колхозный вариант был использован. Колонки были раздербанены, взят один динамик, усилитель вытащен из корпуса. Можно было купить отдельный усилитель и динамик, но для меня самым быстрым вариантом было тогда купить эти колонки и разобрать на части.
- Микрофон HBC10A Но во время разработки поначалу использовался микрофон от телефонной гарнитуры Philips.
- Микропереключатель с лапкой KLS7-KW10 Замыкается/размыкается при вставлении/вынимании «антенны» Бендера. Включает/выключает питание от UPS к Малине.
- 3,5мм разъём и гнездо jack. Для подключения микрофона к аудиокарте (микрофон находится наверху Бендера, в антенне).
В общем внутри всё достаточно колхозно.
Схема подключений очень простая:

Глаза сидят на отдельном пине от зубов и запараллелены между собой. Если бы делал сейчас, то включил бы глаза на одну ленту вместе с зубами, но что уже сделано, то сделано.
3D-модель, корпус
Здесь я не смогу рассказать многого, так как эта часть работы полностью брата.
3D-модель и небольшая инструкция доступны здесь.
Зубы и глаза напечатаны фотополимерной смолой на Anycubic Photon. Все остальные части PLA на Creality Ender 3.
Если будут какие-то вопросы по 3D-модели и печати можно задать мне, я их передам, либо попробовать напрямую спросить у xbost’а на thingiverse (но не уверен будет ли он на них отвечать).
Краткая схема сборки:

Фото
Фото в процессе сборки и полностью собранном виде:






Программная часть 1
В качестве ОС используется штатный Raspbian (теперь Raspberry Pi OS).
За распознавание, как уже писалось выше, отвечает pocketsphinx. В качестве аудиоподсистемы используется Alsa (Pulseaudio выпилен).
При разработке никакими лучшими практиками не руководствовался, поэтому код «попахивает».
Поддерживается два языка: английский и русский. Для каждого языка своя JSGF-грамматика, набор аудио-сэмплов(сэмплов в репозитории нет, по соображениям авторских прав) и синтез речи. Русский дорабатывался(и дорабатывается) с некоторым опозданием.
Основной целью была просто возможность отвечать фановыми фразами из серий. Задаешь ему вопросы типа “Как дела?”, “Где ты родился?”, “Что думаешь о Сири?”. Ищется и воспроизводится ответ из сэмплов (в случае отсутствия сэмпла используется синтез речи, но об этом чуть позже).
Изначально скорость ответов на Малине была не очень шустрой (4-6 секунд до ответа):
Покопавшись у себя в коде, были найдены и уничтожены необязательные паузы. То же самое касалось и сэмплов (были пустые места вплоть до 1 секунды в начале файлов). А также прочитана информация о параметрах оптимизации pocketsphinx. Получилось уже получше:
Далее начал добавлять кое-какие полезные функции. Первой стала проигрывание музыки с локальной ФС или интернет-радио с помощью MPD. При этом докричаться до Бендера при проигрывании музыки на приличной громкости сложновато:
После достаточно долгого перерыва, живя на даче, была добавлена первая функция “умного дома”- управление освещением в своём углу через ModBusTCP. Вот только Бендера недостаточно иногда просто попросить включить свет, нужно обязательно сказать «пожалуйста». Работает достаточно шустро:
Программная часть 2
Потом однажды захотелось добавить читалку RSS-новостей. Это уже было невозможно без синтеза речи, но при этом хотелось, чтобы синтезатор звучал как, или хотя бы похоже на голос Бендера. Такой синтез речи на Малине Зеро представляется малореальным и поэтому в этом моменте пришлось сдаться и задействовать онлайн-сервис.
Почитав информацию и попробовав разные варианты остановился на Microsoft Azure Custom Speech.
При создании пользовательского голоса на выбор есть три варианта:
- Statistical Parametric – стандартное качество, нужно небольшое количество(для английского языка) сэмплов для обучения.
- Concatenative – высокое качество, нужно 6000 сэмплов для обучения.
- Neural премиум-качество. По факту недоступно(доступно из США, при написании челобитной в Майкрософт зачем тебе это нужно и выкладывании 100 000$).
Более подробно по технологиям синтеза речи можно почитать например на Википедии.
У меня не было большого количества сэмплов, поэтому сначала поигрался со Statistical Parametric. Результат был неплох, голос конечно не был похож(такой тип синтеза для сильной похожести и не предназначен), но интонации передавал сносно. В итоге на основе набора данных созданного с помощью этой модели я создал оффлайновую модель для CMU Flite, используемую в случае отсутствия связи с MS Azure.
Но всё же хотелось большей похожести и я решился попробовать собрать 6000 сэмплов для Concatenative модели, использующей отрывки из сэмплов настоящего голоса. Очень помог некий хороший человек, выложивший на YouTube 7 видео The Best of Bender. Надёргав оттуда сэмплов, приплюсовав к ним те что уже были и натравив на них майкрософтовский же Text-to-Speech (здесь у меня набор тулзов вспомогательных), получил что-то около 2000 транскрибированных сэмплов. Было принято решение просто скопировать это всё три раза под разными именами, чтобы получить 6000.
В итоге всё это было залито на обучение модели, и результат получился следующим:
Да конечно не идеально, но меня результат трудов устроил.
В итоге синтез речи используется не только для чтения новостей, но и в случае отсутствия оригинального сэмпла. Сначала ищется сэмпл. Если его нет, проверяется связь с порталом MS Azure, если есть – синтезируется с помощью него. Если же связи с Azure нет – используется локальная модель Flite(а для русского языка роботизированный голос eSpeak).
В сумме периодическими волнами и рывками разработка шла с весны 2019-го по весну 2020-го, в свободное время(хорошо видно по коммитам на гитхабе). Далее уже даже не волнами, просто отдельными всплесками.
Будущее
Как таковых планов развития проекта нет. Если появляется желание и вдохновение, то добавляю что-нибудь. Так конечно напрашивается сделать режим просто болталки на нейронке, обученной на фразах Бендера. Ещё возможно добавить режим bluetooth-колонки(и чтобы зубы загорались синим в этом режиме) и приложение для смартфона, для активации схемы патриотизма.
Но для начала надо изобрести удлинитель пальца.
Заключение
Исходный код ПО и 3D-модель выложены под открытыми лицензиями, так что если у кого-то есть желание сделать своего Бендера, добавить свои функции и улучшить – буду рад.
На этом статья подошла к концу. Спасибо, что прочитали!
СДЕЛАТЬ ЯНДЕКС СТАНЦИЮ С АЛИСОЙ ИЗ ОБЫЧНОЙ КОЛОНКИ | АЛИСА ИЗ ОБЫЧНОЙ БЛЮТУЗ КОЛОНКИ

ЕСЛИ НУЖНА ПРОГРАММА — ПИШИ МНЕ В ИНСТАГРАММ Смотри больше распаковок, ремонтов и новинок на моём YouTube и ТикТок канале. Ведь я мастер и я знаю что делать в любой ситуации! ПРИСОЕДИНЯЙСЯ И ПОДДЕРЖИ МЕНЯ ТУТ: Тик Ток — https://www.tiktok.com/@osipov_offici . YouTube — https://www.youtube.com/c/OsipovMusic Инстаграм — https://www.instagram.com/osip.off21 Группа ВК — https://vk.com/osipov_off Автор ВК — https://vk.com/osipofff
Показать больше
Войдите , чтобы оставлять комментарии.
