news 2026/4/28 10:05:23

四博 AI 双目智能音箱技术方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
四博 AI 双目智能音箱技术方案

四博 AI 双目智能音箱技术方案

1. 方案定位

四博 AI 双目智能音箱是一款面向 AI 陪伴、智能语音交互、桌面情绪机器人、儿童教育、AI 潮玩和品牌定制市场的高集成度智能硬件方案。整机以ESP32-S3R8 + 16M Flash + VB6824 语音芯片为核心,结合双目显示屏、四路触控感应、震动马达、三轴姿态传感器、麦克风、喇叭、电池与小程序平台,实现“能听、能说、能看、能动、能感知”的多模态 AI 音箱体验。

根据四博资料,AI-S3 双目双屏方案本身已经内置小智 AI 语音大模型,可直接套壳使用,主要配件包括 1.28 寸 LCD 显示屏 x2、主板、麦克风、喇叭和线材,主控配置为 ESP32S3R8 + 16M Flash + VB6824,并支持小智、豆包、ChatGPT 等主流大模型,适合高端 AI 市场和二次开发。

本方案在 AI-S3 双目基础上进一步强化交互体验,标配:

模块配置
主控ESP32-S3R8 + 16M Flash
语音VB6824 离线语音 / AEC / 唤醒 / 打断
显示双目屏,兼容 0.71 寸 / 1.28 寸
触控四路触控感应
震动震动马达,支持触觉反馈
姿态内置三轴传感器
网络Wi-Fi / BLE 配网,可扩展 4G
平台四博小助手小程序
AI 能力AI 对话、语音克隆、知识库、MCP 工具扩展、OTA / 素材更新

2. 核心卖点

2.1 双目情绪显示

设备支持双眼动画显示,可根据 AI 状态自动切换不同表情。例如:

状态双目表情
待机呼吸眨眼
唤醒睁眼 / 聚焦
聆听眼球跟随 / 蓝色光效
思考转圈 / 眨眼
回复嘴型联动 / 表情变化
错误困惑 / 闭眼
摇晃惊讶表情
触摸开心 / 害羞 / 生气

开发文档中提到,AI-S3 双目主板支持 0.71 寸和 1.28 寸屏幕,V1/V2 板型对应不同屏幕组合,0.71 寸屏分辨率为 160×160,1.28 寸屏分辨率为 240×240。

2.2 VB6824 语音前端

VB6824 负责音频编解码、AEC 回声消除、语音唤醒、自定义唤醒词等功能,让 ESP32-S3 主控专注于网络通信、UI 显示和交互逻辑。资料中也明确说明,ESP32-C2 / C3 / S3 + VB6824 方案已经成熟应用于电子吧唧、S3 双目、S3 拍学机、地球仪、拍拍灯等产品。

这种架构的优点是:

  1. 主控压力小:S3 不需要承担全部语音前处理。

  2. 唤醒更稳定:离线唤醒不依赖网络。

  3. 支持打断:AI 播放过程中可以实时打断。

  4. 适合量产:语音前端、UI、网络、AI 业务分层清晰。

2.3 四路触控 + 震动马达

四路触控可用于实现更自然的桌面宠物式交互:

触控区域功能建议
顶部触摸唤醒 / 暂停 / 继续
左侧触摸上一首 / 上一个角色
右侧触摸下一首 / 下一个角色
底部 / 背部触摸进入配网 / 静音 / 收藏回答

震动马达用于增强反馈:

场景震动反馈
触摸确认短震一次
唤醒成功双短震
网络异常长震一次
知识库命中轻震一次
摇晃互动连续短震
低电量间歇提醒

2.4 三轴姿态感应

内置三轴传感器可实现:

  1. 拿起唤醒。

  2. 摇一摇切换角色。

  3. 倾斜切换眼睛方向。

  4. 翻转静音。

  5. 敲击桌面触发彩蛋。

  6. 防跌落 / 移动检测。

