Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Голосовое управление светодиодами: Arduino Micro + BitVoicer Server для распознавания речи

Компоненты и материалы

КомпонентКоличествоПримечание
Arduino Micro (или другая плата Arduino)1
Модуль микрофона SparkFun Electret Microphone Breakout1
BitVoicer Server (лицензия)1Платное ПО ($9.90)
Светодиоды (красный, желтый, зеленый)3
Резисторы 330 Ом3
Макетная плата и перемычки1 набор

О проекте

Проект демонстрирует управление тремя светодиодами голосовыми командами с помощью Arduino и BitVoicer Server. Аудиосигнал с электретного микрофона усиливается, оцифровывается АЦП Arduino, передается в BitVoicer Server по последовательному порту, там распознается речь и отправляются команды обратно на Arduino для управления светодиодами. BitVoicer также может озвучивать обратную связь через звуковой адаптер сервера.

Принцип работы

  1. Звуковые волны захватываются и усиливаются модулем SparkFun Electret Breakout.
  2. Усиленный сигнал оцифровывается и буферизируется в Arduino (АЦП).
  3. Аудиосемплы передаются в BitVoicer Server через последовательный порт.
  4. Сервер обрабатывает поток и распознает речь.
  5. Распознанная речь сопоставляется с предопределенными командами, которые отправляются обратно на Arduino.
  6. Arduino идентифицирует команды и выполняет действия (вкл/выкл светодиодов).

Стоимость компонентов (приблизительно)

Шаг 1: Монтаж

Соберите схему согласно фото. Важный момент: для лучшего качества АЦП используется внешний опорный напряжение 3.3V. Соедините пин 3.3V с AREF на Arduino. Если вы используете analogRead() при подключенном 3.3V к AREF, обязательно вызовите analogReference(EXTERNAL) перед чтением, иначе возможно повреждение микроконтроллера.

Шаг 2: Загрузка кода в Arduino

Установите библиотеки BitVoicer Server в Arduino IDE (Sketch → Include Library → Add .ZIP Library). Загрузите скетч BVS_Demo1.ino (приведен ниже).

Структура скетча

Код (BVS_Demo1.ino)

#include <BVSP.h>
#include <BVSMic.h>

#define BVSM_AUDIO_INPUT 5
#define RED_LED_PIN 6
#define YELLOW_LED_PIN 9
#define GREEN_LED_PIN 10

const unsigned long STATUS_REQUEST_TIMEOUT = 1000;
const unsigned long STATUS_REQUEST_INTERVAL = 2000;
const int AUDIO_BUFFER_SIZE = 64;
const int RECEIVE_BUFFER_SIZE = 2;

BVSP bvsp = BVSP();
BVSMic bvsm = BVSMic();
byte audioBuffer[AUDIO_BUFFER_SIZE];
byte receiveBuffer[RECEIVE_BUFFER_SIZE];

void setup() {
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(YELLOW_LED_PIN, OUTPUT);
  pinMode(GREEN_LED_PIN, OUTPUT);
  Serial.begin(115200);
  bvsp.begin(Serial, STATUS_REQUEST_TIMEOUT, STATUS_REQUEST_INTERVAL);
  bvsp.frameReceived = BVSP_frameReceived;
  bvsm.begin();
}

void loop() {
  bvsp.keepAlive();
  bvsp.receive();

  if (bvsp.isSREAvailable()) {
    if (!bvsm.isRecording) {
      bvsm.setAudioInput(BVSM_AUDIO_INPUT, EXTERNAL);
      bvsm.startRecording();
    }
    if (bvsm.available) {
      if (bvsp.inboundMode == FRAMED_MODE) bvsp.setInboundMode(STREAM_MODE);
      int bytesRead = bvsm.read(audioBuffer, AUDIO_BUFFER_SIZE);
      bvsp.sendStream(audioBuffer, bytesRead);
    }
  } else {
    if (bvsm.isRecording) bvsm.stopRecording();
  }
}

void BVSP_frameReceived(byte dataType, int payloadSize) {
  if (dataType == DATA_TYPE_BINARY) {
    if (bvsp.getReceivedBytes(receiveBuffer, RECEIVE_BUFFER_SIZE) == RECEIVE_BUFFER_SIZE) {
      analogWrite(receiveBuffer[0], receiveBuffer[1]);
    }
  }
}

Шаг 3: Импорт объектов решения в BitVoicer Server

BitVoicer Server использует четыре типа объектов: Locations (места), Devices (устройства), BinaryData (бинарные команды), Voice Schemas (голосовые схемы).

Файлы для импорта: Devices.sof и VoiceSchema.sof (приложены к проекту).

Шаг 4: Запуск и тестирование

  1. Включите устройство ArduinoMicro в BitVoicer Server Manager.
  2. Arduino начнет стримить аудио при доступном SRE.
  3. Следите за результатами распознавания в Server Monitor.
  4. Говорите команды (например, «turn on red light») — светодиоды должны реагировать.

Заключение

Проект показывает базовую интеграцию распознавания речи с Arduino. В следующей статье автор планирует показать воспроизведение синтезированной речи на Arduino DUE с динамиком.

Схема подключения

Схема в формате Fritzing показывает подключение микрофона к A5, светодиодов к пинам 6, 9, 10 через резисторы 330 Ом, и перемычку 3.3V → AREF.

Производственный процесс

  1. Надежная система учета рабочего времени на Arduino с RFID и Python
  2. Проект с датчиком DHT11: индикация температуры светодиодами и пьезо-динамиком на Arduino
  3. Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
  4. Управление Roomba Create 2 через Arduino и Android: пошаговое руководство
  5. Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
  6. Точное управление сервоприводом через MPU6050 (Arduino, SG90, MG996R)
  7. Модуль GPS u-blox LEA-6H 02: Интеграция с Arduino и Python
  8. Чтение температуры и влажности DHT11 через Blynk — пошаговый урок для Arduino
  9. Освоение распознавания и синтеза речи на Arduino Due
  10. Создание интерактивного 4x4x4 светодиодного куба на Arduino Uno и 1Sheeld