跳到主要内容

🎤 AI 语音助手黑客松 2025

使用 Amazon Bedrock Nova 和 ESP32 构建边缘到云端的语音助手。

📋 赛事信息​

项目详情
赛事AI 创新黑客松
日期2025 年 6 月
时长48 小时
团队规模3 人
成绩🏅 决赛入围

🎯 项目:EdgeVoice​

一款智能语音助手,部分运行在边缘设备(ESP32)上,并利用 Amazon Bedrock Nova 进行自然语言理解。

核心功能​

  • 🎙️ 唤醒词检测 - 设备端"Hey Nova"检测
  • 🔊 语音活动检测 - 边缘端 VAD 实现高效流式传输
  • 🧠 LLM 处理 - Amazon Bedrock Nova 生成回复
  • 🏠 智能家居控制 - 语音控制 IoT 设备
  • ⚡ 低延迟 - 端到端响应时间 < 500ms

🏗️ 架构图​

┌──────────────────┐ MQTT/WebSocket ┌──────────────────┐
│ │ ───────────────────▶ │ │
│ ESP32-S3 │ │ AWS IoT Core │
│ + 麦克风 │ ◀─────────────────── │ │
│ │ 音频流 │ │
└──────────────────┘ └────────┬─────────┘
│
▼
┌──────────────────┐
│ Lambda │
│ (编排器) │
└────────┬─────────┘
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Bedrock Nova │ │ Polly TTS │ │ IoT Shadow │
│ (LLM/NLU) │ │ (语音合成) │ │ (设备状态) │
└──────────────────┘ └──────────────────┘ └──────────────────┘

🛠️ 技术栈​

边缘端 (ESP32-S3)​

  • 硬件: ESP32-S3 开发板 + INMP441 麦克风
  • 固件: ESP-IDF + FreeRTOS
  • 音频: Opus 编解码器,16kHz 采样
  • 连接: WiFi + MQTT

云端 (AWS)​

  • IoT: AWS IoT Core,Device Shadow
  • AI: Amazon Bedrock (Nova Micro)
  • 音频: Amazon Polly, Transcribe
  • 计算: Lambda (Python)
  • IaC: AWS SAM

💻 关键代码片段​

ESP32 唤醒词检测​

// 简化的唤醒词检测
void audio_task(void *pvParameters) {
while (1) {
int16_t samples[SAMPLE_SIZE];
i2s_read(I2S_NUM_0, samples, sizeof(samples), &bytes_read, portMAX_DELAY);

// 运行唤醒词模型
if (detect_wake_word(samples, SAMPLE_SIZE)) {
ESP_LOGI(TAG, "检测到唤醒词!");
start_voice_stream();
}
}
}

Lambda - Bedrock 集成​

import boto3
import json

bedrock = boto3.client('bedrock-runtime')

def invoke_nova(transcript: str, context: dict) -> str:
"""调用 Bedrock Nova 生成回复"""

system_prompt = """你是一个智能家居助手。
你可以控制灯光、温控器和其他 IoT 设备。
保持回复简洁并以行动为导向。"""

response = bedrock.converse(
modelId='amazon.nova-micro-v1:0',
messages=[
{'role': 'user', 'content': [{'text': transcript}]}
],
system=[{'text': system_prompt}],
inferenceConfig={
'maxTokens': 200,
'temperature': 0.7,
}
)

return response['output']['message']['content'][0]['text']

IoT 设备控制​

def control_device(intent: str, device_id: str, params: dict):
"""根据语音命令更新 IoT Device Shadow"""

iot = boto3.client('iot-data')

shadow_update = {
'state': {
'desired': params
}
}

iot.update_thing_shadow(
thingName=device_id,
payload=json.dumps(shadow_update)
)

📊 性能指标​

指标数值
唤醒词准确率94%
语音转文字准确率97%
端到端延迟450ms
功耗180mA(活跃状态)
每 1000 次查询成本$0.12

🎥 演示视频​

演示视频展示语音控制智能家居交互


📝 经验教训​

  1. 边缘预处理至关重要 - VAD 和唤醒词检测节省云端成本
  2. Opus 编解码器很棒 - 低码率下保持高质量
  3. Bedrock Nova 很快 - 推理时间低于 100ms
  4. IoT Core 处理大规模 - MQTT 非常适合实时音频

🔗 相关资源​


🏆 奖项与荣誉​

  • 🏅 决赛入围 - 150 支队伍中前 10 名
  • 🎨 最佳演示 - 最具吸引力的现场演示
  • ⚡ 技术创新 - 边缘 AI 实现