2.5 小程序平台能力

配合“四博小助手”小程序,可以实现 AI 对话、本地或云端智能体切换、声音克隆、知识库接入、MCP 工具扩展,以及提示音、模型、参数、固件等在线管理。资料中明确写到,四博小助手可支持 AI 对话、声音克隆、知识库接入、MCP 扩展能力、素材与固件在线更新。


3. 系统总体架构

┌──────────────────────────────┐ │ 四博小助手小程序 │ │ 配网 / 声音克隆 / 知识库 / MCP │ └──────────────┬───────────────┘ │ BLE BluFi / HTTPS / WebSocket ┌──────────────▼───────────────┐ │ ESP32-S3R8 主控 │ │ Wi-Fi / BLE / UI / 触控 / 姿态 │ │ 双目动画 / OTA / MCP / 状态机 │ └──────┬─────────┬─────────┬────┘ │ │ │ │ │ │ ┌──────▼───┐ ┌───▼────┐ ┌──▼────────┐ │ VB6824 │ │ 双目屏 │ │ 传感器系统 │ │ 唤醒/AEC │ │ LCD x2 │ │ 触控/IMU/震动 │ └──────┬───┘ └────────┘ └───────────┘ │ ┌──────▼──────────────┐ │ 麦克风 / 功放 / 喇叭 │ └────────────────────┘

4. 硬件方案设计

4.1 主控模块

推荐采用ESP32-S3R8 + 16M Flash。四博模组选型资料中,ESP32-S3 系列面向音视频 / AI 市场,S3 为 Xtensa 双核 240MHz 架构,适合承担显示、通信、UI、传感器融合和 AI 设备控制逻辑。

主控职责:

  1. Wi-Fi / BLE 网络通信。

  2. 小程序 BluFi 配网。

  3. WebSocket / MQTT AI 通信。

  4. 双目屏动画刷新。

  5. 四路触控扫描。

  6. 三轴姿态数据处理。

  7. 震动马达控制。

  8. OTA 升级。

  9. MCP 工具调用。

  10. 与 VB6824 进行状态通信。

4.2 语音音频模块

采用 VB6824 作为语音前端:

麦克风 → VB6824 → 唤醒 / AEC / 降噪 / 编解码 → ESP32-S3 → 云端 AI 云端 TTS → ESP32-S3 → VB6824 / I2S DAC / 功放 → 喇叭

建议功能:

功能实现方式
离线唤醒VB6824 本地唤醒
自定义唤醒词VB6824 固件升级配置
实时打断VB6824 + 固件支持
AEC 回声消除VB6824 语音前端处理
AI 语音对话S3 连接云端 AI 服务
本地提示音Flash / SD / SPIFFS 存储

开发宝典中也提到,VB6824 自定义唤醒词需要进入升级模式,可设置“你好小智”“小乐小乐”等唤醒词,并支持定制唤醒词。

4.3 双目显示模块

推荐两种 SKU:

版本屏幕分辨率定位
标准版0.71 寸双目屏160×160低成本、小体积
高配版1.28 寸双目屏240×240显示效果更好
顶配版1.28 寸可调光双目屏240×240情绪交互 / 礼品 / 高端客户

双目屏显示内容:

  1. 眼睛动画。

  2. 网络状态。

  3. 音量状态。

  4. 电量状态。

  5. AI 思考状态。

  6. 情绪表情。

  7. 角色头像。

  8. 简短文字提示。

开发资料中还提到,可通过修改screen_type指向 1.28 或 0.71,并替换defaultEye_1.28.hdefaultEye_0.71.h素材数组来定制眼睛样式固件。


5. 软件系统设计

5.1 软件任务划分

ESP32-S3 固件建议采用 FreeRTOS 多任务结构:

