资讯详情

esp-iot-solution 小智 AI 聊天组件(esp_xiaozhi)深度指南:基于 ESP32-S3 的双向流式语音对话与设备控制

📅 2026/9/19 21:11:45 | 华诺云谱 👁 阅读
esp-iot-solution 小智 AI 聊天组件(esp_xiaozhi)深度指南:基于 ESP32-S3 的双向流式语音对话与设备控制
esp-iot-solution 小智 AI 聊天组件esp_xiaozhi深度指南基于 ESP32-S3 的双向流式语音对话与设备控制【免费下载链接】esp-iot-solutionEspressif IoT Library. IoT Device Drivers, Documentations and Solutions.项目地址: https://gitcode.com/GitHub_Trending/es/esp-iot-solution小智Xiaozhi是 esp-iot-solution 仓库中提供的双向流式对话组件位于 components/esp_xiaozhi用于连接 xiaozhi.me 服务在 ESP32-S3 等嵌入式设备上实现基于流式 ASR自动语音识别 LLM大语言模型 TTS文本转语音架构的实时语音/文本交互。通过本文你将掌握该组件的整体架构、五种公开 API对话、设备信息、NVS 操作、相机与视频解释的用法、完整示例的编译烧录流程以及如何借助 MCP模型上下文协议让语音助手直接控制扬声器、LED、舵机、GPIO 等设备。本文以 docs/en/ai/xiaozhi.rst 为核心骨架并结合作品源码与示例深入展开。组件概述面向嵌入式语音助手的轻量流式对话方案小智组件连接xiaozhi.me服务支持与使用 Qwen、DeepSeek 等大语言模型的 AI 代理进行实时语音和文本交互。它采用低延迟、轻量级设计非常适合语音助手、智能语音问答系统等运行在 ESP32 等嵌入式设备上的应用场景。从文档与 components/esp_xiaozhi/README_CN.md 可以看到组件官方支持芯片为ESP32-S3依赖ESP-IDF 5.5。核心功能特性根据文档组件具备以下能力双向流式传输与 AI 代理进行实时语音和文本交互多种通信协议支持 WebSocket 和 MQTTUDP 协议当服务器同时提供两者时可配置优先使用 MQTT音频编解码支持OPUS、G.711 和 PCM 音频格式默认使用 OPUSMCP 集成设备端 MCP 用于设备控制扬声器、LED、舵机、GPIO 等多语言支持中文和英文离线唤醒词提供上报唤醒词的 API如esp_xiaozhi_chat_send_wake_word与 ESP-SR 的集成由应用层实现设备信息自动获取设备信息和 OTA 更新支持。总体架构流式 ASR LLM TTS 流水线文档明确描述了小智的语音交互架构这是一条端到端的五级流式流水线音频输入从麦克风捕获音频ASR实时将语音转换为文本LLM处理文本并生成响应TTS将文本响应转换为语音音频输出通过扬声器播放音频。整个流程为流式处理即在 ASR 识别、LLM 生成、TTS 合成的过程中数据持续流动从而保证低延迟的对话体验。组件在该链路中承担会话管理、传输层WebSocket/MQTTUDP与协议解析并与 MCP模型上下文协议集成把“听懂用户说话”升级为“按用户指令操作设备”。从源码目录 components/esp_xiaozhi/src 可以印证这一分层设计esp_xiaozhi_chat.c会话核心、esp_xiaozhi_mqtt.c/esp_xiaozhi_websocket.c双协议传输、esp_xiaozhi_transport.c传输抽象、esp_xiaozhi_payload.c协议载荷、esp_xiaozhi_mcp.cMCP 集成、esp_xiaozhi_keystore.c密钥存储、esp_xiaozhi_info.c设备信息、esp_xiaozhi_vision.c视觉解释、esp_xiaozhi_board.c开发板信息。快速开始添加组件并初始化会话在工程中引入组件该组件包含在 esp-iot-solution 仓库中使用方式有两种。一是在项目的CMakeLists.txt中声明依赖idf_component_register( ... REQUIRES esp_xiaozhi ... )二是通过 IDF Component Manager在idf_component.yml中配置本地路径覆盖dependencies: espressif/esp_xiaozhi: override_path: ../../components/esp_xiaozhi组件依赖从 components/esp_xiaozhi/README_CN.md 可知组件依赖如下ESP-IDF 5.5mcp-c-sdk模型上下文协议 SDK仓库内对应 components/mcp-c-sdkESP-SR语音识别可选用于离线唤醒词ESP-IDF 组件nvs_flash非易失性存储、mqttMQTT 客户端、esp_http_clientHTTP 客户端、jsonJSON 解析、mbedtlsTLS/SSL、app_updateOTA 更新、spi_flashFlash 操作。基本用法以 components/esp_xiaozhi/README_CN.md 中的最小示例为基础完整生命周期如下#include esp_xiaozhi_chat.h #include esp_xiaozhi_info.h // 从服务器获取设备信息 esp_xiaozhi_chat_info_t info {0}; esp_xiaozhi_chat_get_info(info); // 使用 info 进行配置... esp_xiaozhi_chat_free_info(info); // 初始化聊天配置 esp_xiaozhi_chat_config_t config ESP_XIAOZHI_CHAT_DEFAULT_CONFIG(); config.audio_callback audio_callback; // 接收音频数据的回调 config.event_callback event_callback; // 聊天事件的回调 config.mcp_engine mcp_engine; // 可选用于设备控制的 MCP 引擎 esp_xiaozhi_chat_handle_t chat_handle; esp_xiaozhi_chat_init(config, chat_handle); // 启动聊天会话 esp_xiaozhi_chat_start(chat_handle); // 打开音频通道可选可在检测到唤醒词时调用 esp_xiaozhi_chat_open_audio_channel(chat_handle, NULL, NULL, 0); // 发送音频数据 esp_xiaozhi_chat_send_audio_data(chat_handle, audio_data, data_len); // 发送唤醒词检测如果使用离线唤醒词 esp_xiaozhi_chat_send_wake_word(chat_handle, 你好小智); // 发送开始监听 esp_xiaozhi_chat_send_start_listening(chat_handle, 0); // 停止聊天会话 esp_xiaozhi_chat_stop(chat_handle); esp_xiaozhi_chat_deinit(chat_handle);事件模型会话状态与协议事实的通知机制组件通过两条通道向应用通知状态事件回调event_callback和ESP 事件系统ESP_XIAOZHI_CHAT_EVENTS。设计原则是“组件只报告协议事实状态机、UI 与系统命令执行由应用层决定”这一点在 esp_xiaozhi_chat.h 头文件注释中有明确说明。ESP 事件系统事件位应用可通过esp_event_handler_register注册监听事件位含义ESP_XIAOZHI_CHAT_EVENT_CONNECTED已连接到服务器ESP_XIAOZHI_CHAT_EVENT_DISCONNECTED已断开与服务器的连接ESP_XIAOZHI_CHAT_EVENT_AUDIO_CHANNEL_OPENED音频通道已打开ESP_XIAOZHI_CHAT_EVENT_AUDIO_CHANNEL_CLOSED音频通道已关闭ESP_XIAOZHI_CHAT_EVENT_AUDIO_DATA_INCOMING有音频数据到达ESP_XIAOZHI_CHAT_EVENT_SERVER_GOODBYE服务器发起会话结束goodbye事件回调事件最小协议层event_callback收到的是esp_xiaozhi_chat_event_t枚举事件说明event_data 类型ESP_XIAOZHI_CHAT_EVENT_CHAT_TEXT文本消息STT/TTS 句子esp_xiaozhi_chat_text_data_t *ESP_XIAOZHI_CHAT_EVENT_CHAT_EMOJILLM 情感表情const char *ESP_XIAOZHI_CHAT_EVENT_CHAT_TTS_STATETTS 协议状态esp_xiaozhi_chat_tts_state_t *ESP_XIAOZHI_CHAT_EVENT_CHAT_SYSTEM_CMD系统命令如reboot是否执行由应用决定const char *ESP_XIAOZHI_CHAT_EVENT_CHAT_ERROR传输/协议错误esp_xiaozhi_chat_error_info_t *ESP_XIAOZHI_CHAT_EVENT_CHAT_SPEECH_STARTED/CHAT_SPEECH_STOPPED兼容保留事件新代码建议改用CHAT_TTS_STATE—其中 TTS 状态esp_xiaozhi_chat_tts_state_t包含三种 kindESP_XIAOZHI_CHAT_TTS_STATE_STARTTTS 播放开始ESP_XIAOZHI_CHAT_TTS_STATE_STOPTTS 播放停止ESP_XIAOZHI_CHAT_TTS_STATE_SENTENCE_START某一句 TTS 开始此时text字段有效供字幕/表情等 UI 使用。错误信息结构esp_xiaozhi_chat_error_info_t包含错误码code与来源提示source例如transport、hello_timeout、udp便于快速定位问题发生在传输层还是协议层。一个完整的事件处理示例摘自组件 README#include esp_xiaozhi_chat.h #include esp_event.h // 音频回调 - 当从服务器接收到音频数据时调用 static void audio_callback(uint8_t *data, int len, void *ctx) { // 通过扬声器播放音频数据 audio_feeder_feed_data(data, len); } // 事件回调 - 当聊天事件发生时调用 static void event_callback(esp_xiaozhi_chat_event_t event, void *event_data, void *ctx) { switch (event) { case ESP_XIAOZHI_CHAT_EVENT_CHAT_SPEECH_STARTED: ESP_LOGI(APP, 语音开始); break; case ESP_XIAOZHI_CHAT_EVENT_CHAT_SPEECH_STOPPED: ESP_LOGI(APP, 语音停止); break; case ESP_XIAOZHI_CHAT_EVENT_CHAT_TEXT: ESP_LOGI(APP, 收到文本: %s, (char *)event_data); break; default: break; } } // 连接事件处理器 static void chat_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) { switch (event_id) { case ESP_XIAOZHI_CHAT_EVENT_CONNECTED: ESP_LOGI(APP, 已连接到服务器); break; case ESP_XIAOZHI_CHAT_EVENT_DISCONNECTED: ESP_LOGI(APP, 已断开与服务器的连接); break; case ESP_XIAOZHI_CHAT_EVENT_AUDIO_CHANNEL_OPENED: ESP_LOGI(APP, 音频通道已打开); break; case ESP_XIAOZHI_CHAT_EVENT_AUDIO_CHANNEL_CLOSED: ESP_LOGI(APP, 音频通道已关闭); break; default: break; } } void app_main(void) { // 获取设备信息 esp_xiaozhi_chat_info_t info {0}; esp_xiaozhi_chat_get_info(info); esp_xiaozhi_chat_free_info(info); // 初始化 MCP 引擎可选 esp_mcp_t *mcp NULL; esp_mcp_create(mcp); // 添加用于设备控制的 MCP 工具... // 初始化聊天 esp_xiaozhi_chat_config_t config ESP_XIAOZHI_CHAT_DEFAULT_CONFIG(); config.audio_callback audio_callback; config.event_callback event_callback; config.mcp_engine mcp; esp_xiaozhi_chat_handle_t chat_handle; esp_xiaozhi_chat_init(config, chat_handle); // 注册事件处理器 esp_event_handler_register(ESP_XIAOZHI_CHAT_EVENTS, ESP_EVENT_ANY_ID, chat_event_handler, NULL); // 启动聊天会话 esp_xiaozhi_chat_start(chat_handle); // 您的应用程序逻辑... }音频通道与交互控制 API 详解文档的 API 参考部分指出以下章节由components/esp_xiaozhi/include/下的公开头文件生成。下面结合头文件源码逐一展开。音频参数结构esp_xiaozhi_chat_audio_t该结构在 esp_xiaozhi_chat.h 中定义具有双重用途作为音频数据包或作为打开音频通道时生成 hello 消息的参数。作为数据包使用时设置sample_rate、frame_duration、timestamp、payload、payload_sizeformat/channels被忽略作为open_audio_channel 参数使用时设置formatNULL 表示opus、sample_rate0 表示 16000合法范围 8000–48000、channels0 表示 1合法范围 1–2、frame_duration0 表示 60ms合法范围 10–120ms此时payload/timestamp/payload_size被忽略。也就是说默认 hello 音频参数为 OPUS 格式、16000 Hz 采样率、单声道、60ms 帧长。会话生命周期管理函数作用关键返回码esp_xiaozhi_chat_init()实例化会话当前仅支持同时一个实例ESP_OK/ESP_ERR_NO_MEM/ESP_ERR_INVALID_ARG/ESP_ERR_INVALID_STATE已有活动实例esp_xiaozhi_chat_deinit()反初始化并释放资源ESP_OK/ESP_ERR_INVALID_ARGesp_xiaozhi_chat_start()启动会话拉起 MQTT 或 WebSocket 传输ESP_ERR_NOT_FOUND表示缺少必需传输配置esp_xiaozhi_chat_stop()停止会话运行时含音频通道与 MCP 管理资源但不销毁 MCP 引擎ESP_OK/ESP_ERR_INVALID_ARG音频通道控制esp_xiaozhi_chat_open_audio_channel(chat_hd, audio, message, message_len)打开音频通道。若message为 NULL 则基于audio参数或默认值自动生成 hello 消息若传入自定义message则message_len必须大于 0否则返回ESP_ERR_INVALID_ARGesp_xiaozhi_chat_close_audio_channel(chat_hd)关闭音频通道esp_xiaozhi_chat_send_audio_data(chat_hd, data, data_len)向服务器发送音频数据若传输层未就绪如音频通道未打开返回ESP_ERR_INVALID_STATE。交互控制esp_xiaozhi_chat_send_wake_word(chat_hd, wake_word)上报检测到的唤醒词非空字符串对应文档中提到的离线唤醒词 APIESP-SR 的唤醒检测由应用层实现后调用本函数esp_xiaozhi_chat_send_start_listening(chat_hd, mode)发送开始监听mode取esp_xiaozhi_chat_listening_mode_t枚举见下文esp_xiaozhi_chat_send_stop_listening(chat_hd)发送停止监听esp_xiaozhi_chat_send_abort_speaking(chat_hd, reason)中止当前语音输出reason取esp_xiaozhi_chat_abort_speaking_reason_t枚举。设备状态与监听模式枚举设备状态枚举esp_xiaozhi_chat_device_state_t覆盖完整的运行生命周期供应用维护 UI/状态机UNKNOWN、STARTING、WIFI_CONFIGURING、IDLE、CONNECTING、LISTENING、SPEAKING、UPGRADING、ACTIVATING、AUDIO_TESTING、FATAL_ERROR。监听模式枚举esp_xiaozhi_chat_listening_mode_t包括REALTIME实时、AUTO自动、MANUAL手动、AUTO_STOP、MANUAL_STOP、UNKNOWN。中止语音原因枚举esp_xiaozhi_chat_abort_speaking_reason_t包括WAKE_WORD_DETECTED检测到唤醒词打断、STOP_LISTENING停止监听、UNKNOWN。文本消息结构esp_xiaozhi_chat_text_data_t包含消息角色roleUSER用户 /ASSISTANT助手与文本内容text通过ESP_XIAOZHI_CHAT_EVENT_CHAT_TEXT事件传递给应用可用于对话记录、字幕显示等场景。设备信息 API获取配置、激活与传输参数设备信息接口定义于 esp_xiaozhi_info.h。数据结构esp_xiaozhi_chat_info_t字段含义current_version/firmware_version/firmware_url当前固件版本、新固件版本与下载地址serial_number设备序列号activation_code/activation_challenge/activation_message/activation_timeout_ms设备激活相关数据has_serial_number/has_new_version/has_activation_code/has_activation_challenge对应数据是否存在的标志has_mqtt_config/has_websocket_config服务器是否提供 MQTT / WebSocket 传输配置has_server_time服务器时间是否可用接口函数esp_xiaozhi_chat_get_info(info)向配置的服务端点 POST 开发板信息解析响应填充输出结构当服务器响应包含 MQTT/WebSocket 配置时会自动持久化到 NVS。返回ESP_ERR_INVALID_RESPONSE表示服务器响应畸形或缺少有效 bodyesp_xiaozhi_chat_free_info(info)释放info中动态分配的字符串字段不重置布尔标志。该函数是会话启动的前置步骤esp_xiaozhi_chat_config_t中的has_mqtt_config与has_websocket_config正是来自esp_xiaozhi_chat_get_info的结果组件据此决定启用哪种传输并在两者都可用时优先选择 MQTT。配置结构esp_xiaozhi_chat_config_t逐字段说明初始化配置定义于 esp_xiaozhi_chat.h字段含义audio_type音频输入/输出类型当前支持ESP_XIAOZHI_CHAT_AUDIO_TYPE_OPUSaudio_callback/audio_callback_ctx接收服务器下发音频数据的回调及其上下文event_callback/event_callback_ctx聊天事件回调及其上下文mcp_engine调用方提供的 MCP 引擎实例esp_mcp_t *可选owns_mcp_engine是否由聊天模块接管 MCP 引擎的所有权并在 deinit 时销毁has_mqtt_config服务器提供 MQTT 配置时为 true来自get_infoMQTT 与 WebSocket 均可用时优先 MQTThas_websocket_config服务器提供 WebSocket 配置时为 true来自get_info推荐通过默认初始化宏创建配置再按需覆盖字段#define ESP_XIAOZHI_CHAT_DEFAULT_CONFIG() { \ .audio_type ESP_XIAOZHI_CHAT_AUDIO_TYPE_OPUS, \ .audio_callback NULL, \ .event_callback NULL, \ .audio_callback_ctx NULL, \ .event_callback_ctx NULL, \ .mcp_engine NULL, \ .owns_mcp_engine false, \ .has_mqtt_config false, \ .has_websocket_config false, \ }注意audio_callback中收到的data缓冲区归聊天模块所有仅在回调期间有效实现必须在使用完毕前消费或拷贝数据不得将指针保存起来异步使用。MCP 集成让语音助手控制真实设备文档强调组件与 MCP模型上下文协议集成以实现设备控制能力。在仓库中MCP 能力由 components/mcp-c-sdk 提供小智组件通过 esp_xiaozhi_mcp.c 完成桥接。集成步骤如下摘自组件 README#include esp_mcp_engine.h #include esp_mcp_tool.h #include esp_mcp_property.h // 创建 MCP 引擎 esp_mcp_t *mcp NULL; esp_mcp_create(mcp); // 创建设备控制工具 esp_mcp_tool_t *tool esp_mcp_tool_create( self.audio_speaker.set_volume, 设置音频扬声器音量 (0-100), set_volume_callback ); // 向工具添加属性 esp_mcp_property_t *property esp_mcp_property_create_with_range(volume, 0, 100); esp_mcp_tool_add_property(tool, property); // 将工具添加到 MCP 引擎 esp_mcp_add_tool(mcp, tool); // 将 MCP 引擎传递给聊天配置 config.mcp_engine mcp;示例中注册的 MCP 工具覆盖音量、亮度、主题、RGB/HSV 颜色等设备端能力。LLM 在对话过程中通过协议调用这些工具即可完成“说出指令 → 设备动作”的闭环。相机与视频解释 API为对话增加视觉能力文档的 API 参考中还包含两类视觉解释客户端分别定义于 esp_xiaozhi_camera.h 与 esp_xiaozhi_video.h对应源码为 esp_xiaozhi_camera.c 与 esp_xiaozhi_video.c。两者的接口几乎一致均围绕“把应用捕获的 JPEG 帧上传到解释服务并取回回答”展开函数作用xxx_create(config, handle)创建解释客户端config可为 NULL包含explain_url解释服务 URL与explain_token可选 Bearer Tokenxxx_destroy(handle)销毁客户端xxx_set_explain_url(handle, url, token)动态配置解释端点与可选 Bearer Token传 NULL 清除xxx_explain(handle, frame, question, out_buf, buf_size, out_len)以 multipart 形式将question字段与 JPEG 帧上传到解释服务回答写入out_buf其中camera版本在头文件中明确说明该 API 不初始化也不控制相机应用负责采集帧并传入esp_xiaozhi_camera_explain()解释 URL 未配置时返回ESP_ERR_INVALID_STATE。NVS 操作钩子将密钥存储重定向到自定义后端文档指出 NVS 操作章节提供“可选的钩子用于将 keystore 的 NVS 访问重定向例如在 SRAM 任务中执行 NVS 以避免 PSRAM 栈问题”详见 esp_xiaozhi_nvs_ops.h。该头文件定义了一个与 IDFnvs_*系列接口语义完全对齐的回调结构esp_xiaozhi_nvs_ops_t回调对应 IDF 接口nvs_opennvs_open()含命名空间、读写标志nvs_closenvs_close()nvs_commitnvs_commit()nvs_get_str/nvs_set_strnvs_get_str()/nvs_set_str()nvs_get_i32/nvs_set_i32nvs_get_i32()/nvs_set_i32()nvs_erase_key/nvs_erase_allnvs_erase_key()/nvs_erase_all()通过esp_xiaozhi_nvs_ops_register(ops)注册后keystore 的所有 NVS 访问都会走这些回调传入 NULL 则使用默认的直接nvs_*调用。句柄nvs_ops_handle_t为 32 位无符号整数与 IDFnvs_handle_t等宽。该机制典型用途是将 NVS 操作委托给运行在 SRAM 任务中的 NVS 服务规避 PSRAM 栈问题。完整示例xiaozhi_chat 语音助手应用文档指向的示例为examples/ai/xiaozhi_chatai/xiaozhi_chat一个完整的语音助手应用演示语音交互、通过 MCP 进行设备控制、多语言支持与显示支持。示例功能根据 examples/ai/xiaozhi_chat/README_CN.md示例包含与 xiaozhi.me 双向流式语音对话Qwen/DeepSeek 等传输方式WebSocket 或 MQTTUDP可配置服务器同时支持时优先 MQTT音频OPUS 编解码组件还支持 G.711、PCMMCP设备端工具音量、亮度、主题、RGB/HSV 颜色等可选的离线唤醒词 ESP-SROLED/LCD 显示与表情显示多语言中文、英文设备信息与服务器 OTA。示例源码结构examples/ai/xiaozhi_chat/main中app_main.c负责应用入口esp_xiaozhi_chat_app.c/.h实现聊天应用逻辑esp_xiaozhi_chat_display.c/.h实现显示支持示例还使用esp_board_manager组件管理开发板设备音频、显示等。硬件需求支持 ESP32-S3或其它已支持目标的开发板麦克风与扬声器或带音频编解码的开发板Wi-Fi 网络可选OLED/LCD 显示屏。配置工程idf.py set-target esp32s3 idf.py menuconfig在配置菜单中Wi-Fi配置 Station 模式下的 SSID 与密码Xiaozhi Chat Application选择传输方式Board若使用预定义开发板在main/boards中选择或添加板型。传输方式选项定义于 examples/ai/xiaozhi_chat/main/Kconfigmenu Xiaozhi Chat Application choice XIAOZHI_CHAT_APP_TRANSPORT prompt Preferred transport when both MQTT and WebSocket are supported default XIAOZHI_CHAT_APP_TRANSPORT_AUTO help When the server provides both MQTT and WebSocket, this option selects which to use. If Auto (prefer MQTT) is selected, MQTT is used when both are available. config XIAOZHI_CHAT_APP_TRANSPORT_AUTO bool Auto (prefer MQTT) config XIAOZHI_CHAT_APP_TRANSPORT_MQTT bool MQTT config XIAOZHI_CHAT_APP_TRANSPORT_WEBSOCKET bool WebSocket endchoice endmenu编译与烧录示例使用esp_board_manager管理开发板设备音频、显示等编译前须先完成板级配置生成export IDF_EXTRA_ACTIONS_PATH./managed_components/espressif__esp_board_manager # 板级配置首次编译或更换板型后执行-l 列出可用板型-b 指定板型名称或序号 idf.py gen-bmgr-config -l idf.py gen-bmgr-config -b 板型名称或序号 # 编译、烧录并打开串口监视器将 PORT 替换为实际串口如 /dev/ttyUSB0 或 COM3 idf.py -p PORT build flash monitor退出串口监视器请键入Ctrl-]。设备上电后将连接 Wi-Fi、从服务器获取设备信息并启动聊天会话可通过配置的唤醒词或 UI 开始语音交互。串口日志示例I (xxxx) wifi: connected ... I (xxxx) esp_xiaozhi: Chat session started I (xxxx) esp_xiaozhi_chat_app: MCP tools registered常见问题排查示例 README 给出了以下排查指引编译失败确认已激活 ESP-IDF 环境在 esp-iot-solution 中构建时设置IOT_SOLUTION_PATH使用板级配置时先执行idf.py gen-bmgr-config并按需设置IDF_EXTRA_ACTIONS_PATHWi-Fi 连接失败在menuconfig中检查 SSID/密码无法连接 xiaozhi.me确认网络可访问 HTTPS必要时校准设备时间无声音检查开发板选择、麦克风/扬声器接线及编解码配置。测试与验证组件自带测试应用与 pytest 测试位于 components/esp_xiaozhi/test_apps其中 test_esp_xiaozhi.c 提供单元测试用例pytest_esp_xiaozhi.py 提供自动化集成测试脚本可参考其用例组织方式验证组件 API 的正确性。总结小智组件esp_xiaozhi为嵌入式语音助手提供了一条完整的“云端大模型 端侧设备控制”通路流式 ASR LLM TTS 架构保证对话低延迟WebSocket 与 MQTTUDP 双协议提供传输冗余MCP 集成让语音交互直接驱动真实硬件而相机/视频解释 API 则进一步扩展了多模态对话能力。结合 examples/ai/xiaozhi_chat 完整示例与 components/esp_xiaozhi 公开头文件开发者可以在 ESP32-S3 上快速搭建自己的语音助手、智能问答乃至多模态交互产品。【免费下载链接】esp-iot-solutionEspressif IoT Library. IoT Device Drivers, Documentations and Solutions.项目地址: https://gitcode.com/GitHub_Trending/es/esp-iot-solution创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。