Как создать систему голосового управления на базе Arduino. Какие компоненты нужны для распознавания речи. Как настроить и запрограммировать модуль распознавания голоса. Какие возможности дает голосовое управление техникой.
Что такое голосовое управление Arduino и зачем оно нужно
Голосовое управление Arduino позволяет управлять различными устройствами и системами с помощью голосовых команд. Это открывает широкие возможности для создания «умных» вещей и автоматизации:
- Управление освещением, бытовой техникой, системами «умного дома»
- Голосовой ввод команд в различные устройства
- Создание голосовых помощников и ассистентов
- Системы безопасности с голосовой идентификацией
- Голосовое управление роботами и механизмами
Главное преимущество голосового управления — удобство и естественность для человека. Не нужно нажимать кнопки или использовать пульты, достаточно отдать голосовую команду.
Какие компоненты нужны для создания системы голосового управления
Для создания базовой системы голосового управления на Arduino потребуются следующие компоненты:

- Плата Arduino (Uno, Nano, Mega и др.)
- Модуль распознавания голоса (например, VR3 или EasyVR)
- Микрофон (электретный или с усилителем)
- Динамик для воспроизведения ответов (опционально)
- Реле или другие исполнительные устройства
- Провода, макетная плата, источник питания
Ключевым элементом является модуль распознавания голоса. Он принимает звуковой сигнал с микрофона, анализирует его и выдает распознанные команды на Arduino для дальнейшей обработки.
Обзор популярных модулей распознавания голоса для Arduino
На рынке представлено несколько модулей распознавания голоса, совместимых с Arduino:
1. Voice Recognition Module V3 (VR3)
Один из самых доступных и популярных модулей. Основные характеристики:
- До 15 голосовых команд
- Точность распознавания до 99%
- Интерфейс UART
- Встроенная библиотека для Arduino
- Цена около $15
2. EasyVR 3
Более продвинутый модуль с расширенными возможностями:
- До 32 пользовательских команд
- Встроенные команды на 26 языках
- Возможность синтеза речи
- Интерфейсы UART и SPI
- Цена около $50
3. Grove Speech Recognizer
Модуль от Seeed Studio для быстрого прототипирования:
- До 22 голосовых команд
- Plug-and-play с Arduino
- Встроенный микрофон
- Цена около $25
Для большинства любительских проектов оптимальным выбором будет модуль VR3 благодаря невысокой цене и достаточному функционалу.
Подключение и настройка модуля распознавания голоса
Рассмотрим процесс подключения и настройки на примере популярного модуля Voice Recognition V3:
- Подключите модуль к Arduino по UART:
- VCC — 5V
- GND — GND
- TXD — RX (pin 0)
- RXD — TX (pin 1)
- Подключите микрофон к разъему модуля
- Загрузите библиотеку VoiceRecognitionV3 в Arduino IDE
- Откройте пример «vr_sample_train» для обучения модуля командам
- Запустите скетч и следуйте инструкциям для записи 7 команд
- После обучения загрузите скетч «vr_sample_control» для проверки работы
Теперь модуль готов распознавать заданные голосовые команды и передавать их в Arduino для дальнейшей обработки.
Программирование системы голосового управления на Arduino
После настройки модуля можно приступать к программированию основной логики работы. Вот пример простого скетча для управления светодиодом голосом:
«`cpp #includeВ этом примере мы используем две голосовые команды — «включить» и «выключить» для управления встроенным светодиодом Arduino. При распознавании соответствующей команды светодиод включается или выключается.
Возможности применения голосового управления в проектах
Голосовое управление Arduino открывает широкие возможности для создания интересных проектов:
- Умный дом с голосовым управлением освещением, климатом, бытовой техникой
- Голосовой помощник для людей с ограниченными возможностями
- Системы безопасности с голосовой идентификацией
- Управление роботами и механизмами голосом
- Голосовой ввод для различных устройств и гаджетов
- Интерактивные игрушки с голосовым управлением
Ограничением является только ваша фантазия! Голосовое управление можно интегрировать практически в любой проект на базе Arduino.
Советы по улучшению качества распознавания голоса
Чтобы добиться максимальной точности распознавания голосовых команд, следуйте этим рекомендациям:
- Используйте качественный микрофон с усилителем
- Размещайте микрофон ближе к источнику звука
- Минимизируйте фоновые шумы в помещении
- Четко произносите команды при обучении модуля
- Используйте команды, отличающиеся по звучанию
- Настройте чувствительность модуля распознавания
- При необходимости используйте алгоритмы шумоподавления
Экспериментируйте с настройками и расположением компонентов, чтобы найти оптимальную конфигурацию для вашего проекта.
Заключение
Голосовое управление Arduino — это мощный инструмент для создания интерактивных проектов. С его помощью можно сделать взаимодействие с техникой более естественным и удобным. Хотя настройка системы распознавания голоса требует некоторых усилий, результат определенно стоит того.
Начните с простых проектов вроде голосового управления светодиодом, а затем постепенно усложняйте задачи. Комбинируйте голосовое управление с другими технологиями, чтобы создавать действительно впечатляющие устройства. Удачи в ваших творческих экспериментах!
Голосовое управление своими руками » Сделай сам своими руками
Привет друзья. Сегодня я хочу рассказать и показать Вам свою самоделку, которая использует голосовое управление. Фактически это включатель-выключатель с голосовым управление. Особенностью данной самоделки является то, что данный прибор может не только по голосовой команде управлять нагрузкой, но и может отвечать голосовыми командами, записанными ранее на флеш карту.
По внешнему виду устройство получилось такое невзрачной. Это моя вина, но я не ставил перед собой цели сделать его красивым, просто было лень. Собственно, по этой же причине я вывел минимум приспособлений для управления данным устройством, из которых на передней панели только ручка управления громкостью звука ответчика и приемник флеш карт, который по началу тоже хотел запихать внутрь.

Для обращения необходимо сказать «Ардуино». Я назвал так потому что сердцем этого устройства является голосовой модуль, с котором мы будем в дальнейшим знакомиться, предназначался в первую очередь для конструктора «Arduino». Хотя я ни разу не сталкивался с Arduino и в этом приборе его модули не используются.
Обращаемся к выключателю «Ардуино», если выключатель отвечает «Слушаю», то произноси следующую из трех, назначенных мной, команд: «Лампа», «Гирлянда», «Свет». После принятия команды устройство переведет состояние подключенного прибора на противоположное: если лампа горела – выключит, если не горела – включит. И ответит, пример: «Лампа выключена» или «Лампа включена» …
Проще говоря, наш диалог с выключателем будет состоять следующим образом:
— Ардуино.
— Слушаю.
— Свет.
— Включаю свет.
Можно конечно же было запрограммировать модуль конкретными командами: «Включить свет», «Выключить свет», но я решил сделать так, чтобы одна команда и включала, и выключала.
Все ответы записаны мной на флеш карту. Это обычные файлы WAV формата. Текст читал сайт английского перевода. Это может быть любая другая программа, умеющая читать текст. Или вообще эти ответы можете записать Вы сами или Ваши родственники…
Я не знаю плюс это или минус, но данное устройство чувствительно к тембру голоса. То есть, к примеру, мою жену он пре признавал, пока я не записал отдельно её голос на модуль. И ответы я ей сделал другие: мне отвечает женщина, а ей мужчина. Прикольно, не правда ли?)
Необходимо секунд 5 подождать пока загрузиться сам модуль, пока контроллер обратиться к модулю, пока плеер инициализирует флешку и фалы на ней…
Смотрите видео ниже процесса работы…
Вот так вот работает данный выключатель. Теперь давайте посмотрим на начинку выключателя. Снимаем верхнюю крышку. Первая плата плеера с усилителем. Именно она воспроизводит ответы, записанные на флешку. Управляется плата с помощью UART протокола. Команды посылает контроллер расположенный на второй плате, к которой мы вернемся чуть позже. Далее третья плата – блок питания с силовыми ключами выполнена на семестрах. Вся схема имеет гальваническую развязку по напряжению. Плата так же управляется контроллером. Блок питания выдает 5 вольт стабилизированного напряжения. Силовые ключи могут выдержать нагрузку около 200 Вт на канал. Теперь перейдем на вторую плату. На ней расположен контроллер, который всем управляет и модуль распознавания голосовых команд.
Работу, подключение и настройку модуля мы рассмотрим в следующем видео. А сейчас я поясню работу контроллера, который выполнен на atmega8. Модуль распознавший команду дает команду контроллеру по UART, контроллер обработав команду включает или выключат нагрузку и бает команду звуковому модулю на воспроизведение звукового ответа. Вроде всё просто).
Хочу сказать, что делая данную самоделку я не ставил себе задачу сделать серьёзное устройство, скорее игрушку.
В следующем видео вы рассмотрим непосредственно сам модуль, так что подпишитесь на канал, чтобы не пропустить, если конечно данный материал Вас заинтересовал.
Я построил данный выключатель пару лет назад на модуле версии V2. Но в следующем видео мы будем рассматривать более новую версию V3. Так же мы рассмотрим 2 вида работы с этим модулем: простой – это если Вы не владеете программированием и полный – это если Вы умеете программировать микроконтроллеры.
Модуль распознавания голоса (речи) V3 — http://ali.pub/qv2kr
Модуль распознавания голоса (речи) V2 — http://ali.pub/do03a
Надеюсь Вам понравилось видео на данную тему. Спасибо за просмотр данного видео. Если Вам понравилось – поставьте лайк, так я буду знать, что Вам это не безразлично. Подписывайтесь на канал, до новых встреч.
Распознавания голоса на Arduino – Радиодед
Тема распознавания голоса микроконтроллером довольно интересна и нова, поэтому я решил представить вам схему устройства распознавания голоса на микроконтроллере, а точнее на Arduino. Распознавание голоса довольно непростая задача, а реализовать это на микроконтроллере еще сложнее, в силу ограниченности его ресурсов. В нашем случае реализация распознавания голоса будет на микроконтроллере ATmega328P, работающего на частоте 16МГц.
В данном устройстве была использована библиотека uSpeech, которая полностью автономна и не требует передачи голосовых команд на компьютер для дальнейшего распознавания, как того требуют другие библиотеки и модули, например, такие как BitVoicer.
В моей схеме распознавания голоса на микроконтроллере была использована uSpeech в силу своей автономности и малых размеров. Хотя у неё есть недостаток, такой как ограниченность распознавания. Эта библиотека позволяет распознавать только фонемы, т.е. отдельные звуки, но для многих схем и устройств этого более чем достаточно. Ниже приведен список используемых фонем (звуков):
Фонема (звук) | Соответствующая ей буква (может быть несколько) |
“е” | е |
“х” | х, ш, щ, дж, ж, з |
“в” | в, может срабатывать на з |
“ф” | ф |
“с” | с |
“о” | о, а, ш, л, м, н, у, ю |
” “ | слишком тихий звук |
В качестве микрофона используется электретный микрофон (ссылка на статью на Wikipedia), обычно он выглядит так:
Сигнал с него достаточно слабый, поэтому его необходимо усилить. Усилитель для микрофона можно сделать из пары транзисторов, как было в схеме микрофонного усилителя на Радиодеде, так и на операционном усилителе, например, так:
Либо можно купить готовый микрофон с усилителем на eBay или AliExpress, найти можно по запросу «Mic amplifier arduino» или «Микрофонный усилитель Arduino». Выглядит он так:
Микрофон с микрофонным усилителем желательно подключить к микроконтроллеру через резистор 470…2К и разделительный конденсатор (он уже есть в самих схемах усилителей, а также на готовых платах), который убирает постоянную составляющую.
Схема подключения микрофона и усилителя к Arduino следующая: микрофон через усилитель подключается к аналоговому порту Ардуино A0, три светодиода через резисторы подключаются к цифровым выходам 5,6,7 (схему можно изменить, внеся соответствующие, небольшие правки в исходный код программы).
В качестве индикаторов распознанных команд были использованы три светодиода разных цветов.
В исходном примере библиотеки uSpeech сравнивались одиночные фонемы (звуки). Пример позволял распознать 6 фонем (звуков): «ф», «е», «о», «в», «с», «х» (f, e, o, v, s, h). Мной был использован массив байт, который содержал паттерны, распознаваемых слов, что позволило в конечном итоге распознавать не отдельные фонемы (звуки), а целые слова, состоящие из распознаваемых фонем. Массив полученных звуков сравнивается с заранее прописанным массивом байт (паттерном слова), и в случае совпадения, с учетом заданного порога чувствительности, делается вывод о том, какое слово было произнесено.
Например, заранее прописанные паттерны для английских слов green,orange и white были следующие “vvvoeeeeeeeofff”, “hhhhhvoovvvvf”, “hooooooffffffff”. Для нахождения наиболее ближайшего эквивалента произносимом слову необходимо находить минимальное редакционное расстояние (расстояние Левенштейна). Для повышения точности и игнорирования нерелевантных паттернов при распозновании использовалась константа LOWEST_COST_MAX_THREASHOLD, определяющая уровень достоверности. Подбирая её значение можно добиться высокой точности распознавания.
Скомпилированный скетч занимает около 20% FLASH-памяти микроконтроллера и около 500 байт, т.е. 25% ОЗУ. Библиотеку для распознавания голосовых команд на Ардуино – uSpeech можно скачать здесь (необходимо нажать зеленую кнопку “Clone or download”). Установка библиотеки стандартная – необходимо распаковать архив и поместить папку в “C:/Users/<Имя пользователя>/Documents/Arduino/libraries”.
Демонстрация работы устройства:
https://www.youtube.com/watch?v=_zlD2lvWB7k
Скачать архив с исходником скетча для Arduino и самой библиотекой.
Просмотров всего: 8 581, сегодня: 3
Arduino модуль распознавания речи. Делаем управление светодиодом голосом с помощью Arduino
В данном проекте я совместил детектор распознавания лиц (face detection) и следящую (tracking system) систему.
Вкратце суть проекта: вебкамера, установленная на поворотном механизме подключена к компьютеру под управлением операционной системы Windows и с установленным программным обеспечением OpenCV . Если программа обнаруживает в поле зрения вебкамеры лицо, то вычисляется центр лица. Координаты X и Y передаются в контроллер Arduino, который подключен к компьютеру по USB. В свою очередь, контроллер Arduino по принятым командам управляет двумя сервомоторами: по координате X и по координате Y, т.о. обеспечивается следящая система.
Библиотеку OpenCV (Open Source Computer Vision Library) можно скачать . Библиотека мультиплатформенная, в настоящее время существует под следующие ОС: Windows, Linux, Android, Mac OS и даже iOS. Библиотека обеспечивает обработку изображений в режиме реального времени. Написана на С/С++.
Т.о. данный проект представляет собой смесь soft и hard решений. Обработка изображения ведется на компьютере, а управление серво осуществляется при помощи контроллера.
Итак, что я использовал для проекта:
Программное обеспечение:
Железо:
компьютер с ОС Windows 7 SP1
Arduino Uno или совместимый + БП
2 сервопривода
USB вебкамера
Итак, поехали.
Шаг 1. Установка программного обеспечения
1) Если у вас ОС Windows, то скачайте файл OpenCV-2.3.1-win-superpack.exe (или более позднюю версию) и установите библиотеку.
2) Скачайте и установите Microsoft Visual C++ 2010 Express. Если у вас 64-битная версия Windows, то также необходимо будет скачать Windows SDK (но для 64 версии могут быть проблемы, я так и не смог заставить работать OpenCV под Windows 7 x64).
Процесс настройку OpenCV для Visual C++ читайте на официальном сайте.
Шаг 2. Крепление камеры и сервомоторов
Я не стал делать конструкцию «долговечной», потому как после достижения конечной цели я все разбираю для следующего проекта.
Вебкамеру я прикрепил к сервомотору оси Х, а его, в свою очередь закрепил на сервомоторе оси Y. И всю эту конструкцию закрепил в струбцине от «третьих рук».
Шаг 3. Подключение
Подключение сервомоторов:
Желтый вывод от серво оси Х подключается к выводу 9 контроллера Arduino
Желтый вывод от серво оси Y подключается к выводу 10 контроллера Arduino
Красный вывод Vcc от серво подключается к выводу 5V
Черный вывод GND от серво подключается к выводу GND контроллера Arduino
Подключение вебкамеры:
Вебкамера подключается к компьютеру по USB интерфейсу. Программа C++ идентифицирует вебкамеру по номеру USB-порта. Возможно, потребуется указать порт в программе.
Подключение контроллера Arduino UNO:
Контроллер также подключается к компьютеру через USB-интерфейс. В системе появляется виртуальный COM-порт, который необходимо внести в код программы на C++.
Скачать файлы проекта
Оригинал статьи на английском языке (перевод Колтыков А.В. для сайта cxem.net)
В данном проекте я совместил детектор распознавания лиц (face detection) и следящую (tracking system) систему.
Вкратце суть проекта: вебкамера, установленная на поворотном механизме подключена к компьютеру под управлением операционной системы Windows и с установленным программным обеспечением OpenCV . Если программа обнаруживает в поле зрения вебкамеры лицо, то вычисляется центр лица. Координаты X и Y передаются в контроллер Arduino, который подключен к компьютеру по USB. В свою очередь, контроллер Arduino по принятым командам управляет двумя сервомоторами: по координате X и по координате Y, т.о. обеспечивается следящая система.
Библиотеку OpenCV (Open Source Computer Vision Library) можно скачать . Библиотека мультиплатформенная, в настоящее время существует под следующие ОС: Windows, Linux, Android, Mac OS и даже iOS. Библиотека обеспечивает обработку изображений в режиме реального времени. Написана на С/С++.
Т.о. данный проект представляет собой смесь soft и hard решений. Обработка изображения ведется на компьютере, а управление серво осуществляется при помощи контроллера.
Итак, что я использовал для проекта:
Программное обеспечение:
Arduino IDE 1.0 for Windows
Microsoft Visual C++ 2010 Express SP1
Serial C++ Library for Win32 (от Thierry Schneider)
Железо:
компьютер с ОС Windows 7 SP1
Arduino Uno или совместимый + БП
2 сервопривода
USB вебкамера
Итак, поехали.
Шаг 1. Установка программного обеспечения
1) Если у вас ОС Windows, то скачайте файл OpenCV-2.3.1-win-superpack.exe (или более позднюю версию) и установите библиотеку.
2) Скачайте и установите Microsoft Visual C++ 2010 Express. Если у вас 64-битная версия Windows, то также необходимо будет скачать Windows SDK (но для 64 версии могут быть проблемы, я так и не смог заставить работать OpenCV под Windows 7 x64).
Процесс настройку OpenCV для Visual C++ читайте на официальном сайте.
Шаг 2. Крепление камеры и сервомоторов
Я не стал делать конструкцию «долговечной», потому как после достижения конечной цели я все разбираю для следующего проекта.
Вебкамеру я прикрепил к сервомотору оси Х, а его, в свою очередь закрепил на сервомоторе оси Y. И всю эту конструкцию закрепил в струбцине от «третьих рук».
Шаг 3. Подключение
Подключение сервомоторов:
Желтый вывод от серво оси Х подключается к выводу 9 контроллера Arduino
Желтый вывод от серво оси Y подключается к выводу 10 контроллера Arduino
Красный вывод Vcc от серво подключается к выводу 5V
Черный вывод GND от серво подключается к выводу GND контроллера Arduino
Подключение вебкамеры:
Вебкамера подключается к компьютеру по USB интерфейсу. Программа C++ идентифицирует вебкамеру по номеру USB-порта. Возможно, потребуется указать порт в программе.
Подключение контроллера Arduino UNO:
Контроллер также подключается к компьютеру через USB-интерфейс. В системе появляется виртуальный COM-порт, который необходимо внести в код программы на C++.
А помните, как несколько лет назад (а может быть и сейчас) была популярна идея управления светом в комнате при помощи хлопков в ладоши? А, ведь, это очень удобно, лежишь в постели, лень встать и хлопком в ладоши выключается свет или заходим домой, темно, нащупать выключатель долго, а тут с самого порога хлопок или два и свет уже горит. Мне кажется, что эта концепция актуальна до сих пор, но к ней можно применить уже более высокие технологии по сравнению с теми, что были 5 лет, 10 лет назад. Теперь за сравнительно небольшую сумму можно купить несколько деталей и запрограммировать конструкцию на подобные функции, о чем пойдет речь ниже.
Сегодня рассмотрим модуль, предназначенный для распознавания голосовых команд (в том числе и просто голоса в рамках записанной голосовой команды) – Voice recognition module V3.1 (V3) или часто встречающуюся кодировку название FZ0475 .
В комплект поставки входит сам модуль (печатная плата очень хорошего качества), микрофон на гибкой ножке с разъемом 3,5 мм jack и угловые PLS контакты с шагом 2,56 мм для платы модуля (их можно не использовать, если подключаться к контактам модуля другим способом).
На сегодняшний день существует несколько видов модулей с аналогичным функционалом разных производителей и разработчиков или исполнений. Данный модуль распознавания голоса, на мой взгляд, имеет некий баланс между стоимостью, функционалом, удобством. Более мощным и существенно более дорогим будет модуль EasyVR. Более дешевыми и неудобными будут модули на базе LD3320 (неудобные как минимум потому, что нормальное описания на них найти не просто, а в остальном это уже субъективно).
Характеристики модуля Voice recognition module V3.1 (V3):
- Напряжение питания – 5 вольт
- Потребляемый ток – до 40 мА
- Интерфейсы – UART, GPIO
- Точность распознавания – 99% (в идеальных условиях)
- Дальность действия – зависит от используемого микрофона, для штатного микрофона из комплекта дальность составляет 0,5 – 1 метр максимального расстояния при достаточно громком голосе, если же голос тихий, то придется подносить микрофон поближе ко рту
Модуль представляет собой небольшую аккуратную плату, на которой расположены главный микроконтроллер (черная клякса), разъем jack 3,5 мм для подключения микрофона, микросхема flash памяти, контакты GPIO, UART и питания, пара светодиодов и остальной необходимый обвес, необходимый для работы схемы – резисторы, конденсаторы, кварц. Компактный размер платы позволит без особых трудностей встраивать модуль в собственные разработки. Для увеличения дальности работы голосовых команд предположительно необходимо использовать микрофон с усилителем. При достижении приемлемой дальности модуль пригоден для использования в системах умного дома. Без доработок по улучшению дальности работы модуль можно использовать в настольных системах управления, а также в системах охраны (контроля и ограничения доступа). Со штатным микрофоном из-за небольшой дальности надежнее всего использовать модуль распознавания голоса как гарнитуру и беспроводным способом передавать команды контроллеру, который чем-то управляет, используя аккумулятор и беспроводные модули (например, HC-05 или HC-12 или подходящие любые другие). Модуль способен работать без внешнего микроконтроллера, так как производителем заложена функциональная самостоятельность, необходимо лишь однократно записать голосовые команды и задать настройки для самостоятельной работы при помощи внешнего устройства (ПК или МК).
Итак, чтобы начать работу с модулем распознавания голоса нам необходимо подключить его или к компьютеру (нужен USB-UART переходник), или к микроконтроллеру (необходимо разрабатывать программный код для управления модулем).
Принципиальной разницы в управлении и настройке модуля между подключением к компьютеру или к микроконтроллеру нет, поэтому для наглядности воспользуемся ПК для настройки. В инструкции описываются команды для модуля в шестнадцатеричной форме, поэтому для удобства понадобится и терминал, передающий байты в шестнадцатеричной форме, например, AccessPort (можно скачать в конце статьи). Кроме того, производитель делает упор на пользователей платформы Arduino и предоставляет библиотеку для использования этого модуля и инструкцию по использованию этой библиотеки. Однако многим из нас намного интереснее работать с самим модулем напрямую, чем через обертку для Arduino.
Перед началом работы разберемся с платой. С торцов платы справа гнездо для подключения микрофона, с другого четыре контакта UART интерфейса. Снизу расположены восемь контактов, использующихся для вывода сигналов, вызываемых распознаванием голосовых команд. Сверху четыре контакта, настроенных как вход сигнала, используются для переключения между группами (по семь голосовых команд в каждой) команд, если такая функция используется. И остальные шесть контактов сверху, вероятно, используются для подключения к памяти модуля.
Для функционирования и конфигурации модуля используется система команд. Общий вид кадра выглядит следующим образом:
Первые четыре команды 00, 01, 02, 03 используются для проверки состояния модуля и его настроек. Следующие шесть команд 10, 11, 12, 13, 14, 15 используются для изменения настроек модуля, среди которых управление портами вывода и настройки автостарта (auto load). Далее три команды 20,21, 22 используются для записи голосовых команд. Следующие три команды 30,31,32 используются для управления распознаванием голосовых команд. Команды 0A, 0D, FF используются только при возвращении данных самим модулем. Команд на самом деле не много и все это не так страшно, как кажется на первый взгляд в документации на модуль. Рассмотрим команды, необходимые для работы с модулем распознавания голоса. Не все из существующих команд несут практический характер.
Примечательно то, что модуль может работать без внешнего управляющего микроконтроллера, а также самостоятельно управлять чем-нибудь своими портами вывода. Для этого необходимо их настроить (команды 12, 13, 14).
Команда 12 – настроить порты вывода. Этой командой настраивается режим работы портов вывода модуля распознавания голоса.
Формат: | AA | 03 | 12 | MODE | 0A |
Где MODE может принимать четыре значения: 0 – импульсный режим (при срабатывании голосовой команды соответствующий команде вывод изменит свое состояние на время, устанавливаемое командой 13), 1 – режим переключателя (toggle или flip) (при каждом срабатывании голосовой команды вывод, соответствующий голосовой команде инвертируется), 2 – режим включения (при срабатывании голосовой команды вывод перейдет в состояние логической единицы и больше не перейдет в состояние логического нуля, сброс осуществляется командой 14), 3 – режим выключения (аналогично режиму включения только, наоборот, при срабатывании голосовой команды вывод переходит в состояние логического нуля).
Наиболее практичным является режим переключателя, не требующий лишних команд. Импульсный режим был бы хорош, но логика этого режима такова, что при срабатывании голосовой команды он однократно выдает логическую единицу, на время от 10 мс до 1 с. Это мало. Хотя, смотря какие требования к этому режиму, может быть полезно. Режимы включения и выключения реализованы неудобно, так как требуют исполнение дополнительных команд.
Команда 13 – задание длительности импульса соответствующего режима.
Формат: | AA | 03 | 13 | LEVEL | 0A |
Где LEVEL принимает значение от 00 до 0F (соответствует длительности от 10 мс до 1 с).
LEVEL | длительность |
0x00 | 10 мс |
0x01 | 15 мс |
0x02 | 20 мс |
0x03 | 25 мс |
0x04 | 30 мс |
0x05 | 35 мс |
0x06 | 40 мс |
0x07 | 45 мс |
0x08 | 50 мс |
0x09 | 75 мс |
0x0A | 100 мс |
0x0B | 200 мс |
0x0C | 300 мс |
0x0D | 400 мс |
0x0E | 500 мс |
0x0F | 1 с |
Команда 14 – сброс портов вывод до состояния заданного режимами включения или выключения.
Формат: | AA| 03 | 14 | FF | 0A | — сброс всех портов вывода
| AA| 03+n | 14 | IO0 | … | IOn | 0A | — сброс выбранных портов вывода
Где n – количество выводов, которые сбрасываются выборочно, IO0…IOn – перечисление этих выводов в кадре отправки данных.
Далее чтобы голосовые команды выполнялись их необходимо записать в модуль (обучить модуль). Здесь есть ограничение. Одновременно распознаваться могут только семь команд, хотя записать их можно значительно больше. Для того чтобы расширить диапазон голосовых команд, которые будут распознаваться используется система группировки (команда 32), которая управляется портами ввода модуля. Устанавливая конфигурацию сигналов на этих контактах, осуществляется выбор группы команд, которая будет распознаваться. Это обусловлено ограниченностью производительности используемого голосового контроллера модуля.
Команда 20 — запись одной или нескольких голосовых команд.
Формат: | AA| 03+n | 20 | R0 | … | Rn | 0A |
Где n — это количество записываемых голосовых команд (если записывается одна команда n=0, две команды n=1 и так далее в соответствии с общим форматом передачи команд Lenght — длина), R0…Rn номера голосовых команд (AA 03 20 03 0A — команда для записи третьей голосовой команды).
Команда 21 — запись одной голосовой команды и установка для нее подписи.
Формат: | AA| 03+SIGLEN | 21 | RECORD | SIG | 0A |
Где RECORD — номер голосовой команды, SIG — подпись (может состоять из нескольких байт, таким образом, что каждый байт может соответствовать кодировке символа алфавита при необходимости), SIGLEN — количество байт, из которых состоит подпись.
Команда 22 — добавление или удаление подписи для выбранной голосовой команды.
Формат: | AA | 03+SIGLEN | 22 | RECORD | SIG | 0A | — добавление подписи
| AA | 03 | 22 | RECORD | 0A | — удаление подписи
В процессе записи голосовых команд необходимо руководствоваться сигналами светодиодов. После ввода команды, запускающей процесс записи, начинает быстро моргать желтый (оранжевый) светодиод. Как только загорится красный светодиод необходимо произнести голосовую команду в микрофон. При успешности загорится желтый (оранжевый) светодиод и далее снова красный — необходимо подтвердить голосовую команду, произнести ее еще раз. В случае успеха загорятся оба светодиода — голосовая команда сохранена.
После того, как в модуле записаны голосовые команды ничего происходить не будет до тех пор, пока эти команды не поместить в «распознаватель» (Recognizer) модуля. Для этого необходимо воспользоваться командой 30. После выполнения этой команды модуль начнет ожидать совпадения голосовой команды с сохраненными образцами. Одновременно распознавать можно лишь сем команд. При этом будет медленно моргать желтый (оранжевый) светодиод на плате модуля.
Команда 30 — загрузить записи в «распознаватель» (Recognizer) модуля.
Формат: | AA| 2+n | 30 | R0 | … | Rn | 0A |
Формат ответа следующий: | AA | 07 | 0D | 00 | GRPM | R | RI | SIGLEN | SIG | 0A |
Где GRPM — информация о группе, к которой относится команда (если используется), R — распознанная голосовая команда (по этим данным можно различать команда между собой если не используются подписи), RI — индекс команды в распознавателе, SIGLEN — длина подписи в байтах, SIG — подпись (если используется).
Ну и наконец, если модуль должен работать самостоятельно, то необходимо воспользоваться командой 15 для автоматического запуска по преднастройкам распознавателя. В этом случае модуль распознавания голоса будет работать самостоятельно без необходимости инициализации после включения.
Команда 15 — установка автозапуска распознавателя при включении.
Формат: | AA| 03 | 15 | 00 | 0A | — отключение функции автозапуска
| AA| 03+n | 15 | BITMAP | R0 | … | Rn | 0A | — установка функции автозапуска
Для контроля верности выполнения команд каждой из них соответствует свой ответ. В случае такой необходимости все данные можно найти в документации на модуль распознавания голоса, приложенной в конце статьи. Не стоит забывать, что все числовые значения представлены в шестнадцатеричной форме.
Таким образом, при помощи системы команд можно достаточно гибко настраивать модуль распознавания голоса для использования в различных целях. Если же простого управления портами вывода модуля недостаточно, то модуль распознавания голоса можно подключать к другим устройствам посредством UART или GPIO. Для беспроводного подключения можно использовать ранее рассмотренные модули .
При помощи беспроводных модулей можно подключать модуль распознавания голоса к любым устройствам, где это необходимо. Например, подключим его к микроконтроллеру, который относительно получаемых данные о распознавании голосовых команд будет управлять светодиодами. Беспроводные модули позволяют передавать данные в двух направлениях, поэтому при необходимости для микроконтроллера можно написать код инициализации голосового модуля и записи голосовых команд. В нашем случае под управлением ПК в модуле уже записано несколько голосовых команд и настроен автозапуск распознавания при включении питания, поэтому для микроконтроллера пропишем только прием данных и управление светодиодами относительно этих данных. Микроконтроллер STM32F103C8T6 использует USART1 для приема данных и контакты PB10…PB15, настроенные на выход, которыми управляет светодиодами. Исходный код расположен в приложения в конце статьи.
Немного о результатах
Распознавание голоса идет не совсем точное. Это зависит от выбранных команд и голоса пользователя. При тестировании мною было обнаружено несколько отрицательных моментов. При обучении командам модуля были выбраны голосовые команды «раз» и «два». Команда «два» проходила всегда четко, а вот команда «раз» достаточно часто определялась как команда «два» и соответственно выполнялся код второй команды. Далее при попытке отдавать голосовые команды по-английски (а они не записывались в голосовой модуль) практически всегда команда «one» определялась как «два». Возможно, все дело в произношении, интонации и прочих аспектах человеческого голоса, заложенных в алгоритм кодировки голосового модуля произносимых команд. Однако эти секреты производители в открытом доступе не дают. Кроме этого на качество распознавания влияют внешние шумовые условия – гул с улицы, шум вентилятора, случайные звуки и прочее. Производитель заостряет внимание на то, что высокий уровень точности распознавания имеет место в идеальных условиях. Идея использования микрофона с усилителем, конечно, увеличит дальность работы устройства, но так же увеличит вероятность и ошибки, так как усиление голоса будет происходить и с усилением шумов.
В итоге , если у вас невысокие требования к распознаванию голоса и выполнению голосовых команд, то этот модуль честно отработает, потраченные на него, деньги.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
IC1 | МК STM32 | STM32F103C8 | 1 | В блокнот | ||
VR1 | Линейный регулятор | AMS1117-3.3 | 1 | В блокнот | ||
MOD1, MOD3 | Модуль беспроводной связи | HC-12 | 2 | В блокнот | ||
MOD2 | Модуль распознавания голоса | VR3.1 | 1 | В блокнот | ||
Z1 | Кварц | 8 МГц | 1 |
Привет, Гиктаймс!
Как видно из названия речь в этой статье пойдет о распознавании цифр на микроконтроллере. Сразу хочу оговориться, что в данной статье не будет приведен исходный код, рассматриваться технология или алгоритм распознавания, скажу лишь, что используются идеи системного подхода. Некоторые из них изложены в наших статьях ( , и вот ). Это связано с тем, что наш подход тянет на оригинальность, но требует уточнения некоторых вопросов. Кто-то может сказать: «очередная статья про программирование микроконтроллеров». Отнюдь нет, поиск подобных проектов не дал каких-то внятных результатов, за исключением этого видео . Из обсуждений на форумах понятно одно: идея получения подобного устройства (камера + микроконтроллер = результат распознавания на выходе, а не просто снятая картинка) приходила многим, но оставалась без реализации. Да и распознавание, по общему мнению, требует много вычислительных ресурсов и микроконтроллеры для этого не подходят, в частности про Arduino были высказывания, что это вообще невозможно. Если стало интересно прошу под кат.
Что бы не возникало очевидных вопросов, ответим на них:
- Нет, это не сервис по распознаванию изображений
- Нет, это не OpenCV
- Нет, это не нейронные сети
- Используется морфологический анализ объектов из которых состоит цифра
- Да, распознавание производится именно микроконтроллером!
Идея
Если кратко, то все началось с того, что было желание попробовать свои силы и проверить свои идеи в распознавании изображений. В процессе обсуждения пришли к выводу, что можем обойтись небольшими вычислительными мощностями для решения данной задачи. По понятным причинам подробности этих обсуждений описывать не будем.Установка
Итак, задача поставлена, нужна реализация. Не отступая от уже устоявшихсяберем то, что есть под рукой. А было под рукой парочка Arduino Uno, старая оптическая мышь и CD привод. Кстати, на то что бы использовать сенсор оптической мыши в качестве камеры для получения изображения нас натолкнула прочитанная когда то давно, ну и собственно весь остальной около «мышиный» материал. Единственное нам пришлось выпаять сенсор и всю его обвязку для удобства использования, а также приклеить к нему линзу, которую мы бережно «выдрали» из CD привода. Это было нужно для того, что бы увеличить расстояние от объекта съемки до камеры иначе цифры нашего размера не помещались и была видна лишь небольшая часть. Кстати говоря перед линзой из CD привода, мы пробовали прикрепить оптику от веб камеры, но как-то не срослось.
Ещё
Затем встал вопрос как эту камеру позиционировать над объектом съемки. Тут нам очень помог старый сломанный микроскоп, который лежал без дела. С уважением сняли с него механизм управления предметным столиком. Этот механизм нам позволил перемещать камеру лишь по двум осям, тут же пришла мысль использовать направляющую лазерной головки от CD привода. Все это закрепили на корпусе от многострадального CD привода. В итоге мы получили классный механизм позиционирования камеры.
Ещё
Итого: так называемая камера у нас есть, механизм позиционирования есть, осталось положить бумажечку с циферкой и получить изображение с камеры. Тут то и начались «проблемы». Так как характеристики «мышинного» оптического сенсора весьма скудны для использования его в качестве камеры, стали импровизировать с подсветкой.
Ещё
Стало понятно, что просто подсветить не получиться важна интенсивность, направление внешний свет тоже вносит коррективы. Пришлось включать в работу еще одну «ардуинку», что бы управлять интенсивностью подсветки ( естественно можно было и по другому управлять, но в последствии и не только подсветкой, а еще переключением цифр на индикаторе ). В итоге оказалось, что съемка на просвет гораздо лучше. А если например использовать в качестве цели светящийся семи сегментный индикатор то сенсор его видит вообще отлично. Так, что теперь у нас в качестве объектов съемки индикатор и полоса с белыми цифрами залитая черным фоном.
слева изображение в градациях серого полученное с индикатора (такое изображение мы получаем с сенсора), справа бинаризованное.
Ещё
Общий вид установки в сборе
ранний вариант установки
Блок распознавания
Немаловажную роль в нашей установке играет, так называемый блок распознавания (на картинке выше). Как видно, он состоит из Arduino Uno и всем известного wifi передатчика ESP8266 . Поясняю, wifi передатчик нам нужен для того, что бы результат распознавания увидеть на планшете. Приложение на планшете отправляет запрос, «ардуинка», получая запрос, «снимает» изображение с сенсора мыши, затем бинаризует его. После бинаризации происходит распознавание, а после его завершения формируется ответ. В ответе мы посылаем результат распознавания и 41 байт для построения бинаризованного изображения на экране планшета, так сказать, для наглядности.
Если оглянуться, то на «на ардуинку» возложен неплохой функционал: и работа с камерой, и распознавание, и работа с esp8266. Что не могло не отразится на работе — пришлось бороться с нехваткой памяти. Вот уж не думал, что когда либо придется отвоевывать каждый байт памяти.
Демонстрация процесса распознавания
Вместо заключения
На этом собственно и все. Впереди еще очень много работы. И первая задача: распознавание чисел (строки цифр) снимаемых «человеческой» камерой (а не «мышиным сенсором») и переносом разработанной технологии на ESP8266 и снижением накала борьбы за каждый байт памяти.С радостью ответим на вопросы.
В этом уроке по Arduino мы покажем, как использовать мобильное приложение для Android и модуль Bluetooth HC-05 для голосового управления светодиодом.
Для этого урока нам понадобится минимум комплектующих. После того как вы сделаете урок — вы сможете усложнить схему и дополнить её устройствами по своему вкусу.
- Arduino UNO
- HC-05 Bluetooth Модуль
- Макетная плата
- Провода
- 330 Ом резистор
- Светодиоды (LED)
Шаг 2: Подключение модуля Bluetooth HC-05
Стандартный модуль Bluetooth HC-05 имеет шесть контактов. Однако в этом проекте мы будем использовать только 4.
Мы будем использовать вывод VCC, вывод GND, вывод TXD и вывод RXD. Вывод VCC модуля bluetooth подключается к + 3,3 В от Arduino. Вывод GND модуля подключается к GND Arduino (земля). Штырь TX модуля bluetooth соединяется с цифровым выводом 0 (RXD), а контакт RXD подключается к цифровому выходу 1 (TXD).
Шаг 3: Подключение светодиодов
Следующим шагом в создании светодиодов, управляемых голосом, является подключение светодиодов к Arduino через макет.
Сначала подключите короткий конец светодиода к земле. Затем подключите длинный конец каждого из светодиодов к резистору 330 Ом. Наконец, подключите сопротивление тока от светодиодов к цифровым контактам на Arduino.
В этом проекте мы будем подключать один светодиод к цифровому выводу 2, другой — к цифровому выходу 3, а последний светодиод — к цифровому выходу 4.
Шаг 4: Питание
Для этого проекта мы можем подавать питание на Arduino через любой источник питания + 5 В. Вы можете использовать USB-порт со своего компьютера для питания Arduino, но в этом проекте мы будем использовать портативную батарею 5В. Прежде чем подключать источник питания к вашему Arduino, убедитесь, что GND Arduino подключен к земле макетной платы.
Шаг 5: Код
Код для нашего проекта ниже.
Шаг 6: Использование мобильного приложения
Вы можете начать тестировать свой проект, загрузив приложение для Android — BT Voice Control для Arduino (BT Voice Control for Arduino), созданное SimpleLabsIN.
После того как вы скачали и установили приложение на свой телефон на базе Android нажмите на строку меню в правом верхнем углу и выберите «Подключить робота». В появившемся новом окне выберите модуль Bluetooth HC-05 и подключите его.
Теперь, когда вы говорите с помощью определенных команд из кода на свое устройство через приложение, определенные светодиоды должны включаться и выключаться. Посмотрите внимательнее на код, где указаны команды и поставьте свои. Например, вместо «*switch on red» можно просто указать «red». Так команды будут быстрее, короче и понятнее.
Шаг 7: Итоговый результат
Итоговый результат можно посмотреть на видео ниже.
Желаем вам успешных проектов! Не забывайте оставлять комментарии на проект в нашей
Распознавание голоса (voice recognition module v3.1)
Общие сведения:
Модуль распознавания голоса — Voice Recognition Module V3.1 — это компактный и простой в управлении модуль распознавания речи. На базе данного модуля можно создавать проекты с голосовым управлением.
Для работы модуля его необходимо обучить — записать через микрофон собственные голосовые команды в энергонезависимое хранилище голосовых команд модуля. Вы можете записать до 80 голосовых команд (каждая команда не более 1,5 сек., примерно одно, максимум два слова) и все они будут храниться в модуле, даже после отключения питания. Стоит отметить, что записывать можно не только голос (слова), но и различные звуки.
У модуля есть два вида памяти: память хранилища (где голосовые команды просто хранятся) и память распознавателя (где голосовые команды участвуют в сравнении со звуком поступившем через микрофон).
Перед распознаванием голосовых команд их нужно загрузить из памяти хранилища в память распознавателя. Память распознавателя рассчитана на 7 голосовых команд, значит модуль способен одновременно сравнивать до 7 голосовых команд с поступающим звуковым сигналом.
Термины:
- Хранилище голосовых команд – энергонезависимая память состоящая из 80 ячеек, в каждую ячейку можно записать одну голосовую команду с текстовым комментарием.
- Распознаватель голосовых команд – основная часть модуля распознавания речи, блок содержащий ОЗУ из 7 ячеек, в каждую ячейку можно загрузить одну голосовую команду из хранилища голосовых команд модуля. Блок распознавателя сравнивает загруженные в него голосовые команды с поступающим звуковым сигналом.
- Номер ячейки – совпадает с номером записи. Память хранилища и память распознавателя разбита на ячейки. Одна ячейка может хранить одну запись (голосовую команду). Доступ к записям хранилища и записям распознавателя осуществляется по номерам ячеек.
- Обучение – процесс записи ваших голосовых команд в хранилище.
- Загрузка – копирование записанной голосовой команды из хранилища в распознаватель.
- Подпись – текстовый комментарий (до 10 символов) к голосовой команде записанной в хранилище.
- Группа – список содержащий 7 номеров ячеек хранилища. Поддерживаются, системные группы и пользовательские группы. Загрузка группы приводит к загрузке в распознаватель тех голосовых команд хранилища, номера которых указаны в группе.
Более подробно о группах читайте в разделе Группы.
Видео:
Редактируется…
Спецификация:
- Точность распознавания речи: 99% (при идеальных условиях).
- Объем хранилища: до 80 голосовых команд длительностью не более 1,5 сек.
- Одновременное распознавание: до 7 голосовых команд.
- Напряжение питания: 4,5 … 5,5 В (постоянного тока).
- Потребляемый ток: до 40 мА.
- Цифровой Интерфейс: UART и GPIO уровень TTL 5В.
- Аналоговый интерфейс: разъем микрофона jack 3,5-мм моноканальный.
- Габариты платы: 31х50 мм.
Подключение:
- Колодка из 4 выводов (GND, VCC, RXD, TXD) используется для подключения модуля к аппаратной или программной шине UART Arduino.
Выводы модуля: | Выводы Arduino: |
---|---|
RXD — вход шины UART. | TX — выход шины UART. |
TXD — выход шины UART. | RX — вход шины UART. |
VCC — вход питания 5 В. | 5V — вывод питания 5 В. |
GND — общий вывод питания. | GND — общий вывод питания. |
В примерах библиотеки «VoiceRecognitionV3» используется программная шина UART, где вывод модуля RXD подключается к выводу 3 Arduino UNO, а вывод модуля TXD подключается к выводу 2 Arduino UNO (выводы можно переназначить в скетче). Вместо Arduino UNO можно использовать Piranha Uno.
- Колодка из 4 выводов (IN0, IN1, IN2, GND) может быть использована для загрузки требуемых групп голосовых команд из хранилища в распознаватель голосовых команд.
IN-2 | IN-1 | IN-0 | № загружаемой группы в распознаватель голосовых команд: |
---|---|---|---|
0 | 0 | 0 | Загрузить системную или пользовательскую группу номер 00. |
0 | 0 | 1 | Загрузить системную или пользовательскую группу номер 01. |
0 | 1 | 0 | Загрузить системную или пользовательскую группу номер 02. |
0 | 1 | 1 | Загрузить системную или пользовательскую группу номер 03. |
1 | 0 | 0 | Загрузить системную или пользовательскую группу номер 04. |
1 | 0 | 1 | Загрузить системную или пользовательскую группу номер 05. |
1 | 1 | 0 | Загрузить системную или пользовательскую группу номер 06. |
1 | 1 | 1 | Загрузить системную или пользовательскую группу номер 07. |
Более подробно о группах читайте в разделе Группы.
Все выводы IN-0…IN-2 внутрисхемно подтянуты до уровня Vcc.
По умолчанию, загрузка групп при помощи выводов IN-0…IN-2 отключена.
- Колодка из 8 выводов (OUT0-OUT6, GND) может быть использована для управления маломощными устройствами напрямую или мощными устройствами через реле, или силовые ключи.
Выходы OUT модуля, так же как и ячейки распознавателя, пронумерованы от 0 до 6. Опознание модулем голосовой команды приводит к соответствующей реакции выхода OUT модуля, номер которого совпадает с номером ячейки распознавателя содержащей опознанную голосовую команду.
Выводы: | Назначение: |
---|---|
OUT-0 | Вывод реагирует на опознание голосовой команды в 0 ячейке распознавателя. |
OUT-1 | Вывод реагирует на опознание голосовой команды в 1 ячейке распознавателя. |
OUT-2 | Вывод реагирует на опознание голосовой команды в 2 ячейке распознавателя. |
OUT-3 | Вывод реагирует на опознание голосовой команды в 3 ячейке распознавателя. |
OUT-4 | Вывод реагирует на опознание голосовой команды в 4 ячейке распознавателя. |
OUT-5 | Вывод реагирует на опознание голосовой команды в 5 ячейке распознавателя. |
OUT-6 | Вывод реагирует на опознание голосовой команды в 6 ячейке распознавателя. |
По умолчанию выводы OUT реагируют на опознание голосовой команды отрицательным импульсом, но реакцию можно настроить так, что выводы будут менять, устанавливать, или сбрасывать логический уровень при каждом совпадении голосовой команды.
Питание:
Входное напряжение питания 5В постоянного тока, подаётся на выводы Vcc и GND модуля.
Подробнее о модуле:
У модуля распознавания голоса — Voice Recognition Module V3.1 есть два вида памяти: память хранилища (где голосовые команды просто хранятся, даже после отключения питания) и память распознавателя (где голосовые команды участвуют в сравнении со звуком поступившем через микрофон).
Оба типа памяти состоят из ячеек, в одну ячейку записывается одна голосовая команда. Память хранилища голосовых команд состоит из 80 ячеек пронумерованных от 0 до 79, а память распознавателя голосовых команд состоит из 7 ячеек пронумерованных от 0 до 6. Значит модуль способен хранить до 80 голосовых команд, а одновременно сравнивать до 7 голосовых команд с поступающим звуковым сигналом.
Для работы модуля его необходимо обучить — записать столько голосовых команд в энергонезависимое хранилище, сколько требуется для Вашего проекта. В распознаватель, голосовые команды не записываются, а загружаются из памяти хранилища. Модуль позволяет указать номера ячеек хранилища, голосовые команды которых будут автоматически загружаться в распознаватель при подаче питания модуля.
Такая организации памяти позволяет разделить длинные голосовые команды (произношение которых занимает более 1,5 сек.) на две и более маленьких голосовых команд, которые будут подгружаться из хранилища в распознаватель по мере опознания модулем предыдущих частей длинной голосовой команды.
Пример:
- Предположим, мы желаем создать голосовое управление светом в коридоре, комнате и на кухне, а так же управление жалюзи в комнате и на кухне.
- Записываем в ячейки хранилища следующие голосовые команды: «свет», «жалюзи», «в коридоре», «в комнате» и «на кухне».
- Голосовые команды «свет» и «жалюзи» загружаем из хранилища в распознаватель изначально.
- При распознавании голосовой команды «свет», загружаем в распознаватель голосовые команды «в коридоре», «в комнате» и «на кухне».
- При распознавании голосовой команды «жалюзи», загружаем голосовые команды «в комнате» и «на кухне» (не загружая «в коридоре», если конечно у Вас там нет жалюзей).
- Таким образом Вы можете произнести «свет, в коридоре», «свет, в комнате», «свет, на кухне», «жалюзи, в комнате», «жалюзи, на кухне», а модуль сначала распознает первое слово («свет» или «жалюзи»), а потом оставшуюся часть Вашей длинной голосовой команды.
- Осталось добавить в программу условие, что через определённое Вами время, после опознания команды «свет» или «жалюзи», они опять должны быть загружены в распознаватель. Так модуль перейдёт в состояние готовности принять следующую длинную голосовую команду, вне зависимости от того была ли корректно распознана предыдущая, или нет.
В данный пример можно добавить немного интерактивности включив в проект MP3-плеер и записав в него несколько сообщений. Вы говорите «свет», MP3-плеер воспроизводит сообщение «где?», Вы говорите «на кухне», MP3-плеер воспроизводит сообщение «свет на кухне включён!», или «свет на кухне выключен», в зависимости от текущего состояния реле управления светом. Стоит учитывать, что модуль распознавания речи и MP3-плеер должны находиться на разных шинах UART.
Еще одним плюсом наличия двух типов памяти модуля (хранилища и распознавателя), является возможность создания голосового управления несколькими людьми (до 7 человек) на одном модуле. Каждый человек записывает одинаковые слова голосовых команд в разные ячейки хранилища модуля, а так же записывает одно стартовое слово, например, «Окей дом». В таком случае в распознаватель изначально загружаем все голосовые команды «Окей дом» записанные разными людьми. Если кто то скажет «Окей дом, свет, в коридоре», то по номеру ячейки опознанной модулем голосовой команды «Окей дом», Вы сможете определить кем она была сказана и подгрузить в распознаватель следующие команды «свет» и «жалюзи» записанные именно этим человеком.
Управление модулем может осуществляться 2 способами:
- Через последовательный порт UART (полный функционал).
Управление осуществляется командами протокола VR3, или методами библиотеки VoiceRecognitionV3 (некоторые примеры описаны в настоящей статье). - Через выводы модуля IN и OUT (частичный функционал).
Входы IN позволяют загрузить требуемые группы голосовых команд из хранилища в распознаватель, а выходы OUT позволяют определить номер распознанной голосовой команды и управлять устройствами.
Примеры:
В данном разделе содержатся примеры с использованием библиотеки VoiceRecognitionV3.
Пример обучения модуля:
Скетч примера поставляется вместе с библиотекой «VoiceRecognitionV3» и предназначен для записи голосовых команд в хранилище, загрузки голосовых команд из хранилища в распознаватель, удаления записанных голосовых команд, проверки состояния хранилища и распознавателя, получения комментариев к записям и проверки состояния модуля.
- Откройте скетч из примеров: Файл -> Примеры -> VoiceRecognitionV3 -> vr_sample_train.
- Выберите Вашу плату Arduino (Инструменты -> Плата), выберите порт (Инструменты -> Порт).
- Нажмите кнопку «Загрузить», дождитесь загрузки скетча в Arduino.
- Откройте «Монитор последовательного порта». Установите скорость передачи 115200 бод, установите отправку с добавлением символа новой строки (NL — NewLine), или с добавлением символов возврата каретки и новой строки (NL & CR).
В мониторе последовательного порта появится таблица со списком команд, которые Вы можете вводить:
5. Отправьте команду «settings» (настройки) чтобы проверить настройки модуля.
Для отправки команды введите «settings» и нажмите кнопку «Отправить», как на картинке ниже:
В ответ на команду «settings» (настройки) в мониторе последовательного порта появятся текущие настройки модуля:
Эти настройки означают следующее:
Baud rate | (скорость передачи данных по шине UART) | 9600 бит/сек. |
Output IO Mode | (режим работы выходов OUT) | Импульсный. |
Pulse Width | (ширина импульса) | 10 миллисекунд. |
Auto Load | (автозагрузка записей в распознаватель) | Отключена. |
Group control by external IO | (управление группами при помощи входов IN 0-2) | Отключено. |
6. Обучение модуля распознавания голоса. Введите строку «sigtrain 0 On».
Команда «sigtrain» указывает библиотеке что мы хотим записать голосовую команду, далее следует номер записи (ячейки) — «0» и завершает строку текстовое описание голосовой команды — «On». Вместо подписи «On» Вы можете ввести любое слово до 10 байт, например, «Вкл».
В ответ на команду «sigtrain 0 On» (sigtrain номер подпись) в мониторе последовательного порта появится надпись «Speak now» (говорите сейчас). Вам нужно произнести свою голосовую команду (это может быть любое слово, например «Включить»). Через пару секунд в мониторе последовательного порта появятся надпись «Speak again» (говорите снова) . Вам нужно повторно произнести свою голосовую команду.
Если обе произнесённые голосовые команды совпали, то в мониторе последовательного порта появятся надписи: «Record: 0 — Success» (Запись: 0 — Успех), «Record 0 — Trained» (Запись 0 — Обучена), «SIG: On» (Подпись: «On»).
Это означает что Ваша голосовая команда записана в хранилище голосовых команд.
Но если, по «мнению» модуля, голосовые команды не совпадают, то в мониторе последовательного порта появится надпись «Record: 0 — Cann’t matched» (Запись: 0 — не соответствует):
После чего опять появится надпись «Speak now» (говорите сейчас), а затем «Speak again» (говорите снова).
Вам нужно повторить голосовые команды пока запись не будет сохранена в хранилище.
Что такое подпись? Подпись — это текстовое описание голосовой команды. В нашем случае мы записали команду 0 с подписью «On». После завершения обучения модуль может отображать подпись произнесённой (распознанной) голосовой команды.
Во время обучения можно смотреть не в монитор последовательного порта, а на два светодиода расположенные рядом с разъёмом микрофона: SYS_LED (желтый) и STATUS_LED (красный).
- Желтый светодиод быстро мигает – приготовьтесь произнести голосовую команду.
- Красный светодиод горит – произнесите голосовую команду.
- Желтый светодиод мигает – приготовьтесь повторно произнести голосовую команду.
- Красный светодиод горит – произнесите голосовую команду.
- Оба светодиода мигают одновременно – голосовые команды совпали и записаны.
- Желтый светодиод медленно мигает – сравнение звукового сигнала с записями распознавателя.
7. Попробуйте обучить модуль следующей голосовой команде.
Ведите строку «sigtrain 1 Off». Эта строка указывает модулю что Вы собираетесь записать голосовую команду в 1 ячейку хранилища с подписью «Off». После появления надписей «Speak now» (говорите сейчас) и «Speak again» (говорите снова), произнесите слово «Отключить».
Таким образом Вы можете записать в хранилище до 80 голосовых команд (с номерами от 0 до 79). При записи голосовых команд не обязательно соблюдать очерёдность следования номеров ячеек памяти хранилища. Можно записать голосовую команду, сначала в 3 ячейку, потом в 0, а потом, например, в 27. Главное помнить, в какой ячейке какая команда, чтоб их случайно не затереть, вот для этого то мы и указываем подпись при записи голосовых команд. Но, если Вы уверены, что подпись Вам не нужна, то вводите строку «sigtrain номер» без подписи.
Для того что бы модуль, после обучения (записи голосовых команд), мог опознать голосовую команду, её нужно загрузить из хранилища в распознаватель. В распознаватель модуля можно загрузить до 7 из 80 записанных команд.
8. Загрузка голосовых команд из хранилища в распознаватель модуля. Введите строку «load 0 1» для загрузки записей из 0 и 1 ячеек хранилища в память распознавателя.
Процесс загрузки не удаляет записи из памяти хранилища, а копирует записи из указанных ячеек хранилища голосовых команд в память распознавателя по порядку.
В ответ на команду «load 0 1» (загрузить записи 0 и 1) в мониторе последовательного порта появятся надписи «Record 0 Loaded» (запись 0 загружена) и «Record 1 Loaded» (запись 1 загружена).
В память распознавателя можно загружать записи из любых ячеек хранилища голосовых команд, например, строка «load 3 21 17» приведёт к загрузке записей из ячеек 3, 21 и 17 хранилища голосовых команд, в память распознавателя, по порядку указания ячеек. То есть запись 3 хранилища скопируется в ячейку 0 распознавателя, запись 21 хранилища скопируется в ячейку 1 распознавателя, а запись 17 хранилища скопируется в ячейку 2 распознавателя. Но пока делать этого не стоит, ведь мы записали только 2 голосовые команды в память хранилища (ячейки 0 и 1) и загрузили их в в память распознавателя (так же ячейки 0 и 1).
Теперь если Вы произнесёте слова «Включить» и «Отключить», то увидите сообщения
- Распознана голосовая команда загруженная в ячейку распознавателя 0, запись загружена не группой, запись загружена из ячейки хранилища 0, голосовая команда имеет подпись «On».
- Распознана голосовая команда загруженная в ячейку распознавателя 1, запись загружена не группой, запись загружена из ячейки хранилища 1, голосовая команда имеет подпись «Off».
Пример управления светодиодом на плате Arduino:
Скетч примера поставляется вместе с библиотекой «VoiceRecognitionV3».
- Откройте скетч из примеров: Файл -> Примеры -> VoiceRecognitionV3 -> vr_sample_control_led.
- Выберите Вашу плату Arduino (Инструменты -> Плата), выберите порт (Инструменты -> Порт).
- Нажмите кнопку «Загрузить», дождитесь загрузки скетча в Arduino.
- Откройте «Монитор последовательного порта». Установите скорость передачи 115200 бод, установите отправку с добавлением символа новой строки (NL — NewLine), или с добавлением символов возврата каретки и новой строки (NL & CR).
В мониторе последовательного порта появится следующий текст:
Так как в предыдущем примере Вы уже записали 2 команды в распознаватель, то произнесите их. Произнесение первой команды приведёт к включению светодиода на плате Arduino, а произнесение второй к выключению. При этом в мониторе последовательного порта будут отображаться те же сведения, что и при опознании голосовых команд в предыдущем примере:
- Распознана голосовая команда загруженная в ячейку распознавателя 0, запись загружена не группой, запись загружена из ячейки хранилища 0, голосовая команда имеет подпись «On».
- Распознана голосовая команда загруженная в ячейку распознавателя 1, запись загружена не группой, запись загружена из ячейки хранилища 1, голосовая команда имеет подпись «Off».
Остальные примеры включённые в библиотеку «VoiceRecognitionV3»:
Файл -> Примеры -> VoiceRecognitionV3 -> vr_sample_multi_cmd: раскрывает принцип работы с группами голосовых команд. Голосовая команда записанная в 0 ячейку хранилища (RECORD 0) используется для переключения между двумя группами голосовых команд. Первая группа содержит номера ячеек хранилища RECORD 0,1,2,3,4,5,6, а вторая группа содержит номера ячеек хранилища RECORD 0,7,8,9,10,11,12. Перед запуском данного примера необходимо обучить модуль (записать) голосовые команды от 0 до 12.
Файл -> Примеры -> VoiceRecognitionV3 -> vr_sample_check_baud_rate: позволяет узнать установленную скорость передачи данных по шине UART. Может пригодиться если Вы забыли пользовательские настройки.
Файл -> Примеры -> VoiceRecognitionV3 -> vr_sample_bridge: позволяет отправлять команды протокола VR3 без кода заголовка, длины кадра и кода конца кадра. Например, для отправки команды «Check Recognizer», вместо байтов «AA 02 01 0A», нужно ввести только 01. Протокол VR3 описан в разделе Wiki — Протокол VR3 для модуля распознавания голоса.
Группы:
Группы используются для удобства загрузки нескольких голосовых команд из хранилища в распознаватель. Каждая группа может включать до 7 номеров ячеек хранилища голосовых команд. Загрузка группы приводит к загрузке в распознаватель всех ячеек хранилища, номера которых указаны в группе. Группы можно загружать командами UART или при помощи входов модуля IN 0-2.
Существует два вида групп: системные группы и пользовательские группы.
Системные группы имеют жесткую структуру и включают в себя 7 номеров ячеек хранилища голосовых команд:
№ системной группы | № ячеек хранилища голосовых команд входящих в группу: |
---|---|
00 | 00, 01, 02, 03, 04, 05, 06 |
01 | 07, 08, 09, 0A, 0B, 0C, 0D |
02 | 0E, 0F, 10, 11, 12, 13, 14 |
03 | 15, 16, 17, 18, 19, 1A, 1B |
04 | 1C, 1D, 1E, 1F, 20, 21, 22 |
05 | 23, 24, 25, 26, 27, 28, 29 |
06 | 2A, 2B, 2C, 2D, 2E, 2F, 30 |
07 | 31, 32, 33, 34, 35, 36, 37 |
08 | 38, 39, 3A, 3B, 3C, 3D, 3E |
09 | 3F, 40, 41, 42, 43, 44, 45 |
0A | 46, 47, 48, 49, 4A, 4B, 4C |
Пользовательские группы Вы можете создавать по своему усмотрению (Вы сами решаете какие ячейки хранилища голосовых команд будут входить в группу). Допускается создание до 8 пользовательских групп с номерами от 00 до 07. Каждая пользовательская группа может содержать до 7 голосовых команд хранилища.
Управлять группами можно, как с использованием методов библиотеки VoiceRecognitionV3, так и при помощи команды протокола VR3.
Ссылки:
Последние публикации на сайте » Страница 7 » NGIN.pro
В этой инструкции вы узнаете, как создать свой собственную Ambilight подсветку…
Проект очень простой и основан на законе Ома….
Кто очень часто путешествует на велосипеде, знает , что в течение долгого…
Arduino перемещает лазерную указку псевдо-случайным образом копируя поведение…
Если вам нужно вставать на работу, школу, или просто, чтобы не тратить день…
В первую очередь, если вам нравится такого рода вещи, вы будете получать…
Всем известно о включении света по хлопку. Все это становится легко…
Мы долго ждали, чтобы увидеть, что :: VTOL :: (а.к.а. Дмитрий Морозов) придумал…
Мега крутые фотографии роботов на Arduino…
Умная розетка на Arduino своими руками? Что может быть проще. Управление…
Управление освещением по хлопку в ладоши с помощью Arduino может использоваться…
Вашему вниманию предлагается видео интерактивной инсталляции и код программы…
Расмотрен принцип работы U-speed модуль на Arduino…
Есть много способов контролировать уровень воды, с помощью поплавкового датчика…
Реальный светодиодный куб меньше, чем 1 квадратный дюйм. Здесь шестьдесят…
Сделать самому колонку Bluetooth еще не было так просто….
Идеальный вариант для путешествий или отправиться в поход, когда есть…
Это очень легко и быстро добавить голосовое управление к вашему Arduino…
В этой статье докладно расписано как просто сделать своими руками систему…
Очередная крутая штука типа интернета вещей. Здесь используется Raspberry…
С Arduino-очками от Alain Mauer и Bluetooth мультиметром, измерянные…
Сделать Т-коптер самому. Проще простого. Пошаговая инструкция поможет сделать…
Эта роботизированная рыба изготовлена из гнутых труб ПВХ и машет хвостом для…
Точечные перекидные часы — это часы сделаны с помощью Flip-Dot Display….
Управляйте своим светом, как выродок с этими проектами Arduino
Никогда не было больше способов осветить ваш дом. Маломощные светодиодные ленты и лампы не только дешевы, но и могут управляться различными удивительными способами, которые заставят вас почувствовать себя настоящим капитаном звездного корабля, безумным ученым или злым злодеем — в зависимости от ваших жизненных приоритетов.
Большинство светодиодных лент поставляются с инфракрасным пультом дистанционного управления. Это полезно по очевидным причинам, но использование Arduino вместо этого может добавить функциональность. (Если вы только начинаете работать с Arduino, сначала посмотрите наше руководство для начинающих
).
Как насчет управления своими огнями с помощью голоса? А как же огни, которые включаются автоматически, когда вы приходите домой ночью? Настроение освещения контролируется чужим настроением? Как медленно наступает день с искусственным рассветом?
В этой статье мы рассмотрим их все и еще несколько. Здесь вы можете построить практически каждый проект с простыми компонентами и базовыми навыками кодирования и даже комбинировать их вместе.
Протяни руку
Начнем со старого фаворита — колотушки. Пользователь Instructables MertArduino создал тумблер, который подключается к любой лампе с помощью релейного модуля вместе с модулем звукового датчика, и все они приводятся в действие Arduino Uno.
Для этого проекта вы можете использовать практически любую Arduino-совместимую плату, что еще больше уменьшит размер. Если вы решите построить это, я бы, возможно, предложил сделать немного более безопасный корпус, чем тот, который был в картонной упаковке!
Идеально выглядеть, когда вы идете в комнату, и не очень хорошо, если вы, вероятно, получите аплодисменты.
Поймать волну
Научная фантастика полна интересных вещей, происходящих, когда герой щелкает пальцем. Будь то футуристические экраны с ручным управлением из Minority Report или возможность снимать медиа с карманных устройств на большие экраны в The Expanse, кажется, что жесты говорят громче, чем слова.
Франсиско Кастро сделал стильную лампу из простых материалов — сам абажур имеет красивый простой дизайн из бумаги. Вы можете ознакомиться с руководством по этому проекту на веб-сайте Make здесь.
Пользователь admarschoonen из Instructables развил этот дизайн, создав обновленную версию лампы Франциско. Он включил емкостную сенсорную панель на каждом углу, чтобы изменить цвет лампы. На этот раз цепь находится внутри старой стеклянной лампы ИКЕА. Вы можете найти подробное описание этого проекта здесь.
Имиджевый кредит: admarschoonen через InstructablesДай ему немного цвета
Как упоминалось во введении к этой статье, многие светодиодные ленты поставляются с дешевым пультом дистанционного управления для контроля их цвета и яркости, но для работы они зависят от прямой видимости. Гораздо более удобный способ управления светодиодными лентами — через Wi-Fi. Это, конечно, означает, что вашему светодиодному контроллеру также нужно будет общаться по Wi-Fi. Хотя для плат Arduino есть экраны, почему бы не купить что-нибудь дешевое, совместимое с Arduino, с уже встроенными возможностями Wi-Fi? Мы охватили NodeMCU
(ESP8266) до этого, и она является фаворитом многих наших проектов.
Руи Сантос создал лампу настроения, которой может управлять любой браузер, подключенный к его домашнему Wi-Fi, за менее чем 10 долларов. Ознакомьтесь с руководством по использованию учебника Random Nerd.
Взяв идею освещения настроения еще на один шаг вперед, пользователь Instructables fjordcarver создал «Хамелеоновую лампу», которая меняет цвет в зависимости от того, что он видит на поверхности ниже. В сборке используется светочувствительный резистор, а также красный, синий и зеленый светодиоды для обнаружения и воспроизведения цвета. См. Полный инструктаж — с рисованными диаграммами не меньше — для деталей проекта.
Изображение предоставлено: fjordcarver через InstructablesДайте этому некоторый ритм
Еще одна альтернатива для улучшения освещения — сделать его реагирующим на то, что вы слушаете. Как бы ностальгически ни казался светодиодный индикатор на моей стереосистеме в детстве, переходя от желтого к красному, мы можем добиться гораздо большего.
Приведенное выше видео принадлежит Миске Карвонен, и вы можете увидеть, как он спроектировал это реактивное светодиодное освещение для работы практически с любыми аудио настройками на странице Instructables о проекте. Он использовал индивидуально адресуемые полосы Neopixels (также известные как WS2812B).
Управляйте этим со своего телефона
Смартфоны стали вездесущими, так что использование телефона старой школы считается редкостью. В то время как управление технологиями с вашего телефона является одним из самых распространенных проектов домашней автоматизации
, это все еще может быть довольно сложной задачей для тех, кто не знаком с сетью.
К счастью, есть компании, которые предоставляют облачный сервис, позволяющий обойти эту проблему. Я недавно сделал вступительную статью
на Blynk — сервис, предназначенный для облегчения подключения к интернет-устройствам из любой точки мира. Они улучшили сервис с момента написания этой статьи, и для легкой настройки облачной службы автоматизации это отличная отправная точка.
Дайте время и место
Иногда вы просто хотите, чтобы свет включался в определенное время. В предыдущей статье Джеймс рассказал о том, как создать Arduino-сигнализацию восхода солнца и ночник
, который медленно уносит вас в дневное время с помощью света, который постепенно исчезает, и включает свет, когда он обнаруживает движение ночью. Это также делает для освещения большой фотографии собаки.
Стоит отметить, что если вы собираетесь построить этот проект, вы должны использовать MOSFETS логического уровня (например, IRL540N или что-то подобное), чтобы вы не столкнулись с теми же проблемами, что и он!
Чтобы продвинуться в идее о таймерных источниках света, мы можем использовать IFTTT (If This Then That). IFTTT позволяет автоматизировать технологию
, что позволяет связывать практически все, от умного дома и систем безопасности, до социальных сетей и смартфонов. Ты уже найдешь тысячи «рецептов» для автоматизированных решений со многими готовыми продуктами для умного дома.
,
Канал IFTTT Maker позволяет вам запускать и собственные проекты DIY. Отправив веб-запрос в облачную службу, такую как Blynk и thinger.io (или на свой собственный веб-сервер, если он у вас есть), вы можете инициировать изменения в своей домашней системе различными способами.
Например, изменив этот учебник Альваро Луиса Бустаманте об использовании IFTTT с thinger.io, вы можете добавить управление освещением на основе местоположения. Вместо того, чтобы Twitter был Если действия, используйте канал Android, чтобы определить, когда ваш телефон подключен к домашней сети Wi-Fi.
В комментариях к тому же учебнику Альваро рассказывает, как изменить веб-запрос, чтобы дать указание вашему NodeMCU выполнить ваши ставки.
Изображение предоставлено: alvarolb через Thinger.ioПоговори с ним!
Вершина методов управления geeky — голосовое управление. В то время как существуют более сложные методы (контроль мозга, кто-нибудь?), Общение с аппаратными средствами — это основа научной фантастики и лучший способ направить ваш внутренний образ Жана-Люка Пикарда.
В более ранней статье
мы рассмотрели, как использовать Siri вместе с Raspberry Pi и платой NodeMCU для полного управления светом с помощью голоса.
Начиная с этого учебника, Amazon Echo был выпущен, толкая голосовые команды к гораздо более доступному и мощному методу управления. В статье на hackster.io Карлос Мартин создал для своей кухни голосовую настройку RGB LED, управляемую с помощью Alexa.
Эта установка довольно элегантна, поскольку использует дешевую светодиодную ленту с инфракрасным управлением и использует плату Particle Photon для генерации ИК-кодов для изменения яркости и оттенка освещения, так что вы все равно можете использовать оригинальный пульт и обойти нужно для любого аппаратного взлома. Вы можете сделать то же самое с NodeMCU, что будет еще дешевле.
Пусть Свет говорит с тобой
До сих пор мы рассматривали способы, которыми вы можете управлять своими источниками света напрямую, но как насчет передачи этого контроля кому-то еще. Звучит безумно, верно? У вас могут быть изображения ваших огней, мерцающих и выключающихся в любое время дня и ночи в каком-то сценарии с привидениями в доме, напоминающем сцену в мистере Роботе.
,
Нет, то, что я предлагаю, немного более контролируемо. Компания Kaustubh Agarwal разработала простую лампу для смены цвета, цвет которой определяется поиском по тегам Twitter в IFTTT. Цвет меняется в зависимости от общего настроения пользователей Twitter.
Изображение предоставлено: Kaustubh Agarwal через Arduino CreateТочно такую же настройку можно использовать для чего-то еще более конкретного: вы можете вносить изменения в свой свет, когда вас упоминают по имени, или вас любят или ретвитят.
Сделай свой диммер умным
До сих пор большинство из них были сосредоточены на светодиодном освещении, но вы также можете использовать Arduino для управления диммерными лампами переменного тока. Пользователь Instructables Jestin_Cubetech создал проект с использованием Arduino и Raspberry Pi для управления яркостью лампы с помощью широтно-импульсной модуляции (ШИМ).
Вы можете найти полный проект здесь, хотя, как упоминается в одном комментарии, стоило бы присоединить радиатор к МОП-транзистору в цепи, чтобы предотвратить перегрев.
Так что у нас это есть, иди и управляй своими огнями, как капитан собственного космического корабля! Эта статья едва раскрывает многие способы персонализации вашей установки, и я с нетерпением жду возможности увидеть, какие уникальные вещи придумает сообщество, чтобы контролировать свои огни еще более сложными способами. Иди вперед и будь креативным!
Вы сделали странную и замечательную домашнюю установку для своего освещения? Вы планируете проект и хотите знать, с чего начать? Дайте нам знать в комментариях ниже!
Голосовое управление — Android — Bluetooth
Голосовое управление
— Android — Bluetooth — Arduino — Relay
В данном проекте голосовые команды распознаются приложением на Android планшете и передаются на Arduino по Bluetooth для управления электроприборами.
Функцинальная схема управления голосом
Основные компоненты, используемые для управления электроприборами голосом, изображены на рисунке:
Настройка Android планшета
и Arduino по Bluetooth сети
Настройка Android планшета состоит, как показано на скриншоте «А», в наборе пин кода — 1234. Этот пин код связян с Bluetooth модулем Arduino. На скриншоте «В» видно успешное подключение. При повторных запусках приложения ввод пинкода не запрашивается, он запоминается при первом запуске.
Подключение Android планшета
к Arduino по Bluetooth Если пинкод однажды введен и запомнен, то всегда для подключения Bluetooth нужно выполнять следующее:
- «А» — Нажать кнопку «Bluetooth connection»
- «B» — Выбрать строку с MAC адресом Bluetooth модуля HC-05
- «C» — Android планшет подключен к Arduino по Bluetooth
Голосовая команда
В данном проекте голосовые команды распознаются приложением на Android планшете. Это приложение использует голосовую библиотеку Google. Для этого планшет должен быть подключен к интернету.На скриншоте «А» показано выполнение команды «выключить все». На скриншоте «В» показано выполнение команды «включить 2».
Эти команды распознаются и включают электроприборы, подключенные к устройству управления.
Устройство управление состоит из четырех розеток, подключенных к электросети 220 в. Включаются розетки с помощью 4-х канальго реле. Включение канала реле выполняется Arduino. Об устройстве управления более подробно.
Android приложение — MIT App Inventor / блоки
Приложение для управления голосом разработано в MIT App Inventor.
Распознавание голосас помощью Elechouse V3 и Arduino
Технология распознавания голоса применяется уже несколько лет назад. Мы до сих пор помним огромное волнение, которое мы испытывали во время разговора с первым iPhone с поддержкой Siri. С тех пор устройства голосового управления за очень короткое время выросли до очень высокого уровня, превзошедшего наши ожидания. С появлением множества передовых систем распознавания голоса появилось много других голосовых помощников, таких как помощник Google и Amazon Alexa. Один только быстрый успех Amazon Echo доказывает, что мы постепенно привыкаем к разговору с машинами.
Итак, начнем с основ. В этом руководстве я расскажу вам о модуле распознавания голоса Elechouse V3 и о том, как включить / выключить светодиод с помощью голосовых команд. Есть несколько других способов реализовать распознавание голоса в вашем проекте, прямо с телефона Android до Alexa, Raspberry Pi или какой-либо другой технологии. Но я получил несколько сообщений от многих моих друзей, которые спрашивали меня, как использовать этот конкретный модуль с Arduino. Поэтому я пишу это руководство как базовое руководство для модуля Elechouse V3.Я хотел сделать эту статью максимально простой для всех новичков, поэтому мы не будем обсуждать все возможности и функции модуля, но в конце, я уверен, вы получите несколько довольно интересных идей для своего следующего проект.
Модуль распознавания голоса Elechouse V3Elechouse V3 — один из самых компактных и простых в управлении модулей распознавания голоса на рынке.
Есть два способа использования этого модуля: через последовательный порт или через встроенные контакты GPIO. Плата V3 может хранить до 80 голосовых команд длительностью 1500 миллисекунд каждая.Он не преобразует ваши команды в текст, а сравнит его с уже записанным набором голосов. Так что технически языковых барьеров для использования этого продукта нет. Вы можете записать свою команду на любом языке или буквально любой звук можно записать и использовать в качестве команды. Поэтому вам нужно сначала обучить его, прежде чем вы позволите ему распознавать какие-либо голосовые команды.
Если вы используете модуль с выводами GPIO, модуль будет выдавать выходы только для 7 команд из 80. Для этого метода вам нужно выбрать и загрузить 7 команд в распознаватель, и распознаватель отправит выходные данные на соответствующие контакты GPIO, если какая-либо из этих голосовых команд распознается.Поскольку мы используем это с Arduino, нам не нужно беспокоиться об ограниченных функциях.
Устройство работает в диапазоне входного напряжения от 4,5 до 5 вольт и потребляет ток менее 40 мА. Этот модуль может работать с точностью распознавания 99%, если он используется в идеальных условиях. Выбор микрофона и окружающий шум играют жизненно важную роль в влиянии на работу модуля. Лучше выбрать микрофон с хорошей чувствительностью и попытаться уменьшить фоновый шум, давая команды, чтобы получить максимальную производительность от модуля.
Подключение модуля к ArduinoВыполните все подключения, как описано ниже.
- RXD — Цифровой вывод 3 Arduino (это определяемый пользователем вывод. В примере кода вывод 3 как Tx.)
- TXD — Цифровой вывод 2 Arduino (Это также определяемый пользователем вывод.)
Светодиод подключен к цифровому выводу 13 Arduino, как определено в примере кода. Подключите последовательно к светодиоду резистор 470 Ом.
Подключите микрофон к разъему 3.Гнездо 5 мм в плате. Припаяйте его к микрофонным контактам в модуле, если у него нет штекера 3,5 мм. Это все о связях. Теперь посмотрим на код.
Настройка кодаВсе коды и библиотеки, упомянутые здесь, имеют открытый исходный код, и благодарность за их разработку принадлежит их соответствующим авторам. Вам следует загрузить и установить библиотеку «voicerecognitionv3.h» Arduino, прежде чем вы сможете использовать модуль с Arduino.
Загрузите библиотеку отсюда.
Все коды, которые нам нужны, находятся в архиве библиотеки в качестве примеров программ.
Обучение модуля V3Как я уже упоминал выше, мы должны обучить модуль, прежде чем мы сможем использовать его для распознавания голоса. Выполните следующие действия, чтобы обучить модуль.
- Подключите цепь к компьютеру.
- Проверьте, правильно ли вы выбрали плату Arduino. (Инструменты -> Плата)
- Убедитесь, что выбран правильный COM-порт. (Инструменты -> Порт)
- Теперь откройте образец программы для обучения модуля.
- Перейдите в Файл -> Примеры -> VoiceRecognitionV3 -> vr_sample_train
- Загрузите код в Arduino и дождитесь загрузки кода. (Ctrl + U)
- Откройте Serial Monitor. (Ctrl + Shift + M)
- Убедитесь, что для скорости передачи установлено значение 115200 и выбран параметр « Newline ».
- Если все в порядке, на последовательном мониторе отобразится меню, как показано на рисунке выше.
- Есть несколько команд, которые вы можете ввести в монитор последовательного порта, чтобы запрограммировать модуль, здесь мы будем использовать команду «train» для обучения модуля.
- V3 может хранить 80 голосовых команд длительностью 1500 мс каждая. Каждая команда хранится по адресу, начиная с 0 до 79.
- Используя команду «train», мы сохраняем голосовую команду по определенному адресу, поэтому вы должны указать адрес в команде.
- Синтаксис команды выглядит следующим образом: адрес поезда Например: поезд 0, поезд 20, поезд 79.
- Нам потребуются две голосовые команды для управления светодиодом. Одна команда для включения, а другая — для выключения.
- Введите команду в мониторе последовательного порта, а затем укажите адрес, который вы хотите сохранить. например: train 20.
- После того, как вы ввели команду, дождитесь появления сообщения на последовательном мониторе с надписью «говорите сейчас».Теперь произнесите команду включения светодиода в микрофон достаточно четко и громко.
- Если команда достаточно четкая, появится другое сообщение с просьбой говорить еще раз. Произнесите это еще раз, чтобы зарегистрировать команду.
- Код попросит вас повторить команду, если во время записи возникает шум или звук недостаточно четкий. Здесь большую роль играет качество вашего микрофона. Вы можете не зарегистрировать команду, если ваш микрофон недостаточно хорош.Также тренируйте доску в бесшумной среде.
- После успешного ввода голоса в модуль повторите тот же процесс, чтобы ввести голосовую команду для выключения светодиода. Не забудьте сохранить команду по другому адресу. Например: train 30.
- Если вы успешно загрузили обе команды, теперь вы готовы загрузить код для управления светодиодом.
- Откройте пример программы для управления светодиодом.
- Перейдите в Файл -> Примеры -> VoiceRecognitionV3 -> vr_sample_control_led
- В этой программе две записи определены как «onrecord» (для включения светодиода) и «offrecord» (для выключения светодиода).
- Измените значение «onrecord» на адрес голосовой команды, которую вы обучили для включения светодиода.
- Измените значение «offrecord» на адрес голосовой команды, которой вы обучили выключать светодиод.
- Теперь загрузите код в Arduino. (Ctrl + U)
Вот и все. Теперь вы готовы управлять своим светодиодом с помощью голосовых команд.
Результат
Чтобы проверить схему, произнесите команды так же, как вы обучили ее включать / выключать светодиод. Помните, что качество вашего микрофона и окружающий шум действительно повлияют на качество звука. Попробуйте протестировать его в среде без шума или замените микрофон, если вы не получаете должного ответа на свои голосовые команды.Также откройте монитор последовательного порта, чтобы проверить, отвечает ли устройство на ваши голосовые команды. Если команда распознается, серийный монитор покажет сообщение с адресом распознанной команды.
Поздравляю! Вы научились управлять светодиодом с помощью голосовых команд. Теперь вы можете преобразовать любое такое устройство в устройство с голосовым управлением. Подключите релейный модуль к Arduino для управления устройствами переменного тока, такими как лампочка или вентилятор.
Есть множество возможностей применить это в нашей повседневной жизни.Поделитесь своими мыслями в разделе комментариев ниже.
Я надеюсь, что это руководство дало вам базовое представление об использовании модуля распознавания голоса Elechouse V3 с Arduino. Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать, я постараюсь вам помочь.
Спасибо.
Самый простой способ для проекта распознавания голоса с использованием c # toarduino
Примечание. Привет,. Я сделал этот проект 2 года назад и получил обнадеживающие отзывы. Если вы новый участник, я бы порекомендовал вам следовать ниже (обновленное руководство 2020 г.)
Ссылка на руководство по обновлению:
https: // medium.com / illumination / how-to-make-your-first-voice-project-using-arduino-956bfd494947
Спасибо 🙂
Описание проектаМы все наделены различными типами датчиков, такими как (ухо, язык, нос …), и мы используем их в нашей повседневной жизни, причем не в одностороннем, а в двухстороннем общении, при этом происходит передача и получение данных. Та же концепция, которую мы применяем в машинах!
Как новичок, почти каждый начинает с включения / выключения мигающих светодиодов, и я тоже это делал, но я хотел управлять этими электронными компонентами с помощью своих голосовых команд.Итак, наконец, после того, как я поискал и узнал из Интернета, я завершил проект и готов поделиться этим проектом с творческим сообществом. Особенно ( Новичков, )! Самый простой способ распознавания голоса с помощью Arduino!
Чтобы упростить задачу, мы используем светодиоды. В этом проекте мы будем включать / выключать светодиоды не стандартным способом, а с помощью наших голосовых команд, и интересная часть состоит в том, что это очень просто и легко, требуется лишь немного знаний программирования, вот и все!
Почему я сделал этот проект?Все началось с того, что мой учитель продемонстрировал нам проект приложения Windows Form на C #.В этом проекте Сэр управлял виртуальной лампочкой с помощью голосовых команд, и это было сделано с использованием программного обеспечения Visual Studio C #, только без Arduino или любого другого оборудования. Это было потрясающе 🙂 Итак, для нового проекта, использующего Arduino, я подумал, почему бы не управлять Led с помощью голосовой команды, потому что в этом проекте мы физически контролируем оборудование, а не виртуально, что сэр продемонстрировал.
Почему этот проект простой?Есть еще одна важная причина для этого проекта, и это вы, создатели. Я думал, этот проект поможет сообществу разработчиков создать что-то новое, а функция распознавания голоса повысит креативность и ценность проекта! Теперь самое удивительное, почему это так просто? Поскольку , вам не нужен внешний модуль для создания этого проекта 🙂 Я был уверен, что должен быть способ сделать этот проект без использования модуля распознавания голоса! и, наконец, нашел этот способ благодаря приведенной ниже ссылке https://www.https: //www.https: //www.c-sharpcorner.com/article/turning-led-off-and-on-through-voice-recognition/
Как это сделать?Соберите все компоненты, необходимые для этого проекта.
- Спроектируйте схему на макетной плате, как показано ниже.
- Затем подключите USB-кабель Arduino к компьютеру.
- Загрузите код Arduino, откройте IDE Arduino и создайте новый эскиз, вставьте код.
Есть только одно программное обеспечение, которое вам нужно будет установить, и это визуальная студия, которую я использую Microsoft Visual Studio версии 2010, и вы можете установить любую версию, которую хотите, просто убедитесь, что вы можете создать из нее приложение формы Windows, используя C #.смотрите, чтобы загрузить Visual Studio
Щелкните ссылку ниже, а затем нажмите кнопку загрузки-> прямая загрузка запустите приложение C #, нажав кнопку запуска с зеленой стрелкой
Примечание # 0: Этот проект не будет работать, если вы не включили библиотеку using.system.speech в код Visual Studio. Не беспокойтесь. просто следуйте приведенным ниже инструкциям, чтобы включить библиотеку. Перейдите на панель инструментов выше Project-> Add Reference->.Net -> Найдите с помощью.system.speech и нажмите ОК, вот и все 🙂
Примечание # 1: Убедитесь, что ваш COM-порт, который вы выбрали в своей среде разработки Arduino, такой же, как и в Visual Studio с # код. см. ниже мой COM-порт — это COM5. То же самое в коде Arduino и C #.
Если у вас возникла путаница, просто посмотрите это демонстрационное видео, и вы готовы управлять светодиодами с помощью голоса 🙂
Нажмите здесь, чтобы посмотреть демонстрацию проекта Youtube
Что вы сделали из этого проекта?Используйте свое творчество, чтобы сделать что-то новое из этого проекта.
Учитесь, создавайте, делитесь и повторяйте
Управляйте Arduino своим голосом
Группа инженеров по обучению
Команда опытных инженеров, делящихся знаниями с миром
Группа инженеров по обучению — ведущая команда в индустрии микроконтроллеров, с более чем 13 лет опыта в преподавании и выполнении практических проектов.
Мы стремимся использовать весь наш практический опыт на этих курсах.Вместо поверхностных знаний — мы углубимся в тему и дадим вам точный — пошаговый план того, как приручить простые, а также сложные темы в легких и легко усваиваемых видеороликах небольшого размера.
Эти реальные знания позволяют легко усваивать знания, и вы можете сразу же применять их в своей жизни и проектах.
Группа инженеров по обучению занимается программированием и микроконтроллерами с 2007 года . Мы участвовали во многих проектах.За эти годы мы получили хорошее представление о потребностях студентов и преподавателей. Мы стремимся делиться с вами всеми нашими коллективными знаниями. По состоянию на 2018 год мы уже обучили более 250 тыс. Студентов, из них .
В настоящее время у нас более 100+ курсов по Удеми
Педагог и автор «Образовательной инженерии».
Ашраф — педагог, инженер мехатроники, любитель электроники и программирования, производитель .Он создает онлайн-видеокурсы на канале EduEng на YouTube (более 4 миллионов просмотров, более 20 тысяч подписчиков) и автор четырех книг о микроконтроллерах.
В качестве главного инженера по вопросам образования с 2007 года в компании Educational Engineering Team, которую он основал, миссия Ашрафа заключается в изучении новых тенденций и технологий, помощи в обучении и улучшении мира.
Педагогическая инженерия предлагает образовательные курсы и учебные курсы, статьи, уроки и онлайн-поддержку для любителей электроники, любителей программирования, любителей микроконтроллеров, студентов STEM и учителей STEM.
Эта команда также работает в качестве инженеров-фрилансеров, помогая многим студентам в их дипломных проектах и предоставляя рекомендации и консультации многим студентам на протяжении многих лет, чтобы помочь им начать свою карьеру.
Основной навык Ашрафа заключается в пошаговом объяснении сложных понятий с помощью видео и текста. Обладая более чем 11-летним опытом преподавания в высших учебных заведениях, Ашраф разработал простой, но всеобъемлющий и информативный стиль обучения, который ценят студенты со всего мира.
Свою страсть к микроконтроллерам и программированию и, в частности, к миру Arduino, микроконтроллеров PIC, Rasberry Pi руководил своим личным развитием и своей работой через образовательную инженерию.
Онлайн-курсы Ashraf помогли более 250 000 человек со всего мира стать лучше и сделать отличную карьеру в отрасли.
Группа инженеров по обучению предлагает курс по
Проектирование схем, моделирование и изготовление печатных плат
Arduino, микроконтроллер PIC и Raspberry Pi
Программирование на C, Python и других языках программирования
Промышленное программирование и автоматизация ПЛК
3D-дизайн и моделирование
ESP и мир Интернета вещей
Для получения дополнительной информации воспользуйтесь ссылками на странице профиля, чтобы следить за учебной группой инженеров и последними инновациями Ashraf.
DIY-проект для разработки разнонаправленного бота с голосовым управлением на базе Arduino
Здесь мы покажем вам интересную особенность. Ранее мы показали, как создать вашего разнонаправленного бота, которым можно управлять с помощью мобильного приложения с поддержкой Bluetooth с помощью виртуальных джойстиков.
Если вы не смотрели предыдущее видео, нажмите здесь.
Сегодня мы узнаем, как разработать робота с голосовым управлением , который будет основан на Bluetooth.
Сегодня мы подключим робота к приложению, которое будет преобразовывать ваши голосовые команды в Bluetooth. Вы даже можете добавить собственный код, чтобы ваш бот двигался под разными углами и направлениями.
Если вам меньше 16 лет, делайте это под присмотром взрослых!
1) DIY PCB с ULN2803 для Multi-directional Control
2) HC-05 Bluetooth-модуль
3) Схемы Arduino — UNO
4) Батарея 9V
5) Провода перемычки
6) Шасси с BO двигателями и колесами
7 ) Мобильное устройство Android с поддержкой Bluetooth
8) Прочие предметы, такие как двусторонняя лента и соединители
Действия, которые необходимо выполнить
1) Это печатная плата ULN2803, это заголовки заземления, это положительные заголовки, это контакты входного сигнала, и эти контакты будут управлять двигателями.
2) Подключите заземление компонентов, так что давайте сделаем это.
3) Подключите VCC модуля Bluetooth к контакту 5V Arduino и заземление к контакту GND Arduino
4) Подключите положительные провода двигателя к положительным контактам печатной платы. Подключите другие провода двух двигателей слева и справа к разъемам PIN18 и PIN17 на микросхеме ULN2803.
5) Подключите перемычки от контакта 6 схемы Arduino к контакту 1 и от контакта 5 Arduino к контакту 2 печатной платы.
6) Подключите перемычки от RX модуля Bluetooth к TX Arduino и TX модуля Bluetooth к RX Arduino.
7) Проверьте, правильно ли вы подключили все провода в системе.
8) Подключите перемычку от положительного вывода печатной платы к VIN Arduino. Подключите аккумулятор к разъему на печатной плате. Если все в порядке, вы увидите, что на плате Arduino загорятся светодиоды, а светодиоды модуля HC05 будут последовательно мигать.
1) Загрузите приложение BT Voice Control для Arduino из Play Store.
2) Включите Bluetooth на телефоне и выполните сопряжение устройства с HC-05.
3) Обычно пароль 1234. Если в вашем комплекте был другой пароль, используйте его.
4) Откройте приложение.
5) Подключите робота из настроек.
6) Выберите HC-05.
7) Нажмите кнопку микрофона и произнесите команду. Например: вперед, влево, вправо и т. Д.
8) Если ваша система работает правильно, она будет двигаться, когда обнаружит слова
Это вторая сборка интеллектуального беспроводного бота . Не стесняйтесь экспериментировать с различными голосовыми командами, настраивая свой код.У нас скоро для вас будет что-то отличное!
Распознавание голоса с роботом-компаньоном Отто DIY
С самого начала изобретения роботов мы, люди, всегда хотели, чтобы они управляли или реагировали, просто разговаривая с ними. В научно-фантастических фильмах это тоже довольно распространенное «требование», которое вы ожидаете увидеть в любом интерактивном роботе. Отто не был исключением, с тех пор, как мы запустили его, члены сообщества (Otto Builders) и многие люди спрашивали нас, может ли Отто отвечать на голосовые команды или будет… Дело в том, что — это не простая наука, чтобы ваш робот понял сказанное вами и преобразовал в сигналы, интерпретировал и, наконец, совершил определенные действия, обычно для этого требуются мощные процессоры и дорогая электроника.
Только представьте себе, можно ли поместить в Отто большую Алексу? мы уже видим большие ограничения в пропорциях и совместимости технологий, так что это не так просто, как просто: o «просто делай то, что сделала амазонка» достаточно забавно , какова цена Alexa? , который будет добавлен в Otto и, что более важно, будет говорить об удобстве использования. Вы хотите, чтобы ваш Otto заказал для вас пиццу? или все другие умные вещи, которые она делает? Может, в конце дня мы с тобой просто хотим, чтобы Отто мог делать движения, когда ты их говоришь.
Если мы решим эту проблему таким образом, то мы можем кое-что сделать сейчас, и нам не нужно ждать, пока технология распознавания голоса Alexa станет дешевле или меньше, если это вообще произойдет.
Потребовалось время, чтобы исследовать, найти и даже протестировать некоторые модули, которые мы видели в сети, и постарались сохранить их простую совместимость с Arduino nano, чтобы нам не нужно было изменять то, что мы сделали с кодом Отто, или полностью воссоздавать, и, конечно же, что-то портативное и независимое, которое нам не нужно было подключать к компьютеру или мобильному телефону.На самом деле существует множество вариантов, но многие из них были либо сложными, большими (особенно микрофон), либо довольно дорогими.
Мы выяснили, что у наших друзей из студии Seeed есть доступный и небольшой модуль распознавания речи : Итак, обращайтесь к ним, и им очень нравится идея, поэтому они совместно поддерживают нас своими компонентами (подробнее о них см. конец этого поста). Мы приняли вызов использовать технологию распознавания голоса с #OttoDIY.
Их модуль, использующий голос для взаимодействия с вещами вокруг вас, всегда может быть одной из самых интересных вещей в приложении IoT, вот их описание: мы хотели сделать что-то более необычное и крутое. Не всем нужно продвинутое интеллектуальное устройство для создания проекта голосового управления, иногда людям нужно только простое решение, здесь мы хотели бы представить первое поколение распознавателя речи Grove, чтобы легко и быстро реализовать вашу мечту об умном доме. Так что в основном это именно то, что нам нужно!
Распознаватель речи Grove предназначен для приложений голосового управления, таких как умный дом, умная игрушка, робот с голосовым управлением, все, чем вы хотите управлять с помощью голоса, стоит попробовать.Плата включает Nuvoton ISD9160, микрофон, 1 вспышку SPI, 1 разъем Grove, 1 разъем динамика и 1 светодиод для отражения вашего голоса.
Nuvoton ISD9160 — это (SoC) Chipcorder, основанный на Cortex ™ -M0, он обеспечивает надежное и экономичное решение для приложений голосового управления. ISD9160 — не единственная удивительная вещь в этой роще. Посмотрим на микрофон. Помните неудобный момент, когда вам нужно говорить прямо и близко к устройству распознавания голоса, чтобы убедиться, что оно вас слышит? На этот раз этого не произойдет! Микрофон в распознавателе речи Grove является всенаправленным, что означает, что независимо от того, говорит ли пользователь в микрофон спереди, сзади, слева или справа, микрофон будет записывать все сигналы с одинаковым усилением.
Этот распознаватель речи может распознавать 22 команды, включая «старт», «стоп», «воспроизведение музыки» и т. Д. Каждый раз, когда он распознает команду, он возвращает значение, а затем подключенный к нему громкоговоритель повторяет команду. Это значение можно использовать для управления другими устройствами, такими как мотор, музыкальный проигрыватель. Мы часами тестировали его, чтобы убедиться, что он обладает высокой скоростью распознавания и очень низким уровнем ложных срабатываний.
Когда он распознает слово пробуждения, светодиод загорится красным, затем вы можете произнести командное слово, если он распознает командное слово, светодиод станет синим.
Характеристики:Очень низкий уровень ложных срабатываний
- Очень низкий уровень ложных срабатываний
Разъем динамика (JST2.0, динамик не входит в комплект)
- Разъем динамика (JST2.0, динамик не входит в комплект) )
Встроенный микрофон
Рабочее напряжение 3,3 / 5 В
22 запись распознавания
Скорость передачи данных по умолчанию: 9600
Все это всего за 19,5 долларов США . Довольно хорошие функции по такой цене !?
Конечно, с более низкой стоимостью приходят более низкие функциональные возможности и ограничения, переведенные в количество определенных сообщений / команд распознавания, которые мы можем использовать, но для быстрого начала голосового управления и Отто идеально подходит. Имея уже предоставленные простые программы и библиотеки, мы адаптировались к нашему коду Отто и посмотрим, что мы сделали за очень короткое время!
видео с управлением распознаванием речи робота OttoМы решили сделать Otto полностью из компонентов студии Seeed, чтобы также доказать, насколько гибок дизайн нашего робота для адаптации к любому электронному компоненту / функции, которую вы хотите установить, и протестировать соединение Grove Система, которая значительно упростила соединение компонентов, особенно с новым экраном для Arduino Nano:
. Вы можете решить, что использовать, но распознавание голоса имеет фундаментальное значение, тогда вам просто нужно напечатать на 3D-принтере наш самый простой Otto, 3D файлы здесь: (https: // wikifactory.com / + OttoDIY) все помещается прямо внутри, , но, конечно, зависит от вас, возможно, вы можете добавить к любому из ремиксов членов семьи Otto (https://wikifactory.com/+OttoDIY/projects)
И Это только начало.
Вы бы хотели, чтобы мы продолжили изучение возможностей распознавания голоса или, может быть, Отто это не нужно?
Вы бы сделали это по-другому?У вас есть идеи или мысли, которыми вы хотели бы поделиться? прокомментируйте, пожалуйста, ниже.
Голосовое управление: создание голосового помощника
Голосовое управление было предметом научной фантастики на протяжении всего 20 века. Но в последние два десятилетия голосовое управление стало мейнстримом. Голосовые помощники, такие как Siri и Alexa, встроены в домашние устройства, наушники и даже автомобили.
Но как мы дошли до этого момента? Какая связь с машинным обучением на границе сети? И как вы можете создать собственное периферийное устройство с голосовой активацией? Эта статья, входящая в серию статей о машинном обучении на периферии, дает ответы на все эти и многие другие вопросы.
Распознавание речи в реальном мире
Голосовое управление всегда восхищало как футурологов, так и авторов научной фантастики. Когда это было впервые предложено, это должно было казаться далекой мечтой. Но за последнее десятилетие голосовое управление стало обычным делом. Это благодаря сочетанию факторов.
Усовершенствования в области распознавания речи , и обработки естественного языка, , доступности мощных компьютеров для машинного обучения и роста мощных периферийных устройств.В настоящее время мы можем видеть примеры голосового управления повсюду вокруг нас.
Виртуальные голосовые помощники
Виртуальные помощники , такие как Alexa, Siri и Google Assistant, стали причиной огромного распространения систем голосового управления. По сути, виртуальный помощник слушает ваши инструкции и действует в соответствии с ними. Например, вы можете попросить его включить музыку, рассказать вам погоду или провести вас к месту назначения.
В целом все эти виртуальные помощники работают одинаково.Им требуется подходящее периферийное устройство с возможностью подключения к сети и мощная серверная часть. Как правило, пограничным устройством может быть смартфон, интеллектуальная колонка или, все чаще, какое-либо другое устройство, такое как телевизор или пара наушников.
Пограничное устройство просто пытается обнаружить «пробуждающее слово». Он отправляет голосовое сообщение на серверную часть для обработки, а затем обрабатывает возвращаемый результат. Очевидно, что этот процесс зависит от хорошего подключения к Интернету. Однако недавние усовершенствования в области периферийных технологий означают, что на устройстве можно сохранить все больше и больше функций.
Легковые автомобили
Отвлечение внимания водителей — одна из основных причин смертей и травм на наших дорогах. В результате производители автомобилей вложили миллиарды в средства помощи водителю, которые помогают уменьшить отвлекающие факторы. Одним из наиболее эффективных способов является голосовое управление автомобилями. Это позволяет водителю взаимодействовать с информационно-развлекательной системой без помощи рук.
В отличие от голосовых помощников, указанных выше, такие системы не могут полагаться на наличие сетевого подключения. В результате все распознавание и обработка голоса должны выполняться на периферийном устройстве.
Поиск для голосового управления
Как упоминалось выше, голосовое управление выросло из достижений в области распознавания речи и NLP, а также увеличения вычислительной мощности. Создание функционального голосового управления потребовало от компьютерщиков решить ряд задач.
Во-первых, как записать говорящего человека и преобразовать его в текст? Затем, как вы проанализируете этот текст, чтобы извлечь его значение? Наконец, как выработать правильный ответ?
Эти проблемы интересовали компьютерных ученых задолго до изобретения современного компьютера.Действительно, идея научить компьютеры понимать людей восходит к самым ранним дням развития компьютеров. Каждая из этих проблем требовала своего решения
Распознавание речи
В 1990-е годы все больше и больше людей получали доступ к компьютерам на работе и дома. Однако немногие из этих людей умели печатать. Итак, много усилий было вложено в создание систем, которые позволили бы человеку диктовать компьютеру.
Этот процесс преобразования вашего голоса в слова на экране известен как преобразование речи в текст или распознавание речи.
Самые ранние системы распознавания речи были созданы в 1950-х годах. Они умели различать отдельные произносимые цифры. Однако только в конце 1960-х годов распознавание речи стало серьезной областью исследований. К 1970-м годам были разработаны системы, которые могли распознавать более длинные слова и даже фразы.
Настоящий прорыв произошел с применением скрытых марковских моделей к проблеме. К 1987 году это привело к модели отката Каца, которая позволила на практике распознавать речь на компьютерах или специализированных процессорах.
В течение следующего десятилетия системы становились все лучше и лучше в распознавании речи на нескольких языках. К середине 1990-х годов технология была достаточно развита, чтобы компании начали продавать коммерческие системы распознавания речи.
Раннее распознавание речи часто основывалось на обучении системы распознаванию одного голоса. Это было достигнуто, попросив пользователя прочитать определенный отрывок текста. В этот текст вошли все возможные фонемы, части речи и т. Д.чтобы позволить системе узнать голос этого пользователя.
Совсем недавно мы увидели, как распознавание речи применяет подходы машинного обучения, чтобы научиться понимать разные акценты. Это позволяет избежать классической проблемы, когда компьютер не может понять человека с сильным акцентом. Современные системы теперь могут понимать несколько региональных и национальных акцентов.
Обработка естественного языка
Конечно, просто уметь записывать то, что говорит человек, недостаточно.Голосовое управление также требует, чтобы компьютер понимал, что говорится. Это гораздо более сложная проблема, известная как обработка естественного языка или сокращенно NLP. Здесь компьютер должен узнать, что вы на самом деле имели в виду. Если вы выучили иностранный язык, вы знаете, насколько это может быть сложно.
Проблема в том, что человеческий язык зависит от множества факторов. Контекст, эмоции, знания и идиома меняют значение предложения. Часто есть много способов сказать одно и то же, даже если это так просто, как телефонный звонок.«Я звоню родителям», «Я звоню домой», «Я должен позвонить папе» и т. Д. НЛП — это процесс обучения компьютера структуре и значению человеческого языка.
На протяжении десятилетий НЛП было теоретической областью. Компьютеры просто не были достаточно мощными, чтобы решить эту проблему. В настоящее время компьютеры становятся все лучше и лучше. Во многом это связано с улучшениями в машинном обучении, особенно в глубоком обучении. Последние подходы сочетают в себе несколько различных технологий машинного обучения.
- Обучение с учителем из больших корпусов записанной и аннотированной речи.
- Обучение с подкреплением для повышения производительности на основе отзывов людей.
- Трансферное обучение , чтобы позволить специалистам по данным уточнять существующие модели, такие как BERT, ELMO или GPT-2.
В результате системы могут понимать все больше и больше человеческого языка.
Принятие решения
Последнее требование к системе голосового управления — это решение, как отвечать пользователю.Другими словами, какие действия система должна на самом деле предпринять? Для этого есть много подходов. В простых системах вы можете использовать механизм правил. Это просто список действий, которые нужно предпринять с учетом набора входных условий.
Многие голосовые помощники используют этот вариант. Например, Amazon Alexa позволяет вам писать свои собственные навыки. Здесь вы можете указать, что вы ожидаете от пользователя, и дать соответствующий ответ.
Однако для голосовых помощников диапазон возможных инструкций полностью неограничен.Таким образом, все чаще используется обучение с подкреплением и обучение без учителя, чтобы позволить системе реагировать на инструкции, которые она слышит.
Итак, теперь вы немного понимаете, как работают распознавание голоса и голосовое управление. Но как насчет того, чтобы применить это на практике? В оставшейся части этой статьи я объясню, как на самом деле можно реализовать простой голосовой контроллер.
Практическая реализация голосового управления
Этот пример основан на простой модели голосового контроллера, который может распознавать слова «да» и «нет».Модель создается в TensorFlow и переносится на TensorFlow Lite, что позволяет ей работать на периферийных устройствах с низким энергопотреблением.
Требования к оборудованию
Мы собираемся использовать для реализации комплект разработчика Infineon XMC4700 Relax. Этот комплект основан на ядре ARM® Cortex®-M4, работающем на частоте 144 МГц, с 325 КБ ОЗУ и 2 МБ флэш-памяти. Плата оснащена разъемом для щита Arduino, что упрощает добавление периферийных устройств после того, как вы припаяете разъемы на место.
Очевидно, поскольку это голосовой контроллер, первое требование — добавить микрофон к плате.Вы можете выбрать практически любой щит Arduino с микрофоном. Я выберу Infineon S2GO MEMSMIC IM69D Shield2Go, который предоставляет 2 микрофона MEMS на плате Arduino Uno. Прежде чем вы сможете использовать экран, вам нужно будет припаять разъемы.
Программные требования
Программное обеспечение для этого проекта можно найти на GitHub Mouser. Клонируйте репозиторий и откройте папку «Программное обеспечение». Здесь вы найдете все файлы, необходимые для проекта. Сюда входят:
- Образцы данных для команд «да» и «нет» (на основе быстрых преобразований Фурье захваченных образцов речи)
- Фактическая модель для распознавания команд
- Ответчик для обработки итогового решения
- Основной файл для связать все части.
Кроме того, вам понадобится подходящий набор инструментов для разработки, такой как Arduino IDE или Infineon DAVE IDE. Я собираюсь использовать IDE Arduino. Это означает, что мне нужно добавить правильную библиотеку Infineon XMC.
- Перейдите к Preferences и найдите запись «Дополнительные URL-адреса менеджера плат». Вставьте https://github.com/Infineon/XMC-for-Arduino/releases/latest/download/package_infineon_index.json и нажмите OK.
- Щелкните Tools > Board: «Arduino Uno» > Boards Manager .NB по умолчанию вы увидите «Плата:« Arduino Uno », но если вы уже использовали IDE, вы увидите последнее семейство плат, которое вы использовали.
- Введите XMC в поле поиска и нажмите Enter.
- Вы должны увидеть запись «Infineon’s XMC Microcontroller». Щелкните Установить .
- После завершения установки нажмите Закрыть .
Теперь вы можете установить правильную плату в IDE. Для этого перейдите к Tools > Board: «Arduino Uno» > XMC Family > XMC4700 Relax Kit .
Последнее, что вам нужно, это программное обеспечение SEGGER J-Link. Это позволит вам получить доступ к встроенному отладчику и программатору на XMC4700 Relax Kit. Программное обеспечение можно найти здесь.
После того, как все это сделано, вы готовы фактически построить проект.
Строительство пр.
К счастью, программное обеспечение, которое вы клонировали из репозитория Mouser GitHub, было написано специально для этой платы. Это означает, что компилировать программу довольно просто.Сначала подключите плату к компьютеру, используя порт отладки Micro-USB рядом с гнездом RJ45. Перейдите к Tools > Port и убедитесь, что выбран правильный порт.
Примечание. Возможно, вам потребуется определить, к какому COM-порту подключена плата. Вы можете сделать это в Windows с помощью диспетчера устройств. Или в MacOS введите ls /dev/tty.* в терминале и найдите правильный порт в списке.
Во-вторых, вам нужно переименовать main-functions.cc в voice-control.ino. Вам также необходимо переименовать папку «Программное обеспечение» в «Голосовое управление». Это позволит IDE Arduino распознать это как проект.
В-третьих, откройте переименованный проект голосового управления в Arduino IDE. Перейдите в Файл > Откройте и перейдите в нужную папку. Выберите voice-control.ino и нажмите Открыть .
Последний шаг — компиляция и загрузка программного обеспечения. Это действительно просто: просто перейдите к Sketch > Upload и (все в порядке) программное обеспечение будет скомпилировано и записано на вашу плату.
Тестирование голосового управления
Убедитесь, что экран микрофона подключен к плате XC4700. Подключите плату к источнику питания USB (или к компьютеру). Дайте плате полностью включиться. Теперь скажите в микрофон слово «да». LED1 на плате должен загореться на 3 секунды. Затем скажите слово «нет». На этот раз LED2 должен загореться на 3 секунды. Если ничего не слышно или система не может распознать сказанное, светодиоды не загорятся. Если вы хотите использовать это как настоящий контроллер, вы можете легко изменить команду-респондент.cc.
Выходя за рамки простого распознавания голоса
Все практические примеры, которые мы рассмотрели до сих пор в этой серии, были относительно простыми. В следующей статье я рассмотрю более мощные аппаратные платформы, которые выводят крайнее машинное обучение на новый уровень. Эти платформы специально разработаны для запуска приложений ИИ на периферии. В их числе:
- Coral TPU от Google, платформа и экосистема для создания ИИ, сохраняющего конфиденциальность.
- Intel NCS2 или Neural Compute Stick, флэш-накопитель USB с функцией plug-and-play, специально разработанный для максимально эффективного глубокого обучения.
- STM32 Cube.AI от ST, пакет, который переносит искусственные нейронные сети в микроконтроллеры ST на базе Cortex.
Мы увидим, как эти платформы выходят за рамки простых предварительно обученных моделей машинного обучения, обеспечивая глубокое обучение и обучение без учителя на периферии.
3 способа добавить управление речью в проекты Arduino
В последнее время я действительно начинаю любить свой Arduino; Пройдя базовые уроки и даже сделав светодиодный куб, я был готов заняться чем-то гораздо более сложным.К счастью, управление речью в проекте Arduino на самом деле не так сложно, как я думал, поэтому вот 3 совершенно разных подхода, которые вы можете использовать.
В последнее время я действительно начинаю любить свой Arduino; Пройдя базовые уроки и даже сделав светодиодный куб, я был готов заняться чем-то гораздо более сложным. К счастью, управление речью в проекте Arduino на самом деле не так сложно, как я думал, поэтому вот 3 совершенно разных подхода, которые вы можете использовать.
Использование OSX Automator и Speakable Items
Один из способов сделать это — использовать существующие утилиты голосовых команд, встроенные в OSX; настроить пользовательские команды для запуска действий Automator просто. (Если вы не знакомы с Automator, загрузите наше бесплатное руководство по автоматизации Mac в формате PDF!)
На стороне кода Arduino мы используем строковый буфер, подробно описанный в этой ветке форума Arduino — это позволило нам искать точные слова в последовательной связи — без этого я обнаружил преобразования типов между числами , байтов , и строки будут проблематичными.Вот полный код Arduino для прослушивания последовательных команд, хотя вам нужно будет добавить свои собственные команды и оборудование для фактического управления устройствами, поскольку это выходит за рамки этого руководства по проекту Arduino. Если вы используете реле, помните, что они должны выдерживать 120–240 В переменного тока. Кроме того, если вы новичок во всем этом, обязательно сначала ознакомьтесь с нашим руководством по Arduino для начинающих.
Затем загрузите эту утилиту Arduino-serial, которая позволяет нам напрямую связываться с Arduino из командной строки или сценария оболочки.Поместите это в корень вашего пользовательского каталога, затем откройте сеанс терминала и введите:
сделать arduino-serial
чтобы скомпилировать пакет для вашей системы.
Использовать эту утилиту довольно просто, но для наших целей начнем с ввода
ls /dev/tty.*
чтобы выяснить, к какому порту подключена ваша Arduino (USB-порт). Затем, чтобы отправить команду, используйте:
./ arduino-serial -b 9600 -p /dev/tty.usbmodemfd13411 -s lightsOn
Замените /dev/tty.usb~ точным именем, которое вы нашли для вашего USB-порта, подключенного к Arduino. Обратитесь к исходной странице для получения дополнительных примеров использования, включая получение возвращаемого значения, но пока этого достаточно.
Одна вещь, которую я обнаружил, это то, что мне пришлось «запустить» Arduino, отправив сначала команду с помощью Arduino Serial Monitor , а затем все заработало нормально.Если кто-нибудь знает, почему это так, я хотел бы услышать.
Затем откройте Automator и создайте новое приложение Application . Найдите действие Run a Shell Script , добавьте его и вставьте последовательную команду, чтобы включить свет.
Сохраните это в папке library / speech / Speakable Items со словами, по которым вы хотите вызвать действие — в моем случае «горит».
Затем включите голосовые команды на панели настроек Accessibility .
Этот учебник 2009 года все еще актуален, но в основном вы хотите включить Global Speakable Items .
Вот демонстрация того, как все работает.
Easy VR Shield (Аппаратное обеспечение)
EasyVR — это дополнительный аппаратный щит, который сначала кодирует ваши предварительно записанные образцы речи, а затем использует аппаратное решение для их сопоставления с образцом.Настройка немного сложна, и каждая команда отвечает только на один голосовой отпечаток, но это наиболее полный выбор, если вы хотите, чтобы проект не зависел от компьютера. EasyVR Shield стоит 35 фунтов стерлингов от CoolComponents в Великобритании или 50 долларов от SparkFun в США. Вот демонстрация щита в действии вместе с процессом кодирования:
SiriProxy через Ruby
Если у вас есть взломанный iPhone с поддержкой Siri, Siri Proxy — отличный способ использовать возможности распознавания голоса вашего телефона.SiriProxy — это приложение на Ruby, которое прослушивает команды, которые распознаются и отправляются на серверы Apple; добавьте способ связи с Arduino, и у вас будет SiriProxy-Arduino. Единственным недостатком является то, что вам нужно загрузить в Arduino специальный эскиз, который реализует Ruby API, поэтому вам нужно либо его настроить, либо закодировать все на Ruby на стороне компьютера.
Вот и все — 3 уникальных способа управлять любым проектом Arduino одним голосом. Вы попробуете управлять своим светом голосом? Как вы думаете, вы могли бы использовать эти идеи в другом проекте? Дайте нам знать об этом в комментариях!
Microsoft запускает Windows 11: вот как это получитьWindows 11 выходит в эфир, и вы можете получить ее прямо сейчас!
Читать далее
Об авторе Джеймс Брюс (Опубликовано 712 статей)Джеймс имеет степень бакалавра в области искусственного интеллекта и имеет сертификаты CompTIA A + и Network +.Когда он не занят в качестве редактора обзоров оборудования, он любит LEGO, VR и настольные игры. До прихода в MakeUseOf он работал светотехником, учителем английского языка и инженером центра обработки данных.
Более От Джеймса БрюсаПодпишитесь на нашу рассылку новостей
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Нажмите здесь, чтобы подписаться
.