app_main ├── wifi_task // Wi-Fi / BluFi / 网络管理 ├── ai_client_task // WebSocket / MQTT / AI 对话 ├── audio_task // 音频状态、TTS、播放控制 ├── eye_task // 双目动画刷新 ├── touch_task // 四路触控扫描 ├── imu_task // 三轴姿态检测 ├── haptic_task // 震动马达反馈 ├── ota_task // 固件 / 素材在线升级 └── mcp_task // MCP 工具调用

5.2 状态机设计

typedef enum { AI_STATE_BOOT = 0, AI_STATE_IDLE, AI_STATE_WAKEUP, AI_STATE_LISTENING, AI_STATE_THINKING, AI_STATE_SPEAKING, AI_STATE_NETWORK_ERROR, AI_STATE_LOW_BATTERY, AI_STATE_OTA, } ai_state_t;

状态与硬件联动:

状态双目震动音频
BOOT开机动画短震开机音
IDLE慢眨眼待机
WAKEUP睁眼双短震提示音
LISTENING聚焦眼神录音
THINKING眼球转动轻震等待
SPEAKING说话表情TTS
ERROR困惑表情长震错误提示
OTA升级动画间歇震动升级提示

6. 关键代码示例

下面代码是方案级参考代码,GPIO、I2C 地址、屏幕驱动 IC 需要按实际原理图调整。

6.1 全局事件总线

// app_event.h #pragma once #include <stdint.h> #include "freertos/FreeRTOS.h" #include "freertos/queue.h" typedef enum { EVT_WAKE_WORD = 1, EVT_TOUCH_TOP, EVT_TOUCH_LEFT, EVT_TOUCH_RIGHT, EVT_TOUCH_BACK, EVT_SHAKE, EVT_PICKUP, EVT_FLIP, EVT_AI_LISTENING, EVT_AI_THINKING, EVT_AI_SPEAKING, EVT_AI_ERROR, EVT_LOW_BATTERY, } app_event_type_t; typedef struct { app_event_type_t type; int value; int x; int y; int z; } app_event_t; extern QueueHandle_t g_app_event_queue;
// app_main.c #include "app_event.h" #include "esp_log.h" #include "nvs_flash.h" QueueHandle_t g_app_event_queue; void wifi_app_start(void); void blufi_app_start(void); void eye_app_start(void); void touch_app_start(void); void imu_app_start(void); void haptic_app_start(void); void ai_client_start(void); void app_main(void) { ESP_ERROR_CHECK(nvs_flash_init()); g_app_event_queue = xQueueCreate(16, sizeof(app_event_t)); if (!g_app_event_queue) { ESP_LOGE("APP", "事件队列创建失败"); return; } wifi_app_start(); blufi_app_start(); eye_app_start(); haptic_app_start(); touch_app_start(); imu_app_start(); ai_client_start(); ESP_LOGI("APP", "四博AI双目音箱启动完成"); }

6.2 震动马达驱动

