Raspberry Pi, Python и распознавание голоса

Одна серьезная проблема относительно покупки еды у многих - это когда ты полностью забываешь что купил и когда она испортится. Мы используем Raspberry Pi, Python и распознавание голоса, чтобы создать систему, которая добавляет или удаляет элементы в списке того, что находится в холодильнике.

Что нам пригодится

Аппаратные средства:

1 - Raspberry Pi модель B (с Wi-Fi)
1 - USB аудиокарта
1 - Микрофон

Программное обеспечение:

1 - Python 3
1 - Библиотека распознавания речи Python
1 - Библиотека PyAudio Python

Установка библиотек Python и настройка аудио

Прежде чем мы сможем запустить нашу программу на Python, нам необходимо установить две библиотеки - распознавание речи и PyAudio. Чтобы установить эти две библиотеки, вам нужно запустить следующие две команды в окне терминала:

Если у вас возникли проблемы с установкой PyAudio, вы можете установить ео, используя следующую последовательность инструкций:

После того, как эти две библиотеки будут установлены, вам необходимо отключить встроенный аудио драйвер на Raspberry Pi, так как это может помешать работе PyAudio. Для этого начните с открытия нового терминала и выполните следующие команды:

Nano - простой текстовый редактор для терминала, и когда он загружается, вам нужно только ввести одну строку:

Нажмите Ctrl + X, чтобы выйти из nano и сохранить файл с именем alsa-blacklist.conf. Этот простой файл отключает аудиосистему Broadcom от Raspberry Pi, поэтому единственной аудиосистемой, доступной на Pi, является звуковая карта USB.

Как работает голосовой контроль списка холодильника

Сценарий Python начинается с импорта модуля распознавания речи, который используется для преобразования устных слов в строку. Когда модуль был импортирован, мы создаем объект "r", который является объектом распознавания речи и используется для записи звука с микрофона, а затем запрашивает преобразование. После определения объекта распознавания речи мы также определяем наши переменные, включая список элементов, команду, текущий элемент и массив, в котором содержатся анализируемые команды.

При первоначальной конфигурации следующий кусок кода, который должен быть выполнен, является основным циклом. Первая задача в цикле состоит в том, чтобы сообщить пользователю говорить, напечатав слово «Speak», а затем создайте аудио-объект под названием «audio», который будет содержать наш поток с микрофона.

Когда микрофон обнаружил звук и закончил запись (запись прекращается, когда уровень звука падает ниже порогового значения), он передает записанный звук в наш объект распознавателя. Поступая таким образом, r будет использовать службы Google, чтобы попытаться преобразовать аудио в предложение, которое затем передается переменной, называемой speechString. Весь этот код выполняется в блоке try/except, если звук не был понят или если услуга недоступна. Полученная строка также анализируется на prasedCommands, где разделителем является пробел. Так что, если слова «добавить бекон» будут сказаны, результатом будет то, что parsedCommands[0] будет «добавить», а parsedCommands[1] будет «беконом».

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

  • Если элемент уже существует и добавляется, то затем увеличиваем значение элемента
  • Если элемент не существует и добавлен, добавить элемент в список
  • Если элемент уже существует и удаляется, то вычитать 1, если сумма больше 1
  • Если элемент уже существует, указание удалить, и если остается только один элемент, удалить элемент
  • Если элемент не существует, игнорировать команду

Последняя команда в этом простом скрипте - это «display», который печатает содержимое элемента переменной на дисплее.

Полный код

Само устройство

Этот проект реализован на основе Raspberry Pi и не требует никакой схемы или оборудования помимо микрофона и дисплея.

Обычный монитор или телевизор можно использовать, но это не очень практично для монтажа, поэтому в этом проекте был взят небольшой 3,5-дюймовый дисплей Raspberry Pi с разрешением 480x320. Хотя это слишком мало для нормального использования, оно идеально подходит для работы с командной строкой. А если наша "малина" программируется и используется по сети (используя SSH), вы можете запустить программу Python с любого компьютера, подключенного к Интернету.

Ардуино+
Больше интересного ↓