四博 AI 智能音箱 4G S3 版本工程方案:三模联网、远场唤醒、AI 会话与打断架构设计

news2026/4/30 18:13:14
四博 AI 智能音箱 4G S3 版本工程方案三模联网、远场唤醒、AI 会话与打断架构设计1. 方案概述四博 AI 智能音箱 4G S3 版本是一套面向家庭、厨房、户外、门店、展厅及 B 端定制场景的 AI 语音终端方案。产品基于ESP32-S3 架构支持Wi-Fi、BLE、4G 三模联网搭配 VB6824 语音芯片实现远距离唤醒、离线命令、AEC 回声消除和高噪声环境下的语音打断。四博模组选型资料中ESP32-S3 系列定位于音视频 / AI 市场ESPS3-32、ESPS3-32E 系列兼容官方 ESP32-S3-WROOM 系列模组适合 AI 音箱、AI 相机、多模态终端等产品开发。 四博 AI 硬件资料也明确提到ESP32-C2/C3/S3 VB6824 方案已经成熟应用于 S3 双目、S3 拍学机、地球仪、拍拍灯等产品VB6824 可完成音频编解码、AEC、语音唤醒和唤醒词修改让主控专注通信和 UI。需要注意ESP32-S3 原生支持 Wi-Fi BLE不支持经典蓝牙 A2DP 音频。因此如果产品要实现“手机蓝牙音乐播放”的完整蓝牙音箱能力建议增加外置经典蓝牙音频芯片或 7014 类蓝牙音频方案如果只是用于配网、绑定、控制和小程序通信ESP32-S3 BLE 即可满足。2. 系统目标本方案目标不是做一个简单蓝牙音箱而是做一个具备 AI 能力的三模联网语音终端1. Wi-Fi家庭、办公室、固定场景主联网2. 4G户外、展厅、门店、无 Wi-Fi 场景备用联网3. BLE小程序配网、设备绑定、近场控制4. VB6824远场唤醒、离线命令、AEC、语音打断5. ESP32-S3网络管理、AI 协议、状态机、UI、OTA6. 云端 AIASR、LLM、TTS、知识库、声音克隆、MCP 工具四博资料中AI 智能音响方案已经覆盖 AI 大模型、蓝牙音响、闹钟、声音克隆、声纹识别、APP、小程序和改唤醒词等功能适合品牌 B 端客户或成品电商客户。3. 推荐硬件架构┌──────────────────────────────────────┐│ 四博 AI 智能音箱 4G S3 版 │├──────────────────────────────────────┤│ 主控ESP32-S3 / ESPS3-32 N16R8 ││ 语音VB6824 ││ 联网Wi-Fi BLE 4G Cat.1 ││ 音频MIC Speaker 功放 ││ 显示小屏 / LED 点阵 / RGB 灯效 ││ 存储16MB Flash 8MB PSRAM ││ 电源Type-C / 锂电池 / DC 供电 ││ 扩展TF Card / 蓝牙音频芯片 / 按键 │└──────────────────────────────────────┘推荐配置主控ESPS3-32 N16R8语音VB68244GCat.1 模块UART / USB 接入蓝牙ESP32-S3 BLE 用于配网经典蓝牙音频需外置芯片音频I2S DAC / Codec 功放麦克风单 MIC / 双 MIC / 阵列 MIC 可选屏幕0.96 / 1.28 / 2.0 寸 LCD 可选电源5V Type-C 锂电池四博 AI 开发宝典中AI-C5 类硬件已经包含 Wi-Fi 与 4G 模组接入、喇叭、咪头、电池和 2 寸屏等配置可作为三模联网 AI 终端设计的参考。4. 软件工程目录sibo_ai_speaker_4g_s3/├── main/│ ├── app_main.c│ ├── board_config.h│ ├── app_event.h│ ├── app_event.c│ ├── app_state.c│ ├── app_state.h│ ├── net_policy.c│ ├── net_policy.h│ ├── wifi_port.c│ ├── wifi_port.h│ ├── ble_config.c│ ├── ble_config.h│ ├── modem_4g.c│ ├── modem_4g.h│ ├── vb6824_port.c│ ├── vb6824_port.h│ ├── ai_session.c│ ├── ai_session.h│ ├── audio_route.c│ ├── audio_route.h│ ├── speaker_ui.c│ ├── speaker_ui.h│ ├── ota_service.c│ └── ota_service.h├── components/│ ├── audio_player/│ ├── json_helper/│ ├── lcd_driver/│ └── storage/├── partitions.csv├── sdkconfig.defaults└── CMakeLists.txt5. board_config.h#pragma once#include driver/uart.h#include driver/gpio.h/* Device */#define DEVICE_NAME SIBO_AI_SPEAKER_4G_S3#define DEVICE_ID SIBO_S3_4G_001122334455/* AI Server */#define AI_WS_URL wss://ai.example.com/sibo/speaker/ws/* VB6824 */#define VB6824_UART_NUM UART_NUM_1#define VB6824_UART_TX GPIO_NUM_17#define VB6824_UART_RX GPIO_NUM_18#define VB6824_UART_BAUD 115200/* 4G Module */#define MODEM_UART_NUM UART_NUM_2#define MODEM_UART_TX GPIO_NUM_40#define MODEM_UART_RX GPIO_NUM_41#define MODEM_PWR_GPIO GPIO_NUM_42#define MODEM_UART_BAUD 115200/* I2S Audio */#define I2S_BCLK_GPIO GPIO_NUM_5#define I2S_WS_GPIO GPIO_NUM_6#define I2S_DOUT_GPIO GPIO_NUM_7#define I2S_DIN_GPIO GPIO_NUM_8#define AMP_EN_GPIO GPIO_NUM_9/* Keys */#define KEY_WAKE_GPIO GPIO_NUM_0#define KEY_VOL_UP_GPIO GPIO_NUM_10#define KEY_VOL_DOWN_GPIO GPIO_NUM_11/* Network */#define WIFI_CONNECT_TIMEOUT_MS 10000#define MODEM_CONNECT_TIMEOUT_MS 15000/* OTA */#define OTA_MANIFEST_URL https://cdn.example.com/sibo_speaker/manifest.json6. 事件总线设计AI 音箱是典型异步系统不能把 Wi-Fi、4G、语音、播放、AI 返回全部写进一个大循环。推荐统一走事件总线。#pragma once#include stdint.h#include stddef.htypedef enum {APP_EVT_NONE 0,APP_EVT_WIFI_READY,APP_EVT_WIFI_LOST,APP_EVT_4G_READY,APP_EVT_4G_LOST,APP_EVT_BLE_CONFIG_DONE,APP_EVT_NET_READY,APP_EVT_NET_LOST,APP_EVT_WAKEUP,APP_EVT_BARGE_IN,APP_EVT_CMD_CHAT,APP_EVT_CMD_STOP,APP_EVT_CMD_VOL_UP,APP_EVT_CMD_VOL_DOWN,APP_EVT_CMD_MUSIC,APP_EVT_CMD_ALARM,APP_EVT_AI_CONNECTED,APP_EVT_AI_DISCONNECTED,APP_EVT_AI_RESULT,APP_EVT_AI_TTS_URL,APP_EVT_AUDIO_PLAY_START,APP_EVT_AUDIO_PLAY_DONE,APP_EVT_AUDIO_STOPPED,APP_EVT_OTA_NOTIFY,APP_EVT_OTA_START,APP_EVT_OTA_SUCCESS,APP_EVT_OTA_FAIL,} app_evt_id_t;typedef struct {app_evt_id_t id;void *data;size_t len;} app_evt_t;#include freertos/FreeRTOS.h#include freertos/queue.h#include app_event.hstatic QueueHandle_t s_app_queue;void app_event_init(void){s_app_queue xQueueCreate(32, sizeof(app_evt_t));}void app_event_send(app_evt_id_t id, void *data, size_t len){if (!s_app_queue) {return;}app_evt_t evt {.id id,.data data,.len len,};xQueueSend(s_app_queue, evt, pdMS_TO_TICKS(20));}QueueHandle_t app_event_queue(void){return s_app_queue;}7. 网络策略Wi-Fi 优先4G 兜底BLE 配网三模联网不是简单“都打开”而是要有优先级策略。typedef enum {NET_LINK_NONE 0,NET_LINK_WIFI,NET_LINK_4G,} net_link_t;typedef struct {bool wifi_ready;bool g4_ready;bool ble_configured;net_link_t active_link;} net_policy_t;static net_policy_t s_net;static void net_policy_select(void){net_link_t old s_net.active_link;if (s_net.wifi_ready) {s_net.active_link NET_LINK_WIFI;} else if (s_net.g4_ready) {s_net.active_link NET_LINK_4G;} else {s_net.active_link NET_LINK_NONE;}if (old ! s_net.active_link) {if (s_net.active_link NET_LINK_NONE) {app_event_send(APP_EVT_NET_LOST, NULL, 0);} else {app_event_send(APP_EVT_NET_READY, NULL, 0);}}}void net_policy_on_event(app_evt_id_t evt){switch (evt) {case APP_EVT_WIFI_READY:s_net.wifi_ready true;break;case APP_EVT_WIFI_LOST:s_net.wifi_ready false;modem_4g_connect_async();break;case APP_EVT_4G_READY:s_net.g4_ready true;break;case APP_EVT_4G_LOST:s_net.g4_ready false;break;case APP_EVT_BLE_CONFIG_DONE:s_net.ble_configured true;wifi_port_connect_saved();break;default:break;}net_policy_select();}const char *net_policy_active_name(void){switch (s_net.active_link) {case NET_LINK_WIFI:return wifi;case NET_LINK_4G:return 4g;default:return none;}}8. 4G 模块 AT 初始化4G 模块建议先完成 AT 检测、SIM 卡检测、信号检测和注册状态检测再进入 PPP 或透传联网。#include driver/uart.h#include esp_log.h#include board_config.hstatic const char *TAG MODEM_4G;void modem_4g_init(void){uart_config_t cfg {.baud_rate MODEM_UART_BAUD,.data_bits UART_DATA_8_BITS,.parity UART_PARITY_DISABLE,.stop_bits UART_STOP_BITS_1,.flow_ctrl UART_HW_FLOWCTRL_DISABLE,.source_clk UART_SCLK_DEFAULT,};uart_driver_install(MODEM_UART_NUM, 4096, 4096, 0, NULL, 0);uart_param_config(MODEM_UART_NUM, cfg);uart_set_pin(MODEM_UART_NUM, MODEM_UART_TX, MODEM_UART_RX,UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);ESP_LOGI(TAG, 4G modem uart ready);}static void modem_send_cmd(const char *cmd){uart_write_bytes(MODEM_UART_NUM, cmd, strlen(cmd));uart_write_bytes(MODEM_UART_NUM, \r\n, 2);}void modem_4g_probe(void){modem_send_cmd(AT);vTaskDelay(pdMS_TO_TICKS(300));modem_send_cmd(ATE0);vTaskDelay(pdMS_TO_TICKS(300));modem_send_cmd(ATCPIN?);vTaskDelay(pdMS_TO_TICKS(300));modem_send_cmd(ATCSQ);vTaskDelay(pdMS_TO_TICKS(300));modem_send_cmd(ATCREG?);vTaskDelay(pdMS_TO_TICKS(300));modem_send_cmd(ATCGATT?);vTaskDelay(pdMS_TO_TICKS(300));}void modem_4g_connect_async(void){/** 实际项目建议放到 modem_task 中执行* 1. AT 探测* 2. SIM 卡检测* 3. 信号检测* 4. PDP 激活* 5. PPP 拨号* 6. 获取 IP 后发送 APP_EVT_4G_READY*/modem_4g_probe();}9. VB6824 语音命令接入VB6824 负责远场唤醒、离线命令、AEC 和高噪场景下的识别。四博 AI 开发宝典中也提到VB6824 采用语音识别与降噪算法具备更远距离唤醒、更低误唤醒率、更强抗噪能力和更快响应时间。建议命令码typedef enum {VB_CMD_WAKEUP 0x01,VB_CMD_BARGE_IN 0x02,VB_CMD_CHAT 0x03,VB_CMD_STOP 0x04,VB_CMD_VOL_UP 0x05,VB_CMD_VOL_DOWN 0x06,VB_CMD_MUSIC 0x07,VB_CMD_ALARM 0x08,} vb_cmd_t;VB6824 串口解析#include driver/uart.h#include esp_log.h#include app_event.h#include board_config.hstatic const char *TAG VB6824;void vb6824_port_init(void){uart_config_t cfg {.baud_rate VB6824_UART_BAUD,.data_bits UART_DATA_8_BITS,.parity UART_PARITY_DISABLE,.stop_bits UART_STOP_BITS_1,.flow_ctrl UART_HW_FLOWCTRL_DISABLE,.source_clk UART_SCLK_DEFAULT,};uart_driver_install(VB6824_UART_NUM, 1024, 0, 0, NULL, 0);uart_param_config(VB6824_UART_NUM, cfg);uart_set_pin(VB6824_UART_NUM, VB6824_UART_TX, VB6824_UART_RX,UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);ESP_LOGI(TAG, VB6824 uart ready);}static uint8_t checksum(uint8_t *buf, int len){uint8_t sum 0;for (int i 0; i len; i) {sum buf[i];}return sum;}static void vb6824_dispatch(uint8_t cmd){switch (cmd) {case VB_CMD_WAKEUP:app_event_send(APP_EVT_WAKEUP, NULL, 0);break;case VB_CMD_BARGE_IN:app_event_send(APP_EVT_BARGE_IN, NULL, 0);break;case VB_CMD_CHAT:app_event_send(APP_EVT_CMD_CHAT, NULL, 0);break;case VB_CMD_STOP:app_event_send(APP_EVT_CMD_STOP, NULL, 0);break;case VB_CMD_VOL_UP:app_event_send(APP_EVT_CMD_VOL_UP, NULL, 0);break;case VB_CMD_VOL_DOWN:app_event_send(APP_EVT_CMD_VOL_DOWN, NULL, 0);break;case VB_CMD_MUSIC:app_event_send(APP_EVT_CMD_MUSIC, NULL, 0);break;case VB_CMD_ALARM:app_event_send(APP_EVT_CMD_ALARM, NULL, 0);break;default:ESP_LOGW(TAG, unknown cmd: 0x%02X, cmd);break;}}void vb6824_task(void *arg){uint8_t buf[64];while (1) {int len uart_read_bytes(VB6824_UART_NUM, buf, sizeof(buf), pdMS_TO_TICKS(100));if (len 5) {continue;}/** Frame:* 0xAA 0x55 LEN CMD CHECKSUM*/if (buf[0] 0xAA buf[1] 0x55) {uint8_t cmd buf[3];uint8_t sum buf[4];if (checksum(buf, 4) sum) {vb6824_dispatch(cmd);} else {ESP_LOGW(TAG, checksum error);}}}}10. 音频状态机解决播放中打断AI 音箱必须支持“正在播报时被打断”。例如音箱正在播放 TTS用户说“小博小博”系统需要立即停止播放进入聆听状态。typedef enum {AUDIO_IDLE 0,AUDIO_LISTENING,AUDIO_UPLOADING,AUDIO_PLAYING_TTS,AUDIO_BT_PLAYING,AUDIO_INTERRUPTED,} audio_state_t;static audio_state_t s_audio_state AUDIO_IDLE;static int s_volume 70;void audio_state_set(audio_state_t state){s_audio_state state;}audio_state_t audio_state_get(void){return s_audio_state;}void audio_volume_up(void){if (s_volume 100) {s_volume 5;}audio_player_set_volume(s_volume);}void audio_volume_down(void){if (s_volume 0) {s_volume - 5;}audio_player_set_volume(s_volume);}void audio_barge_in(void){if (s_audio_state AUDIO_PLAYING_TTS ||s_audio_state AUDIO_BT_PLAYING) {audio_player_stop();audio_state_set(AUDIO_INTERRUPTED);speaker_ui_show_status(已打断请继续说);}}11. AI WebSocket 会话管理AI 音箱建议使用 WebSocket 长连接而不是每次 HTTP 请求。长连接更适合 AI 对话、打断、TTS 播放、设备状态同步和 OTA 通知。#include esp_websocket_client.h#include esp_log.h#include cJSON.h#include board_config.h#include app_event.h#include net_policy.hstatic const char *TAG AI_SESSION;static esp_websocket_client_handle_t s_ws;static void ai_ws_event_handler(void *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:app_event_send(APP_EVT_AI_CONNECTED, NULL, 0);break;case WEBSOCKET_EVENT_DISCONNECTED:app_event_send(APP_EVT_AI_DISCONNECTED, NULL, 0);break;case WEBSOCKET_EVENT_DATA:if (data-op_code 0x1) {char *msg calloc(1, data-data_len 1);if (msg) {memcpy(msg, data-data_ptr, data-data_len);app_event_send(APP_EVT_AI_RESULT, msg, data-data_len);}}break;default:break;}}void ai_session_start(void){esp_websocket_client_config_t cfg {.uri AI_WS_URL,.reconnect_timeout_ms 3000,.network_timeout_ms 10000,};s_ws esp_websocket_client_init(cfg);esp_websocket_register_events(s_ws, WEBSOCKET_EVENT_ANY, ai_ws_event_handler, NULL);esp_websocket_client_start(s_ws);}static bool ai_session_ready(void){return s_ws esp_websocket_client_is_connected(s_ws);}void ai_session_send_json(cJSON *root){if (!ai_session_ready()) {return;}char *json cJSON_PrintUnformatted(root);if (!json) {return;}esp_websocket_client_send_text(s_ws, json, strlen(json), portMAX_DELAY);cJSON_free(json);}设备上线 hellovoid ai_session_send_hello(void){cJSON *root cJSON_CreateObject();cJSON_AddStringToObject(root, type, hello);cJSON_AddStringToObject(root, device_id, DEVICE_ID);cJSON_AddStringToObject(root, product, DEVICE_NAME);cJSON_AddStringToObject(root, net, net_policy_active_name());cJSON *cap cJSON_CreateObject();cJSON_AddBoolToObject(cap, wifi, true);cJSON_AddBoolToObject(cap, ble, true);cJSON_AddBoolToObject(cap, g4, true);cJSON_AddBoolToObject(cap, barge_in, true);cJSON_AddBoolToObject(cap, far_field, true);cJSON_AddStringToObject(cap, wake_word, 小博小博);cJSON_AddItemToObject(root, capability, cap);ai_session_send_json(root);cJSON_Delete(root);}12. AI 对话协议设备发送{type: chat,device_id: SIBO_S3_4G_001122334455,session_id: session_0001,text: 帮我播放一首轻音乐,scene: ai_speaker,tts: true}云端返回{type: ai_result,text: 好的正在为你播放轻音乐。,tts_url: https://cdn.example.com/tts/001.mp3,action: {name: play_music,params: {keyword: 轻音乐}}}解析 AI 返回#include cJSON.h#include audio_route.h#include speaker_ui.h#include app_event.hvoid ai_session_parse_result(const char *json){cJSON *root cJSON_Parse(json);if (!root) {return;}cJSON *type cJSON_GetObjectItem(root, type);if (cJSON_IsString(type) strcmp(type-valuestring, ai_result) 0) {cJSON *text cJSON_GetObjectItem(root, text);cJSON *tts cJSON_GetObjectItem(root, tts_url);cJSON *action cJSON_GetObjectItem(root, action);if (cJSON_IsString(text)) {speaker_ui_show_text(text-valuestring);}if (cJSON_IsString(tts)) {audio_route_play_tts(tts-valuestring);}if (cJSON_IsObject(action)) {ai_session_handle_action(action);}}if (cJSON_IsString(type) strcmp(type-valuestring, ota_notify) 0) {cJSON *url cJSON_GetObjectItem(root, firmware_url);if (cJSON_IsString(url)) {char *copy strdup(url-valuestring);app_event_send(APP_EVT_OTA_NOTIFY, copy, strlen(copy));}}cJSON_Delete(root);}13. 音频路由AI TTS / 本地提示音 / 蓝牙音频typedef enum {AUDIO_ROUTE_LOCAL 0,AUDIO_ROUTE_AI_TTS,AUDIO_ROUTE_BT_AUDIO,} audio_route_t;static audio_route_t s_route AUDIO_ROUTE_LOCAL;void audio_route_set(audio_route_t route){s_route route;switch (route) {case AUDIO_ROUTE_LOCAL:external_bt_audio_enable(false);amp_enable(true);break;case AUDIO_ROUTE_AI_TTS:external_bt_audio_enable(false);amp_enable(true);break;case AUDIO_ROUTE_BT_AUDIO:external_bt_audio_enable(true);amp_enable(true);break;default:break;}}void audio_route_play_tts(const char *url){audio_route_set(AUDIO_ROUTE_AI_TTS);audio_state_set(AUDIO_PLAYING_TTS);audio_player_play_url(url);}void audio_route_play_prompt(const char *path){audio_route_set(AUDIO_ROUTE_LOCAL);audio_player_play_local(path);}void audio_route_bt_mode_enable(bool enable){if (enable) {audio_route_set(AUDIO_ROUTE_BT_AUDIO);speaker_ui_show_status(蓝牙音箱模式);} else {audio_route_set(AUDIO_ROUTE_LOCAL);speaker_ui_show_status(AI 音箱模式);}}14. 应用事件分发static void app_handle_event(app_evt_t *evt){switch (evt-id) {case APP_EVT_NET_READY:speaker_ui_show_status(网络已连接);ai_session_start();break;case APP_EVT_AI_CONNECTED:speaker_ui_show_status(AI 服务在线);ai_session_send_hello();break;case APP_EVT_WAKEUP:audio_barge_in();audio_state_set(AUDIO_LISTENING);audio_route_play_prompt(/spiffs/wakeup.mp3);speaker_ui_show_status(我在请说);break;case APP_EVT_BARGE_IN:audio_barge_in();break;case APP_EVT_CMD_CHAT:speaker_ui_show_status(正在思考...);ai_session_send_chat(用户发起语音对话);break;case APP_EVT_CMD_STOP:audio_player_stop();audio_state_set(AUDIO_IDLE);speaker_ui_show_status(已停止);break;case APP_EVT_CMD_VOL_UP:audio_volume_up();break;case APP_EVT_CMD_VOL_DOWN:audio_volume_down();break;case APP_EVT_AI_RESULT:ai_session_parse_result((const char *)evt-data);free(evt-data);break;case APP_EVT_OTA_NOTIFY:ota_service_start((const char *)evt-data);free(evt-data);break;default:net_policy_on_event(evt-id);break;}}void app_dispatch_task(void *arg){QueueHandle_t q app_event_queue();app_evt_t evt;while (1) {if (xQueueReceive(q, evt, portMAX_DELAY) pdTRUE) {app_handle_event(evt);}}}15. app_main.c#include nvs_flash.h#include esp_log.h#include app_event.h#include wifi_port.h#include ble_config.h#include modem_4g.h#include vb6824_port.h#include audio_route.h#include speaker_ui.h#include ota_service.hstatic const char *TAG SIBO_SPEAKER;void app_main(void){ESP_LOGI(TAG, SIBO AI Speaker 4G S3 boot);esp_err_t ret nvs_flash_init();if (ret ESP_ERR_NVS_NO_FREE_PAGES ||ret ESP_ERR_NVS_NEW_VERSION_FOUND) {ESP_ERROR_CHECK(nvs_flash_erase());ESP_ERROR_CHECK(nvs_flash_init());}app_event_init();speaker_ui_init();speaker_ui_show_status(四博 AI 智能音箱启动中...);audio_route_init();wifi_port_init();ble_config_init();modem_4g_init();vb6824_port_init();ota_service_init();xTaskCreate(app_dispatch_task, app_dispatch, 8192, NULL, 8, NULL);xTaskCreate(vb6824_task, vb6824_task, 4096, NULL, 7, NULL);wifi_port_connect_saved();ble_config_start();modem_4g_prepare();speaker_ui_show_status(正在连接 Wi-Fi / 4G...);}16. sdkconfig.defaultsCONFIG_IDF_TARGETesp32s3CONFIG_ESPTOOLPY_FLASHSIZE_16MByCONFIG_SPIRAMyCONFIG_SPIRAM_USE_MALLOCyCONFIG_SPIRAM_SPEED_80MyCONFIG_FREERTOS_HZ1000CONFIG_ESP_MAIN_TASK_STACK_SIZE8192CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM10CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM32CONFIG_ESP_WIFI_TX_BUFFER_TYPE_DYNAMICyCONFIG_LWIP_TCP_SND_BUF_DEFAULT8192CONFIG_LWIP_TCP_WND_DEFAULT8192CONFIG_LWIP_TCP_RECVMBOX_SIZE16CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN16384CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN4096CONFIG_BT_ENABLEDyCONFIG_BT_NIMBLE_ENABLEDyCONFIG_LWIP_PPP_SUPPORTyCONFIG_PPP_SUPPORTy17. 总结四博 AI 智能音箱 4G S3 版本的核心设计是ESP32-S3 做系统主控VB6824 做远场唤醒、离线命令、AEC 和打断Wi-Fi 做固定场景联网4G 做户外和无 Wi-Fi 场景联网BLE 做小程序配网和设备绑定外置蓝牙音频芯片扩展传统蓝牙音箱能力WebSocket 接入云端 AI实现对话、TTS、工具调用和 OTA。这套方案适合 AI 音箱、厨房语音助手、户外便携 AI 音箱、门店讲解终端、展厅接待音箱、智能家居语音入口等场景。与普通蓝牙音箱相比它的重点不是播放而是联网稳定、远场可唤醒、高噪可打断、AI 可扩展、系统可升级。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2569553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…