// haptic_motor.c #include "driver/ledc.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_err.h" #define MOTOR_GPIO 15 #define MOTOR_LEDC_TIMER LEDC_TIMER_0 #define MOTOR_LEDC_MODE LEDC_LOW_SPEED_MODE #define MOTOR_LEDC_CHANNEL LEDC_CHANNEL_0 #define MOTOR_LEDC_FREQ 2000 #define MOTOR_DUTY_MAX 8191 typedef enum { HAPTIC_SHORT, HAPTIC_DOUBLE, HAPTIC_LONG, HAPTIC_ERROR, } haptic_pattern_t; static void motor_set(uint32_t duty) { ledc_set_duty(MOTOR_LEDC_MODE, MOTOR_LEDC_CHANNEL, duty); ledc_update_duty(MOTOR_LEDC_MODE, MOTOR_LEDC_CHANNEL); } void haptic_play(haptic_pattern_t pattern) { switch (pattern) { case HAPTIC_SHORT: motor_set(MOTOR_DUTY_MAX * 60 / 100); vTaskDelay(pdMS_TO_TICKS(60)); motor_set(0); break; case HAPTIC_DOUBLE: 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)); } break; case HAPTIC_LONG: motor_set(MOTOR_DUTY_MAX * 80 / 100); vTaskDelay(pdMS_TO_TICKS(300)); motor_set(0); break; case HAPTIC_ERROR: for (int i = 0; i < 3; i++) { motor_set(MOTOR_DUTY_MAX * 90 / 100); vTaskDelay(pdMS_TO_TICKS(80)); motor_set(0); vTaskDelay(pdMS_TO_TICKS(100)); } break; } } void haptic_app_start(void) { ledc_timer_config_t timer = { .speed_mode = MOTOR_LEDC_MODE, .timer_num = MOTOR_LEDC_TIMER, .duty_resolution = LEDC_TIMER_13_BIT, .freq_hz = MOTOR_LEDC_FREQ, .clk_cfg = LEDC_AUTO_CLK, }; ESP_ERROR_CHECK(ledc_timer_config(&timer)); ledc_channel_config_t ch = { .gpio_num = MOTOR_GPIO, .speed_mode = MOTOR_LEDC_MODE, .channel = MOTOR_LEDC_CHANNEL, .timer_sel = MOTOR_LEDC_TIMER, .duty = 0, .hpoint = 0, }; ESP_ERROR_CHECK(ledc_channel_config(&ch)); }

6.3 四路触控检测

如果四路触控直接接 ESP32-S3 Touch Pad,可采用如下逻辑。如果实际硬件使用外置触控 IC,则将touch_pad_read_raw_data()替换为 I2C 读取触控状态即可。

// touch_input.c #include "driver/touch_sensor.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "app_event.h" #include "esp_log.h" #define TOUCH_THRESHOLD_PERCENT 70 typedef struct { touch_pad_t pad; app_event_type_t event; uint32_t baseline; const char *name; } touch_key_t; static touch_key_t g_keys[] = { {TOUCH_PAD_NUM1, EVT_TOUCH_TOP, 0, "TOP"}, {TOUCH_PAD_NUM2, EVT_TOUCH_LEFT, 0, "LEFT"}, {TOUCH_PAD_NUM3, EVT_TOUCH_RIGHT, 0, "RIGHT"}, {TOUCH_PAD_NUM4, EVT_TOUCH_BACK, 0, "BACK"}, }; static void touch_task(void *arg) { uint32_t value = 0; while (1) { for (int i = 0; i < 4; i++) { touch_pad_read_raw_data(g_keys[i].pad, &value); uint32_t threshold = g_keys[i].baseline * TOUCH_THRESHOLD_PERCENT / 100; if (value < threshold) { app_event_t evt = { .type = g_keys[i].event, .value = value, }; xQueueSend(g_app_event_queue, &evt, 0); ESP_LOGI("TOUCH", "触摸按键:%s raw=%lu", g_keys[i].name, value); vTaskDelay(pdMS_TO_TICKS(300)); } } vTaskDelay(pdMS_TO_TICKS(30)); } } void touch_app_start(void) { touch_pad_init(); for (int i = 0; i < 4; i++) { touch_pad_config(g_keys[i].pad); } vTaskDelay(pdMS_TO_TICKS(200)); for (int i = 0; i < 4; i++) { uint32_t sum = 0; for (int j = 0; j < 16; j++) { uint32_t v = 0; touch_pad_read_raw_data(g_keys[i].pad, &v); sum += v; vTaskDelay(pdMS_TO_TICKS(10)); } g_keys[i].baseline = sum / 16; ESP_LOGI("TOUCH", "%s baseline=%lu", g_keys[i].name, g_keys[i].baseline); } xTaskCreate(touch_task, "touch_task", 4096, NULL, 5, NULL); }

6.4 三轴姿态传感器检测

下面以通用 I2C 三轴传感器为例。实际项目中需要按具体传感器型号调整寄存器,例如 QMI8658、MPU6050、LIS3DH 等。

