文章一:四博 AI 双目智能音箱方案:从"会说话"升级到"有感知、有表情、有反馈"的 AI 硬件平台
传统智能音箱解决的是"语音输入 + 语音输出",但新一代 AI 硬件要解决的是"多模态交互"。
四博 AI 双目智能音箱方案,核心不是简单把大模型接到喇叭上,而是把 ESP32-S3 主控、VB6824 语音前端、双目显示屏、四路触控、震动马达、三轴姿态传感器、小程序平台和云端 AI 能力整合到一个完整系统中。
它的产品逻辑可以概括为:
AI 音箱 + 双目表情 + 触控交互 + 震动反馈 + 姿态感知 + 小程序智能体平台
这类产品更像是"AI 桌面生命体",而不是传统音箱。
一、硬件架构:ESP32-S3 负责系统,VB6824 负责语音前端
本方案建议采用 ESP32-S3R8 + 16M Flash 作为主控。ESP32-S3 负责 Wi-Fi、BLE、UI 显示、双目动画、触控检测、姿态处理、OTA 和 AI 通信。
语音部分采用 VB6824,负责语音唤醒、AEC 回声消除、音频编解码、实时打断和唤醒词能力。
整体硬件链路如下:
麦克风
↓
VB6824 语音前端
↓ UART / I2S / GPIO
ESP32-S3 主控
├── Wi-Fi / BLE
├── WebSocket AI 通信
├── 双目 LCD 显示
├── 四路触控感应
├── 三轴姿态传感器
├── 震动马达
└── OTA / MCP 工具扩展
这种分层架构的好处是:语音前处理和主控业务解耦。VB6824 处理唤醒、AEC、打断,ESP32-S3 专注网络、UI 和业务状态机,系统稳定性更好,也更适合量产。
二、双目屏不是装饰,而是设备状态机的可视化出口
四博 AI 双目方案兼容 0.71 寸和 1.28 寸双目屏。0.71 寸适合小体积低成本产品,1.28 寸适合 AI 音箱、桌宠、教育陪伴机等更强调视觉表现的产品。
双目屏建议不要只做"眼睛素材播放",而是要跟 AI 状态机绑定。
例如:
| 系统状态 | 双目表现 | 用户感知 |
|---|---|---|
| 待机 | 慢速眨眼 | 设备在线 |
| 唤醒 | 睁眼聚焦 | 已听到唤醒词 |
| 聆听 | 蓝色呼吸光效 | 正在录音 |
| 思考 | 眼球转动 | 正在请求 AI |
| 回复 | 嘴型 / 眼神联动 | 正在播报 |
| 触摸 | 开心 / 害羞 | 收到触摸 |
| 摇晃 | 惊讶表情 | 感知动作 |
| 网络异常 | 困惑表情 | 需要检查网络 |
| OTA | 升级动画 | 正在更新 |
固件中可以用状态机统一管理:
typedef enum {
AI_STATE_BOOT = 0,
AI_STATE_IDLE,
AI_STATE_WAKEUP,
AI_STATE_LISTENING,
AI_STATE_THINKING,
AI_STATE_SPEAKING,
AI_STATE_TOUCH,
AI_STATE_SHAKE,
AI_STATE_NET_ERROR,
AI_STATE_OTA,
} ai_state_t;
static ai_state_t g_ai_state = AI_STATE_BOOT;
void ai_set_state(ai_state_t state)
{
g_ai_state = state;
switch (state) {
case AI_STATE_BOOT:
eye_play_anim("boot");
audio_play_prompt("boot.wav");
break;
case AI_STATE_IDLE:
eye_play_anim("idle_blink");
break;
case AI_STATE_WAKEUP:
eye_play_anim("wake");
haptic_play_short();
audio_play_prompt("ding.wav");
break;
case AI_STATE_LISTENING:
eye_play_anim("listening");
audio_start_record();
break;
case AI_STATE_THINKING:
eye_play_anim("thinking");
break;
case AI_STATE_SPEAKING:
eye_play_anim("speaking");
break;
case AI_STATE_TOUCH:
eye_play_anim("happy");
haptic_play_short();
break;
case AI_STATE_SHAKE:
eye_play_anim("surprised");
haptic_play_double();
break;
case AI_STATE_NET_ERROR:
eye_play_anim("error");
haptic_play_long();
audio_play_prompt("net_error.wav");
break;
case AI_STATE_OTA:
eye_play_anim("ota");
break;
default:
break;
}
}
这样设计后,屏幕、语音、震动、触控、姿态不再是分散模块,而是围绕 AI 状态机统一运行。
三、四路触控:让 AI 音箱具备本地交互入口
四路触控建议分别定义为顶部、左侧、右侧、背部。
| 触控区域 | 建议功能 |
|---|---|
| 顶部触摸 | 唤醒 / 暂停 / 继续 |
| 左侧触摸 | 上一首 / 上一个角色 |
| 右侧触摸 | 下一首 / 下一个角色 |
| 背部触摸 | 配网 / 静音 / 长按恢复出厂 |
触控处理可以通过事件队列统一上报:
typedef enum {
EVT_TOUCH_TOP = 1,
EVT_TOUCH_LEFT,
EVT_TOUCH_RIGHT,
EVT_TOUCH_BACK,
EVT_WAKE_WORD,
EVT_IMU_SHAKE,
EVT_IMU_FLIP,
EVT_AI_START_LISTEN,
EVT_AI_START_SPEAK,
EVT_AI_STOP_SPEAK,
EVT_NETWORK_LOST,
} app_event_type_t;
typedef struct {
app_event_type_t type;
int value;
} app_event_t;
QueueHandle_t g_event_queue;
触控任务示例:
static void touch_task(void *arg)
{
while (1) {
if (touch_top_pressed()) {
app_event_t evt = {.type = EVT_TOUCH_TOP};
xQueueSend(g_event_queue, &evt, 0);
}
if (touch_left_pressed()) {
app_event_t evt = {.type = EVT_TOUCH_LEFT};
xQueueSend(g_event_queue, &evt, 0);
}
if (touch_right_pressed()) {
app_event_t evt = {.type = EVT_TOUCH_RIGHT};
xQueueSend(g_event_queue, &evt, 0);
}
if (touch_back_long_pressed()) {
app_event_t evt = {.type = EVT_TOUCH_BACK};
xQueueSend(g_event_queue, &evt, 0);
}
vTaskDelay(pdMS_TO_TICKS(30));
}
}
主事件处理:
static void interaction_task(void *arg)
{
app_event_t evt;
while (1) {
if (xQueueReceive(g_event_queue, &evt, portMAX_DELAY)) {
switch (evt.type) {
case EVT_TOUCH_TOP:
ai_set_state(AI_STATE_WAKEUP);
ai_start_listen();
break;
case EVT_TOUCH_LEFT:
role_switch_prev();
eye_play_anim("left");
haptic_play_short();
break;
case EVT_TOUCH_RIGHT:
role_switch_next();
eye_play_anim("right");
haptic_play_short();
break;
case EVT_TOUCH_BACK:
wifi_enter_blufi_config();
eye_play_anim("config");
audio_play_prompt("config_mode.wav");
break;
case EVT_IMU_SHAKE:
ai_set_state(AI_STATE_SHAKE);
role_random_switch();
break;
case EVT_NETWORK_LOST:
ai_set_state(AI_STATE_NET_ERROR);
break;
default:
break;
}
}
}
}
四、震动马达:补齐"触觉反馈闭环"
AI 硬件最容易忽略的是触觉反馈。用户摸了设备以后,如果没有声音或屏幕反馈,很难判断设备是否收到输入。
震动马达可以用于:
短震:触摸确认
双短震:唤醒成功
长震:网络异常
连续震:OTA 或低电量提醒
轻震:知识库命中或角色切换
PWM 控制代码示例:
#define MOTOR_GPIO 15
#define MOTOR_PWM_FREQ 2000
#define MOTOR_DUTY_MAX 8191
void motor_init(void)
{
ledc_timer_config_t timer = {
.speed_mode = LEDC_LOW_SPEED_MODE,
.timer_num = LEDC_TIMER_0,
.duty_resolution = LEDC_TIMER_13_BIT,
.freq_hz = MOTOR_PWM_FREQ,
.clk_cfg = LEDC_AUTO_CLK,
};
ledc_timer_config(&timer);
ledc_channel_config_t ch = {
.gpio_num = MOTOR_GPIO,
.speed_mode = LEDC_LOW_SPEED_MODE,
.channel = LEDC_CHANNEL_0,
.timer_sel = LEDC_TIMER_0,
.duty = 0,
.hpoint = 0,
};
ledc_channel_config(&ch);
}
static void motor_set(uint32_t duty)
{
ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, duty);
ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0);
}
void haptic_play_short(void)
{
motor_set(MOTOR_DUTY_MAX * 60 / 100);
vTaskDelay(pdMS_TO_TICKS(60));
motor_set(0);
}
void haptic_play_double(void)
{
for (int i = 0; i < 2; i++) {
motor_set(MOTOR_DUTY_MAX * 70 / 100);
vTaskDelay(pdMS_TO_TICKS(50));
motor_set(0);
vTaskDelay(pdMS_TO_TICKS(80));
}
}
void haptic_play_long(void)
{
motor_set(MOTOR_DUTY_MAX * 80 / 100);
vTaskDelay(pdMS_TO_TICKS(300));
motor_set(0);
}
五、三轴姿态传感器:让设备具备动作感知
三轴传感器可以实现很多自然交互:
拿起唤醒
摇一摇切换角色
翻转静音
倾斜改变眼神方向
敲击桌面触发彩蛋
移动检测低功耗唤醒
姿态检测示例:
typedef struct {
int16_t x;
int16_t y;
int16_t z;
} accel_data_t;
static bool detect_shake(accel_data_t now, accel_data_t last)
{
int dx = abs(now.x - last.x);
int dy = abs(now.y - last.y);
int dz = abs(now.z - last.z);
return (dx + dy + dz) > 18000;
}
static bool detect_flip(accel_data_t now)
{
return now.z < -12000;
}
static void imu_task(void *arg)
{
accel_data_t last = {0};
while (1) {
accel_data_t now;
if (imu_read_accel(&now.x, &now.y, &now.z) == ESP_OK) {
if (detect_shake(now, last)) {
app_event_t evt = {.type = EVT_IMU_SHAKE};
xQueueSend(g_event_queue, &evt, 0);
}
if (detect_flip(now)) {
app_event_t evt = {.type = EVT_IMU_FLIP};
xQueueSend(g_event_queue, &evt, 0);
}
last = now;
}
vTaskDelay(pdMS_TO_TICKS(80));
}
}
六、AI 通信:建议采用 WebSocket 长连接
AI 音箱类产品对实时性要求较高,建议设备侧和云端之间使用 WebSocket 长连接。
设备侧可以监听云端返回的消息类型:
{
"type": "tts",
"state": "start",
"emotion": "happy",
"text": "你好,我在。"
}
ESP32-S3 解析后,直接联动双目和音频:
static void handle_ai_json(const char *json)
{
cJSON *root = cJSON_Parse(json);
if (!root) return;
cJSON *type = cJSON_GetObjectItem(root, "type");
cJSON *state = cJSON_GetObjectItem(root, "state");
cJSON *emotion = cJSON_GetObjectItem(root, "emotion");
if (cJSON_IsString(type)) {
if (strcmp(type->valuestring, "llm") == 0) {
ai_set_state(AI_STATE_THINKING);
}
if (strcmp(type->valuestring, "tts") == 0) {
if (state && strcmp(state->valuestring, "start") == 0) {
ai_set_state(AI_STATE_SPEAKING);
} else if (state && strcmp(state->valuestring, "stop") == 0) {
ai_set_state(AI_STATE_IDLE);
}
}
if (strcmp(type->valuestring, "stt") == 0) {
ai_set_state(AI_STATE_THINKING);
}
}
if (cJSON_IsString(emotion)) {
if (strcmp(emotion->valuestring, "happy") == 0) {
eye_play_anim("happy");
} else if (strcmp(emotion->valuestring, "thinking") == 0) {
eye_play_anim("thinking");
} else if (strcmp(emotion->valuestring, "sad") == 0) {
eye_play_anim("sad");
}
}
cJSON_Delete(root);
}
七、适配四博小助手:把硬件变成可配置 AI 平台
四博小助手小程序可以作为设备的配置入口。
建议能力包括:
BLE 配网
设备绑定
AI 智能体选择
声音克隆
知识库上传
MCP 工具配置
眼睛素材更新
提示音更新
固件 OTA
模型参数配置
这意味着设备不只是一个硬件终端,而是一个可以持续更新的 AI 平台。
例如品牌客户可以上传产品手册,设备变成智能客服;教育客户可以上传课程资料,设备变成学习陪伴机;IP 客户可以定制声音和眼睛动画,设备变成 AI 潮玩。
八、MCP 工具扩展:让 AI 能控制硬件
设备能力可以封装成 MCP 工具,让 AI 大模型直接调用。
示例:切换眼睛主题。
{
"name": "self.screen.set_eye_theme",
"description": "切换四博AI双目音箱的眼睛主题",
"parameters": {
"type": "object",
"properties": {
"theme": {
"type": "string",
"enum": ["默认", "海洋", "爱心", "梦境", "彩虹", "机甲"]
}
},
"required": ["theme"]
}
}
设备侧处理:
void mcp_set_eye_theme(const char *theme)
{
if (strcmp(theme, "海洋") == 0) {
eye_load_theme("ocean");
} else if (strcmp(theme, "爱心") == 0) {
eye_load_theme("heart");
} else if (strcmp(theme, "梦境") == 0) {
eye_load_theme("dream");
} else if (strcmp(theme, "彩虹") == 0) {
eye_load_theme("rainbow");
} else if (strcmp(theme, "机甲") == 0) {
eye_load_theme("mecha");
} else {
eye_load_theme("default");
}
haptic_play_short();
}
再比如 AI 控制设备进入安静模式:
{
"name": "self.device.set_quiet_mode",
"description": "设置设备安静模式",
"parameters": {
"type": "object",
"properties": {
"enable": {
"type": "boolean"
}
},
"required": ["enable"]
}
}
void mcp_set_quiet_mode(bool enable)
{
g_quiet_mode = enable;
if (enable) {
audio_set_volume(20);
eye_play_anim("sleep");
} else {
audio_set_volume(70);
eye_play_anim("happy");
}
nvs_save_quiet_mode(enable);
}
九、为什么这套方案适合量产?
这套方案的优势不是单点功能,而是系统完整。
第一,主控、语音、显示、触控、姿态、震动都有明确分工。
第二,ESP32-S3 生态成熟,适合二次开发。
第三,VB6824 承担语音前端,降低主控音频处理压力。
第四,双目屏让设备状态可视化,用户体验比普通语音音箱更强。
第五,小程序提供配网、声音克隆、知识库、MCP、OTA 等平台能力。
第六,硬件可以做多 SKU:0.71 寸低成本版、1.28 寸高配版、带 4G 或摄像头的 Pro 版、带经典蓝牙音频的蓝牙音箱版。
十、总结
四博 AI 双目智能音箱的本质,是一套 AI 硬件平台。
它不是简单的"喇叭 + 麦克风",而是:
AI 大模型入口
+ 双目情绪显示
+ 本地触控交互
+ 姿态动作感知
+ 震动触觉反馈
+ 小程序智能体配置
+ 语音克隆与知识库
+ MCP 硬件工具扩展
这类产品未来可以做 AI 音箱、AI 桌宠、儿童陪伴机、品牌智能客服、IP 潮玩、智能家居入口。
真正有竞争力的 AI 硬件,不只是能回答问题,而是要能用眼睛、声音、触摸、动作和用户建立连接。
四博 AI 双目智能音箱,正是朝这个方向做的一套完整方案。