亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

语音控制 LED:Arduino Micro + BitVoicer Server 语音识别实战

元件与物料

Arduino Micro可替换任意 Arduino 板×1
SparkFun 电容麦克风扩展板音频采集前端×1
BitVoicer Server 软件语音识别服务端 (付费 $9.90)×1
LED (红/黄/绿)×3
330Ω 电阻×3

项目原理流程

  1. 电容麦克风扩展板采集并放大音频波形;
  2. Arduino ADC 将模拟信号数字化、缓冲;
  3. 串口流式传输音频样本至 PC 端 BitVoicer Server;
  4. BitVoicer Server 识别语音内容;
  5. 识别结果映射为预定义命令 (字节数组) 下发回 Arduino;
  6. Arduino 解析命令,控制对应 LED 亮灭/亮度。

视频演示中 BitVoicer 还提供语音合成反馈 (通过电脑声卡播放),后续文章将展示用 Arduino Due + DAC 外放合成语音。

物料清单与成本估算

步骤 1:硬件接线

按下图连接。关键点: 为获得更好 ADC 表现,作者将 SparkFun 扩展板输出参考电压设为 3.3V,故在 Arduino 上跨接 3.3V 引脚至 AREF 引脚。警告: 若在 AREF 施加外部参考电压时调用 analogRead(),必须先调用 analogReference(EXTERNAL),否则会短路内部基准源,损坏单片机。

语音控制 LED:Arduino Micro + BitVoicer Server 语音识别实战
语音控制 LED:Arduino Micro + BitVoicer Server 语音识别实战
语音控制 LED:Arduino Micro + BitVoicer Server 语音识别实战
语音控制 LED:Arduino Micro + BitVoicer Server 语音识别实战

步骤 2:上传 Arduino 代码

先在 Arduino IDE 导入 BitVoicer Server 库 (安装目录下的 .zip)。代码四大部分:

完整代码见附件 BVS_Demo1.ino。

步骤 3:导入 BitVoicer Server 方案对象

BitVoicer 四大核心对象:

步骤 4:运行与验证

在 BitVoicer Server Manager 中启用 ArduinoMicro 设备,Arduino 检测到可用语音识别引擎 (SRE) 即开始推流。Server Monitor 工具可实时查看识别结果。

完整 Arduino 代码 (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]);
    }
  }
}

原理图

语音控制 LED:Arduino Micro + BitVoicer Server 语音识别实战

制造工艺

  1. 基于 Arduino 与 Python 的可靠 RFID 考勤系统
  2. DHT11 温湿度传感器项目:LED 指示与压电蜂鸣器报警
  3. Arduino Due 驱动 3.2″ TFT 实现温度监测与实时时钟
  4. Arduino + Android 蓝牙控制 Roomba Create 2 扫地机器人完整指南
  5. Arduino DIY 电压表:Nokia 5110 屏幕显示,手把手教学
  6. Arduino + MPU6050 姿态控制舵机:SG90 与 MG996R 精准跟随实战
  7. u-blox LEA-6H GPS 模块:Arduino 与 Python 集成指南
  8. Blynk + Arduino 读取 DHT11 温湿度数据教程
  9. 在 Arduino Due 上实现语音识别与语音合成 - BitVoicer Server 方案
  10. 用 Arduino Uno 和 1Sheeld 构建 4x4x4 LED 立方体 - 互动音乐可视化项目
  11. Arduino GPS与TFT触摸屏扩展板:实时定位显示项目
  12. 使用 Arduino Uno 和蓝牙实现遥控小车:分步指南