// imu_sensor.c #include "driver/i2c.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "app_event.h" #include "esp_log.h" #include <math.h> #define I2C_PORT I2C_NUM_0 #define I2C_SDA_GPIO 8 #define I2C_SCL_GPIO 9 #define I2C_FREQ_HZ 400000 #define IMU_ADDR 0x68 #define IMU_REG_ACCEL_X 0x3B static esp_err_t imu_read_accel(int16_t *x, int16_t *y, int16_t *z) { uint8_t reg = IMU_REG_ACCEL_X; uint8_t data[6] = {0}; esp_err_t ret = i2c_master_write_read_device( I2C_PORT, IMU_ADDR, &reg, 1, data, sizeof(data), pdMS_TO_TICKS(50) ); if (ret != ESP_OK) { return ret; } *x = (int16_t)((data[0] << 8) | data[1]); *y = (int16_t)((data[2] << 8) | data[3]); *z = (int16_t)((data[4] << 8) | data[5]); return ESP_OK; } static void imu_task(void *arg) { int16_t last_x = 0, last_y = 0, last_z = 0; while (1) { int16_t x, y, z; if (imu_read_accel(&x, &y, &z) == ESP_OK) { int dx = abs(x - last_x); int dy = abs(y - last_y); int dz = abs(z - last_z); int delta = dx + dy + dz; if (delta > 18000) { app_event_t evt = { .type = EVT_SHAKE, .x = x, .y = y, .z = z, }; xQueueSend(g_app_event_queue, &evt, 0); ESP_LOGI("IMU", "检测到摇晃 x=%d y=%d z=%d", x, y, z); } if (z < -12000) { app_event_t evt = { .type = EVT_FLIP, .x = x, .y = y, .z = z, }; xQueueSend(g_app_event_queue, &evt, 0); ESP_LOGI("IMU", "检测到翻转"); } last_x = x; last_y = y; last_z = z; } vTaskDelay(pdMS_TO_TICKS(80)); } } void imu_app_start(void) { i2c_config_t conf = { .mode = I2C_MODE_MASTER, .sda_io_num = I2C_SDA_GPIO, .scl_io_num = I2C_SCL_GPIO, .sda_pullup_en = GPIO_PULLUP_ENABLE, .scl_pullup_en = GPIO_PULLUP_ENABLE, .master.clk_speed = I2C_FREQ_HZ, }; ESP_ERROR_CHECK(i2c_param_config(I2C_PORT, &conf)); ESP_ERROR_CHECK(i2c_driver_install(I2C_PORT, conf.mode, 0, 0, 0)); xTaskCreate(imu_task, "imu_task", 4096, NULL, 5, NULL); }

6.5 事件处理:触控、姿态、表情、震动联动

// interaction_task.c #include "app_event.h" #include "esp_log.h" typedef enum { EYE_IDLE, EYE_HAPPY, EYE_LISTENING, EYE_THINKING, EYE_SPEAKING, EYE_SURPRISED, EYE_ANGRY, EYE_SLEEP, EYE_ERROR, } eye_expression_t; void eye_set_expression(eye_expression_t exp); void haptic_play(int pattern); void ai_start_listen(void); void ai_stop_speak(void); void enter_blufi_config(void); static void interaction_task(void *arg) { app_event_t evt; while (1) { if (xQueueReceive(g_app_event_queue, &evt, portMAX_DELAY)) { switch (evt.type) { case EVT_WAKE_WORD: eye_set_expression(EYE_LISTENING); haptic_play(1); ai_start_listen(); break; case EVT_TOUCH_TOP: eye_set_expression(EYE_HAPPY); haptic_play(0); ai_start_listen(); break; case EVT_TOUCH_LEFT: eye_set_expression(EYE_SLEEP); haptic_play(0); break; case EVT_TOUCH_RIGHT: eye_set_expression(EYE_HAPPY); haptic_play(0); break; case EVT_TOUCH_BACK: eye_set_expression(EYE_THINKING); haptic_play(1); enter_blufi_config(); break; case EVT_SHAKE: eye_set_expression(EYE_SURPRISED); haptic_play(1); break; case EVT_FLIP: eye_set_expression(EYE_SLEEP); haptic_play(2); ai_stop_speak(); break; case EVT_AI_THINKING: eye_set_expression(EYE_THINKING); break; case EVT_AI_SPEAKING: eye_set_expression(EYE_SPEAKING); break; case EVT_AI_ERROR: eye_set_expression(EYE_ERROR); haptic_play(3); break; default: break; } } } } void interaction_app_start(void) { xTaskCreate(interaction_task, "interaction_task", 4096, NULL, 6, NULL); }

