四博 AI 智能音箱 4G S3 版本技术方案
------三模联网、远场拾音、实时打断、屏幕交互、客户系统接入的一体化 AI 音箱原型
四博 AI 智能音箱 4G S3 版本,是基于 ESP32-S3 AI 音频平台 + 4G/Wi-Fi/蓝牙三模联网 + 远场语音前端 + 屏幕交互 + AI 大模型服务 构建的智能语音硬件方案。该方案面向 AI 音箱、AI 学习机、AI 故事机、AI 桌宠、AI 智能中控、AI 玩具、智能家居控制终端等产品形态。
从《四博智联 AI 开发宝典》来看,四博 AI-Speaker 开发板已支持"四博小助手"小程序、声音克隆、知识库、自建大模型和 MCP 扩展能力;开发宝典中也给出了 ESP32-S3 工程配置、编译、烧录和小程序配网流程。 同时,四博 AI-C5 方案已支持 4G 模块接入、外接电池、屏幕、喇叭、麦克风,并支持 Wi-Fi 与 4G 模式切换,可作为本方案三模联网架构的重要参考。
1. 方案定位
四博 AI 智能音箱 4G S3 版本的核心不是"一个能联网说话的音箱",而是一个可二次开发的 AI 语音边缘终端平台。
它解决的主要问题是:
1. 远距离拾音:5 米范围内可唤醒、打断、对话
2. 高噪声鲁棒性:空气炸锅、厨房电器、风扇、背景音乐等噪音环境下仍可响应
3. 打断体验:支持唤醒词打断、实时打断、AI 播报过程中插话
4. 联网方式:支持蓝牙上网、Wi-Fi 上网、4G 上网
5. 屏幕显示:支持单屏、双屏、双屏异显
6. 系统集成:基于 ESP32-S3,方便客户接入自己的云平台、App、小程序或业务系统
7. 量产扩展:支持 OTA、MCP、串口协议、状态上报、客户自定义功能
2. 总体系统架构
┌────────────────────────────────────────────┐
│ 客户业务系统 / AI 云平台 │
│ LLM / TTS / ASR / 知识库 / 设备管理 / 会员系统 │
└───────────────────▲────────────────────────┘
│ WebSocket / HTTPS / MQTT
┌───────────────────┴────────────────────────┐
│ 四博 AI 智能音箱设备端 │
│ │
│ ┌──────────────┐ ┌────────────────────┐ │
│ │ 网络管理层 │ │ AI 会话协议层 │ │
│ │ Wi-Fi / BT / 4G│──▶│ WebSocket / OTA / MCP│ │
│ └──────────────┘ └────────────────────┘ │
│ │
│ ┌──────────────┐ ┌────────────────────┐ │
│ │ 语音前端层 │ │ 音频播放层 │ │
│ │ 唤醒/降噪/打断 │◀──▶│ TTS / I2S / 功放 / 喇叭│ │
│ └──────────────┘ └────────────────────┘ │
│ │
│ ┌──────────────┐ ┌────────────────────┐ │
│ │ 显示交互层 │ │ 外设控制层 │ │
│ │ 单屏/双屏/异显 │ │ 按键/触摸/灯光/UART │ │
│ └──────────────┘ └────────────────────┘ │
│ │
│ ESP32-S3 主控 + 4G 模块 │
└────────────────────────────────────────────┘
3. 硬件架构建议
3.1 主控与核心器件
主控芯片:ESP32-S3 / 四博 S3R8 系列方案
语音芯片:VB6824 或等效离线语音前端
网络模块:Wi-Fi + Bluetooth + 4G 模块
音频输入:远场麦克风 / 双麦 / 阵列麦克风方案
音频输出:I2S Codec / DAC + 功放 + 4Ω 3W 喇叭
显示接口:SPI LCD / RGB LCD / 双 SPI LCD
电源系统:锂电池 + 充电管理 + 5V / 3.3V 电源轨
扩展接口:UART / I2C / SPI / GPIO / USB
《开发宝典》中四博 AI-C5 开发板硬件参数包括 2.4G & 5G Wi-Fi、4G 模组、4Ω 3W 喇叭、咪头、电池和 2 寸屏幕,可作为 4G 音箱方案的硬件参考。
3.2 推荐模块划分
1. ESP32-S3 主控板
- 负责系统调度、网络管理、屏幕 UI、音频流控制、协议通信
2. 语音前端模块
- 负责远场唤醒、离线唤醒词、噪声抑制、打断检测
3. 4G 通信模块
- 通过 UART / USB / PPP / ECM 方式接入
- 负责无 Wi-Fi 环境下的公网连接
4. 显示模块
- 单屏:状态、歌词、对话内容、时间、联网状态
- 双屏:主屏显示内容,副屏显示表情或状态
- 异显:左右屏分别显示不同 UI 或眼睛动画
5. 客户扩展模块
- 灯光、继电器、传感器、按键、触摸、外部 MCU
4. 三模联网技术设计
四博 AI 智能音箱支持三种联网路径:
Wi-Fi 上网:家庭、办公室、学校、固定场景
蓝牙上网:手机共享网络、临时联网、免输入路由器密码
4G 上网:户外、移动场景、无 Wi-Fi 环境、商业部署
4.1 网络选择优先级
建议采用以下网络策略:
开机
↓
读取 NVS 中保存的网络模式
↓
优先尝试最近一次成功网络
↓
Wi-Fi 可用 → 建立 WebSocket
↓
Wi-Fi 失败 → 尝试蓝牙上网 / 蓝牙配网
↓
蓝牙不可用 → 切换 4G
↓
4G 拨号成功 → 建立 AI 服务连接
↓
全部失败 → 进入配网 / 等待用户操作
4.2 网络管理状态机示例代码
下面代码是接入骨架,实际项目中需要根据四博板级工程、4G 模块 AT 指令、蓝牙上网协议进行适配。
typedef enum {
NET_MODE_WIFI = 0,
NET_MODE_BLUETOOTH,
NET_MODE_4G,
} net_mode_t;
typedef enum {
NET_STATE_IDLE = 0,
NET_STATE_CONNECTING,
NET_STATE_CONNECTED,
NET_STATE_FAILED,
} net_state_t;
typedef struct {
net_mode_t mode;
net_state_t state;
int retry_count;
bool ai_ws_ready;
} network_ctx_t;
static network_ctx_t g_net = {
.mode = NET_MODE_WIFI,
.state = NET_STATE_IDLE,
.retry_count = 0,
.ai_ws_ready = false,
};
static bool wifi_connect_start(void);
static bool bt_net_connect_start(void);
static bool modem_4g_connect_start(void);
static void ai_websocket_start(void);
static void network_switch_to_next(void)
{
if (g_net.mode == NET_MODE_WIFI) {
g_net.mode = NET_MODE_BLUETOOTH;
} else if (g_net.mode == NET_MODE_BLUETOOTH) {
g_net.mode = NET_MODE_4G;
} else {
g_net.mode = NET_MODE_WIFI;
}
g_net.state = NET_STATE_IDLE;
g_net.retry_count = 0;
}
static void network_manager_task(void *arg)
{
while (1) {
switch (g_net.state) {
case NET_STATE_IDLE:
g_net.state = NET_STATE_CONNECTING;
if (g_net.mode == NET_MODE_WIFI) {
ESP_LOGI("NET", "开始 Wi-Fi 联网");
wifi_connect_start();
} else if (g_net.mode == NET_MODE_BLUETOOTH) {
ESP_LOGI("NET", "开始蓝牙上网");
bt_net_connect_start();
} else {
ESP_LOGI("NET", "开始 4G 联网");
modem_4g_connect_start();
}
break;
case NET_STATE_CONNECTED:
if (!g_net.ai_ws_ready) {
ai_websocket_start();
g_net.ai_ws_ready = true;
}
break;
case NET_STATE_FAILED:
ESP_LOGW("NET", "当前网络失败,切换下一种联网方式");
network_switch_to_next();
break;
default:
break;
}
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
5. 4G 模块接入设计
4G 模块建议提供两种接入方式:
方式一:UART AT 指令模式
- ESP32-S3 通过 UART 控制 4G 模块
- 发送 AT、AT+CSQ、AT+CGATT、AT+CGACT 等指令
- 模块内部完成 TCP/MQTT/HTTP 连接
方式二:PPP/ECM 网络接口模式
- ESP32-S3 把 4G 模块作为网络接口
- 上层 WebSocket / HTTP 代码不用关心底层是 Wi-Fi 还是 4G
5.1 4G AT 检测示例
static bool modem_send_cmd(const char *cmd, const char *expect, int timeout_ms);
static bool modem_4g_check_ready(void)
{
if (!modem_send_cmd("AT\r\n", "OK", 1000)) {
ESP_LOGE("4G", "4G 模块无响应");
return false;
}
if (!modem_send_cmd("ATE0\r\n", "OK", 1000)) {
ESP_LOGW("4G", "关闭回显失败");
}
if (!modem_send_cmd("AT+CPIN?\r\n", "READY", 3000)) {
ESP_LOGE("4G", "SIM 卡未就绪");
return false;
}
if (!modem_send_cmd("AT+CSQ\r\n", "OK", 1000)) {
ESP_LOGW("4G", "信号质量查询失败");
}
if (!modem_send_cmd("AT+CGATT?\r\n", "+CGATT: 1", 3000)) {
ESP_LOGE("4G", "4G 网络未附着");
return false;
}
ESP_LOGI("4G", "4G 模块已就绪");
return true;
}
6. 远场拾音与打断逻辑
四博方案重点突出的是:5 米范围内精准打断唤醒,在空气炸锅等高噪音环境下仍能稳定响应。
推荐的语音状态机如下:
Idle 空闲
↓ 唤醒词触发
Listening 监听
↓ 用户说话结束
Thinking AI 处理中
↓ TTS 开始
Speaking 播报中
↓ 检测到唤醒词 / 实时打断
Interrupt 打断
↓ 停止播放,重新进入 Listening
6.1 语音状态定义
《开发宝典》的 MCP 状态上报中,已经定义了开机、配网、空闲、联网、监听、说话、升级、激活等状态码,便于 MCU 或客户系统同步 UI 和设备状态。
typedef enum {
AI_STATE_STARTING = 1,
AI_STATE_WIFI_CONFIGURING,
AI_STATE_IDLE,
AI_STATE_CONNECTING,
AI_STATE_LISTENING,
AI_STATE_SPEAKING,
AI_STATE_UPGRADING,
AI_STATE_ACTIVATING,
} ai_state_t;
static ai_state_t g_ai_state = AI_STATE_STARTING;
static void ai_set_state(ai_state_t state)
{
g_ai_state = state;
switch (state) {
case AI_STATE_IDLE:
display_show_status("空闲,可唤醒");
break;
case AI_STATE_LISTENING:
display_show_status("正在聆听");
break;
case AI_STATE_SPEAKING:
display_show_status("AI 正在回答");
break;
case AI_STATE_CONNECTING:
display_show_status("联网中");
break;
default:
break;
}
}
6.2 实时打断处理骨架
《开发宝典》中提到,实时打断固件可在 DOIT_AI 工程的 Kconfig.projbuild 中为对应板型加入 USE_DEVICE_AEC 或 USE_SERVER_AEC 配置,设备端 AEC 不依赖服务器能力,服务器端 AEC 需要后端支持。
static bool g_tts_playing = false;
static bool g_interrupt_enabled = true;
void audio_on_wakeup_detected(void)
{
ESP_LOGI("AUDIO", "检测到唤醒词");
if (g_tts_playing && g_interrupt_enabled) {
ESP_LOGI("AUDIO", "唤醒词打断当前播报");
audio_player_stop();
g_tts_playing = false;
}
ai_set_state(AI_STATE_LISTENING);
ai_session_start_recording();
}
void audio_on_realtime_voice_detected(void)
{
if (!g_interrupt_enabled) {
return;
}
if (g_ai_state == AI_STATE_SPEAKING) {
ESP_LOGI("AUDIO", "检测到实时打断,停止 TTS");
audio_player_stop();
g_tts_playing = false;
ai_set_state(AI_STATE_LISTENING);
ai_session_start_recording();
}
}
void tts_play_start(const uint8_t *pcm, size_t len)
{
g_tts_playing = true;
ai_set_state(AI_STATE_SPEAKING);
i2s_audio_write(pcm, len);
}
void tts_play_done(void)
{
g_tts_playing = false;
ai_set_state(AI_STATE_IDLE);
}
7. 唤醒词修改设计
四博方案可以支持修改唤醒词。《开发宝典》中给出了 VB6824 自定义唤醒词流程:设备进入升级模式后,可通过设备码和授权码完成唤醒词升级;文档中也说明,升级完成后可支持选定唤醒词以及 AI 说话过程中的随时打断。
建议产品侧设计为:
默认唤醒词:你好小智
可选唤醒词:小乐小乐 / 小博小博 / 品牌自定义
升级方式:本地局域网升级 / 小程序触发 / 工厂烧录
设备反馈:屏幕显示升级状态 + 语音播报升级结果
唤醒词升级流程
用户进入设置
↓
选择唤醒词
↓
设备进入 VB6824 升级模式
↓
小程序 / 本地工具下发升级参数
↓
语音芯片升级
↓
ESP32-S3 重启语音服务
↓
新唤醒词生效
8. MCP / UART 客户系统对接
四博方案非常适合客户做二次开发,关键是 MCP 能把大模型理解结果转换成设备控制指令。
《开发宝典》中说明,四博 AI-01 AT+MCP 固件把语义理解、联网与指令编排收进 UART 中,标准串口参数为 115200、8N1、无校验、1 位停止位,所有指令以回车换行结束,合法指令统一回复 OK;AT+ADDMCP 可以把"人话"映射为 MCU 可执行的二进制控制帧。
8.1 音箱场景 MCP 指令设计
语音命令:"把音量调到 80"
MCP 映射:set_volume
返回帧:55 AA 03 F2 50 AA 55
语音命令:"打开厨房模式"
MCP 映射:set_scene
返回帧:55 AA 03 F3 01 AA 55
语音命令:"切换到 4G 上网"
MCP 映射:switch_network
返回帧:55 AA 03 F4 03 AA 55
语音命令:"屏幕显示天气"
MCP 映射:show_weather
返回帧:55 AA 03 F5 01 AA 55
8.2 MCP 注册示例
static void sibo_mcp_register_default(void)
{
uart_send_line("AT\r\n");
// 音量调节:Type=1,AI 参数返回 volume
uart_send_line(
"AT+ADDMCP=1,set_volume,设置音箱音量,F2,1,V\r\n"
);
// 场景切换:Type=0,固定返回场景 ID
uart_send_line(
"AT+ADDMCP=0,set_kitchen_mode,切换到厨房高噪音模式,2,F3,01\r\n"
);
// 网络切换:Type=1,返回网络类型,1=WiFi,2=BT,3=4G
uart_send_line(
"AT+ADDMCP=1,switch_network,切换联网方式,F4,1,N\r\n"
);
// 屏幕显示天气
uart_send_line(
"AT+ADDMCP=0,show_weather,在屏幕上显示天气,2,F5,01\r\n"
);
}
8.3 MCU 解析 AI 模组返回帧
#define FRAME_HEAD_0 0x55
#define FRAME_HEAD_1 0xAA
#define FRAME_TAIL_0 0xAA
#define FRAME_TAIL_1 0x55
typedef struct {
uint8_t len;
uint8_t cmd;
uint8_t data[16];
} ai_frame_t;
static void handle_ai_frame(const ai_frame_t *frame)
{
switch (frame->cmd) {
case 0xF2: // set_volume
audio_set_volume(frame->data[0]);
break;
case 0xF3: // set_scene
if (frame->data[0] == 0x01) {
audio_set_noise_mode_kitchen();
display_show_status("厨房高噪音模式");
}
break;
case 0xF4: // switch_network
if (frame->data[0] == 0x01) {
net_switch_to_wifi();
} else if (frame->data[0] == 0x02) {
net_switch_to_bluetooth();
} else if (frame->data[0] == 0x03) {
net_switch_to_4g();
}
break;
case 0xF5: // show_weather
display_show_weather();
break;
case 0xFC:
// 开发宝典中提到收到 55 AA 01 FC AA 55 后,MCU 应重启 AI 模组并重发 MCP 映射
ai_module_reset();
sibo_mcp_register_default();
break;
default:
ESP_LOGW("MCP", "未知 AI 指令: 0x%02X", frame->cmd);
break;
}
}
9. 屏幕驱动与异显设计
该方案支持:
1. 单屏显示
- 时间
- 网络状态
- AI 状态
- 对话文本
- 音量
- 天气
- TTS 播放状态
2. 双屏同显
- 两个屏幕显示相同动画或状态
3. 双屏异显
- 主屏显示文字内容
- 副屏显示表情、眼睛、音频波形或状态动画
《开发宝典》中多模态 S3 开发板基于 ESP32-S3,支持两块 1.28 寸双目屏、高清摄像头和触摸交互,并强调硬件和软件全开源,可用于二次开发或量产制造。 这说明 S3 平台不仅适合做普通音箱,也适合做带屏幕、双屏、表情交互和多模态交互的 AI 终端。
9.1 双屏 UI 刷新框架
typedef enum {
DISP_MAIN = 0,
DISP_SUB,
} display_id_t;
void display_show_ai_text(const char *text)
{
// 主屏显示 AI 文本
lcd_select(DISP_MAIN);
lv_label_set_text(ui_main_label, text);
}
void display_show_expression(const char *expr)
{
// 副屏显示表情状态
lcd_select(DISP_SUB);
if (strcmp(expr, "listening") == 0) {
lv_img_set_src(ui_eye_img, &img_eye_listening);
} else if (strcmp(expr, "speaking") == 0) {
lv_img_set_src(ui_eye_img, &img_eye_speaking);
} else {
lv_img_set_src(ui_eye_img, &img_eye_idle);
}
}
void display_update_by_ai_state(ai_state_t state)
{
switch (state) {
case AI_STATE_IDLE:
display_show_ai_text("你好,我在这里");
display_show_expression("idle");
break;
case AI_STATE_LISTENING:
display_show_ai_text("正在聆听...");
display_show_expression("listening");
break;
case AI_STATE_SPEAKING:
display_show_ai_text("正在回答...");
display_show_expression("speaking");
break;
default:
break;
}
}
10. 设备端 AI 会话流程
设备启动
↓
初始化 NVS / 音频 / 屏幕 / 网络 / 语音芯片
↓
尝试 Wi-Fi / 蓝牙 / 4G 联网
↓
连接 OTA 服务,检查固件版本
↓
建立 WebSocket AI 会话
↓
进入空闲状态
↓
用户 5 米内唤醒
↓
开始录音并上传
↓
云端 ASR + LLM + TTS
↓
设备播放语音并显示文本
↓
用户可实时打断 / 唤醒词打断 / 继续追问
10.1 主程序骨架
void app_main(void)
{
esp_err_t ret;
ret = nvs_flash_init();
ESP_ERROR_CHECK(ret);
board_power_init();
board_gpio_init();
display_init();
display_show_status("系统启动中");
audio_codec_init();
microphone_init();
speaker_init();
wakeup_engine_init();
aec_engine_init(); // 设备端 AEC / 打断
voice_frontend_start();
network_manager_init();
xTaskCreate(network_manager_task, "network_manager", 4096, NULL, 5, NULL);
ai_protocol_init(); // WebSocket / OTA / MCP
sibo_mcp_register_default();
button_init();
ota_service_init();
display_show_status("等待联网");
while (1) {
ai_event_loop();
vTaskDelay(pdMS_TO_TICKS(20));
}
}
11. 工程配置建议
11.1 S3 AI Speaker 基础配置
《开发宝典》中 S3 AI-Speaker 工程需要在板级默认配置中添加 Bluetooth 和 BluFi 配网相关配置,并设置 OTA 地址;文档中的 S3 AI-Speaker 使用 ESP-IDF 5.4.1,C5 编译推荐 ESP-IDF 5.5。
# main/boards/doit-ai-speaker/sdkconfig.defaults.board
CONFIG_IDF_TARGET="esp32s3"
CONFIG_BT_ENABLED=y
CONFIG_USE_BLUFI_NET_CONFIGURING=y
# OTA 服务地址,根据客户服务器替换
CONFIG_OTA_URL="https://your-domain.com/v1/ota/"
# 音频相关
CONFIG_USE_DEVICE_AEC=y
CONFIG_USE_SERVER_AEC=n
# UI
CONFIG_USE_LCD_DISPLAY=y
CONFIG_USE_DUAL_LCD_DISPLAY=y
# 网络模式
CONFIG_USE_WIFI_NETWORK=y
CONFIG_USE_BT_NETWORK=y
CONFIG_USE_4G_NETWORK=y
11.2 实时打断 Kconfig 示例
menu "Sibo AI Speaker Audio"
config USE_DEVICE_AEC
bool "Use device side AEC and realtime interrupt"
default y
help
Enable local AEC and realtime barge-in logic.
config USE_SERVER_AEC
bool "Use server side AEC"
default n
help
Server must support AEC protocol.
config BOARD_TYPE_DOIT_AI_S3_4G_SPEAKER
bool "Doit AI S3 4G Speaker"
default y
endmenu
11.3 编译命令示例
# 进入 ESP-IDF 环境
. ~/esp/esp-idf/export.sh
# 设置目标芯片
idf.py set-target esp32s3
# 打开配置
idf.py menuconfig
# 编译
idf.py build
# 合并固件
idf.py merge-bin
# 烧录
idf.py -p COMx flash monitor
12. 四博小助手接入
四博小助手可以用于:
1. BluFi 配网
2. 创建设备智能体
3. 绑定设备
4. 配置知识库
5. 配置声音克隆
6. 管理素材和提示音
7. 管理 OTA 固件
8. 切换本地或云端智能体
《开发宝典》中说明,用户可通过四博小助手创建智能体,然后选择 BluFi 配网添加设备,搜索到设备后输入 Wi-Fi 密码,之后即可直接使用对话功能。
13. 客户系统集成方式
方式一:接客户云平台
ESP32-S3 音箱
↓ WebSocket / HTTPS
客户 AI 网关
↓
客户 LLM / TTS / ASR / 知识库
↓
返回文本 / 音频 / 控制指令
适合:教育客户、智能家居客户、内容平台客户。
方式二:接客户 MCU
客户 MCU
↑↓ UART / MCP
四博 AI 音箱模组
↑↓ Wi-Fi / 4G
AI 云端
适合:传统家电、玩具、灯控、中控屏、机器人客户。
方式三:接客户 App / 小程序
客户 App / 小程序
↓
客户服务器
↓
四博设备云
↓
AI 音箱设备
适合:需要账号系统、会员系统、设备管理和内容管理的客户。
14. 对外宣传版技术表述
四博 AI 智能音箱 4G S3 版本,是一套基于 ESP32-S3 架构打造的 AI 语音硬件方案。设备支持蓝牙、Wi-Fi、4G 三模联网,可根据家庭、户外、商用部署等不同环境自动或手动切换网络链路。方案搭载远距离拾音与打断算法,5 米范围内可实现精准唤醒、语音打断和连续对话,在空气炸锅、厨房电器、风扇等高噪声环境下仍能保持稳定响应。
在软件层面,方案支持唤醒词打断、实时打断、唤醒词修改、OTA 升级、四博小助手配网、知识库接入、声音克隆、自建大模型和 MCP 扩展。设备端可通过 WebSocket/HTTPS 对接云端 AI 服务,也可通过 UART/MCP 与客户主控系统交互,实现语音控制、状态同步和业务功能扩展。
在硬件层面,该方案可驱动单屏、双屏,并支持双屏异显,可用于 AI 音箱、AI 桌宠、AI 学习机、AI 智能中控、AI 玩具等多种产品形态。基于 ESP32-S3 的开放式工程架构,客户可以方便地接入自己的 App、小程序、云平台、知识库、题库系统或设备控制协议,快速完成从技术原型到量产产品的落地。
四博提供的不只是 AI 音箱硬件,而是一套包含硬件平台、语音前端、联网通信、屏幕交互、AI 协议、MCP 扩展和客户二次开发接口的完整 AI 智能音箱方案。