6.6 AI WebSocket 消息处理示例

// ai_client.c #include "esp_websocket_client.h" #include "esp_log.h" #include "cJSON.h" #include "app_event.h" static const char *TAG = "AI_WS"; static void ai_ws_event_handler( void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data ) { esp_websocket_event_data_t *data = (esp_websocket_event_data_t *)event_data; switch (event_id) { case WEBSOCKET_EVENT_CONNECTED: ESP_LOGI(TAG, "AI服务已连接"); break; case WEBSOCKET_EVENT_DISCONNECTED: ESP_LOGW(TAG, "AI服务断开"); break; case WEBSOCKET_EVENT_DATA: { char *json = calloc(1, data->data_len + 1); if (!json) return; memcpy(json, data->data_ptr, data->data_len); cJSON *root = cJSON_Parse(json); if (root) { 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, "stt") == 0) { ESP_LOGI(TAG, "用户语音识别结果:%s", cJSON_GetObjectItem(root, "text")->valuestring); } if (strcmp(type->valuestring, "llm") == 0) { app_event_t evt = {.type = EVT_AI_THINKING}; xQueueSend(g_app_event_queue, &evt, 0); } if (strcmp(type->valuestring, "tts") == 0) { if (state && cJSON_IsString(state)) { if (strcmp(state->valuestring, "start") == 0) { app_event_t evt = {.type = EVT_AI_SPEAKING}; xQueueSend(g_app_event_queue, &evt, 0); } else if (strcmp(state->valuestring, "stop") == 0) { app_event_t evt = {.type = EVT_AI_LISTENING}; xQueueSend(g_app_event_queue, &evt, 0); } } } if (emotion && cJSON_IsString(emotion)) { ESP_LOGI(TAG, "AI情绪:%s", emotion->valuestring); } } cJSON_Delete(root); } free(json); break; } case WEBSOCKET_EVENT_ERROR: ESP_LOGE(TAG, "AI服务错误"); app_event_t evt = {.type = EVT_AI_ERROR}; xQueueSend(g_app_event_queue, &evt, 0); break; default: break; } } void ai_client_start(void) { esp_websocket_client_config_t cfg = { .uri = "wss://your-ai-server/ws", .buffer_size = 4096, }; esp_websocket_client_handle_t client = esp_websocket_client_init(&cfg); esp_websocket_register_events( client, WEBSOCKET_EVENT_ANY, ai_ws_event_handler, NULL ); esp_websocket_client_start(client); }

6.7 MCP 工具扩展示例

四博小助手支持 MCP 扩展能力,因此可以把设备能力封装成 AI 可调用工具,例如切换眼睛主题、播放提示音、打开夜灯、查询电量、进入配网等。资料中也提到小程序侧支持 MCP 工具扩展,可对接工具和插件。

示例工具定义:

{ "name": "self.screen.set_eye_theme", "description": "切换AI双目音箱的眼睛主题", "parameters": { "type": "object", "properties": { "theme": { "type": "string", "enum": ["默认", "海洋", "爱心", "梦境", "彩虹", "花仙子", "机甲"] } }, "required": ["theme"] } }

设备侧收到 MCP 指令后的处理逻辑:

void mcp_handle_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("flower"); } else if (strcmp(theme, "机甲") == 0) { eye_load_theme("mecha"); } else { eye_load_theme("default"); } haptic_play(HAPTIC_SHORT); }

7. 小程序与云端功能设计

7.1 四博小助手功能入口

建议小程序提供以下入口:

功能说明
设备绑定BLE 搜索设备并绑定
BluFi 配网输入 Wi-Fi 账号密码
智能体选择小智 / 豆包 / ChatGPT / 私有模型
声音克隆录制样本,生成专属音色
知识库上传产品说明书、课程资料、FAQ
MCP 工具控制设备能力
素材管理眼睛动画、提示音、角色皮肤
固件升级OTA 更新
参数配置音量、唤醒词、灵敏度、儿童模式

开发资料中也说明,设备烧录后可通过“四博小助手”进行 BluFi 配网,搜索设备、输入网络密码后即可使用对话控制。

7.2 典型用户流程

首次开机 ↓ 双目显示配网动画 ↓ 用户打开四博小助手 ↓ BLE 搜索设备 ↓ BluFi 下发 Wi-Fi ↓ 设备连接云端 ↓ 选择智能体 / 绑定知识库 / 设置音色 ↓ 开始 AI 对话

8. 产品功能清单

8.1 基础功能

  1. 离线语音唤醒。

  2. AI 问答。

  3. 连续对话。

  4. 实时打断。

  5. 双目表情。

  6. 四路触控。

  7. 震动反馈。

  8. 姿态感应。

  9. Wi-Fi 配网。

  10. 小程序绑定。

  11. OTA 升级。

  12. 自定义唤醒词。

8.2 高级功能

  1. 声音克隆。

  2. 专属知识库。

  3. 角色人格设定。

  4. MCP 工具控制。

  5. AI 讲故事。

  6. 儿童问答。

  7. 英语陪练。

  8. 桌面宠物互动。

  9. 情绪陪伴。

  10. 智能家居控制。

  11. 蓝牙音箱模式,需增加经典蓝牙音频芯片或独立蓝牙方案。

  12. 4G 联网版本,适合户外或无 Wi-Fi 场景。


9. 推荐 SKU 规划

SKU配置定位
标准版S3 + VB6824 + 0.71 双目 + 触控 + 震动AI 玩具 / 礼品
高配版S3 + VB6824 + 1.28 双目 + 四触控 + 三轴 + 震动AI 桌宠 / AI 音箱
Pro 版S3 + VB6824 + 1.28 可调光双目 + 三轴 + 4G/SD教育 / 陪伴 / 高端市场
蓝牙音箱版S3 + VB6824 + 7014 / 蓝牙音频芯片传统音箱升级 AI

资料中提到,7014 蓝牙 PAN AI 手机伴侣方案具有成本低、可通过手机网络通信、适合手机配件和传统音箱等特点;如果要把本产品强化成“能当蓝牙音箱”的版本,可以在 S3 双目 AI 架构外增加经典蓝牙音频链路。


10. 开发与量产建议

10.1 开发环境

开发宝典中建议在 VSCode 中安装 ESP-IDF 扩展和编译工具,并选择 ESP-IDF v5.5 版本进行安装配置;文档也提到 S3 双目工程推荐 ESP-IDF 版本大于等于 5.4.0,C5 则建议大于等于 5.5.0。

推荐工程结构:

fourbo_ai_eye_speaker/ ├── main/ │ ├── app_main.c │ ├── app_event.h │ ├── board_config.h │ ├── wifi_app.c │ ├── blufi_app.c │ ├── ai_client.c │ ├── eye_display.c │ ├── touch_input.c │ ├── imu_sensor.c │ ├── haptic_motor.c │ ├── mcp_tools.c │ └── ota_manager.c ├── components/ │ ├── vb6824/ │ ├── eye_assets/ │ ├── audio_player/ │ └── json_protocol/ ├── partitions.csv ├── sdkconfig.defaults └── CMakeLists.txt

10.2 量产固件建议

量产建议准备 4 类固件:

固件用途
factory_test.bin产测:屏幕、触控、马达、喇叭、麦克风、IMU
user_app.bin正式出货固件
ota_app.binOTA 升级固件
eye_asset.bin眼睛素材包 / 角色素材包

产测项目:

  1. 双目屏颜色测试。

  2. 双目同步刷新测试。

  3. 四路触控阈值校准。

  4. 震动马达 PWM 测试。

  5. 三轴传感器方向测试。

  6. 麦克风录音测试。

  7. 喇叭播放测试。

  8. VB6824 唤醒测试。

  9. Wi-Fi RSSI 测试。

  10. 电池电压 ADC 测试。

  11. Type-C 充电测试。

  12. OTA 分区校验。


11. 方案总结

四博 AI 双目智能音箱不是普通语音盒子,而是一个集AI 语音大模型、双目情绪显示、触控交互、姿态感应、震动反馈、小程序平台、声音克隆、知识库和 MCP 扩展于一体的高集成 AI 硬件方案。

它的核心优势可以概括为:

  1. 硬件完整:S3 + VB6824 + 双目屏 + 麦克风 + 喇叭 + 触控 + 马达 + 姿态。

  2. 交互丰富:语音、触摸、动作、表情、震动多通道联动。

  3. 开发友好:ESP32-S3 生态成熟,资料中也明确该方案全开源、支持二次开发。

  4. 平台完整:四博小助手支持配网、声音克隆、知识库、MCP、素材和固件更新。

  5. 量产友好:可直接套壳,也可面向品牌客户、方案商、电商客户进行定制开发。

  6. 扩展空间大:可升级为蓝牙音箱版、4G 版、儿童教育版、桌面宠物版、IP 角色定制版。

一句话概括:

四博 AI 双目智能音箱 = AI 语音音箱 + 情绪双目屏 + 触控桌宠 + 小程序智能体平台,是面向 2026 年 AI 硬件市场的高性价比顶配方案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 10:03:25

Windows Cleaner:3分钟告别C盘爆红,让你的电脑重获新生!

Windows Cleaner&#xff1a;3分钟告别C盘爆红&#xff0c;让你的电脑重获新生&#xff01; 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否曾经打开电脑&a…

作者头像 李华
网站建设 2026/4/28 10:03:21

终极Android手势识别开发指南:从入门到精通的视觉交互技术

终极Android手势识别开发指南&#xff1a;从入门到精通的视觉交互技术 【免费下载链接】android_guides Extensive Open-Source Guides for Android Developers 项目地址: https://gitcode.com/gh_mirrors/an/android_guides GitHub 加速计划的 android_guides 项目是一…

作者头像 李华
网站建设 2026/4/28 10:00:23

Zotero插件市场:5分钟打造你的专属文献管理工具箱

Zotero插件市场&#xff1a;5分钟打造你的专属文献管理工具箱 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing, installing, and reviewing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons 在学术…

作者头像 李华
网站建设 2026/4/28 9:58:16

如何使用PostCSS优化字体加载性能:提升网页加载速度的完整指南

如何使用PostCSS优化字体加载性能&#xff1a;提升网页加载速度的完整指南 【免费下载链接】postcss Transforming styles with JS plugins 项目地址: https://gitcode.com/gh_mirrors/po/postcss PostCSS是一个强大的CSS转换工具&#xff0c;通过JavaScript插件可以实现…

作者头像 李华
网站建设 2026/4/28 9:56:52

别再手动写循环了!用Python的itertools.combinations轻松搞定组合问题

别再手动写循环了&#xff01;用Python的itertools.combinations轻松搞定组合问题 在数据处理和算法设计中&#xff0c;组合问题无处不在——从简单的用户抽样到复杂的特征工程&#xff0c;我们经常需要枚举所有可能的元素组合。许多初学者会本能地写出多层嵌套循环或递归函数&…

作者头像 李华