目录
仅需50元成本,ESP32开发板就能变身智能语音助手,GitHub星标超20k的xiaozhi-ESP32项目正掀起AI硬件DIY热潮。
如今,人工智能与物联网技术的结合让智能设备日益普及。今天介绍的Xiaozhi-ESP32是一个基于ESP32开发板的开源AI聊天机器人项目,它让你能够用低成本硬件打造个人专属的语音智能助手。
项目概述:开源AI语音交互解决方案
Xiaozhi-ESP32是一个基于ESP-IDF开发框架的开源硬件项目 ,旨在利用低成本硬件打造个人专属的AI聊天机器人。它通过WebSocket或UDP协议与LLM、TTS API服务连接,实现实时语音交互功能,无需在设备上运行LLM。
该项目由国内开发者"虾哥"创建,采用MIT开源协议,允许用户自由使用、修改和分发代码,只需包含原作者的版权声明和许可声明即可。这一特性使其特别适合学生、创客和开发者进行AI+IoT项目实践。
核心设计理念是通过模块化、可扩展的架构,在资源受限的嵌入式设备上实现流畅的语音交互。该方案平衡了性能与成本,让更多人能够接触并学习AI技术。

核心功能:全面而实用的特性
Xiaozhi-ESP32集成了多种先进功能,使其在开源智能硬件中表现突出:
-
语音唤醒与交互:支持离线语音唤醒,同时也可通过BOOT键实现点击和长按两种触发方式,提供灵活的交互选择
-
多语言识别 :支持国语、粤语、英语、日语、韩语五种语言的语音识别,借助SenseVoice模型实现高效准确的识别
-
AI对话与合成:集成多种大语言模型(如Qwen、DeepSeek、Doubao),支持大模型TTS(包括火山引擎或CosyVoice),实现自然流畅的语音对话
-
显示功能:支持OLED/LCD显示屏,可实时显示信号强度、对话内容,还支持LCD显示图片表情
-
物联网控制:内置ThingManager类管理物联网设备,可通过语音命令控制智能家居设备
-
声纹识别:能够识别是谁在喊AI的名字,基于3D Speaker模型,提供个性化体验
-
记忆功能:具备短期记忆能力,每轮对话后会进行自我总结,增强交互连续性
-
网络连接:除了常规的Wi-Fi连接,还支持ML307 Cat.1 4G网络,增加使用场景灵活性

系统架构:模块化设计
Xiaozhi-ESP32采用模块化架构,中央应用控制器负责协调各个子系统。该架构使系统能够与不同的硬件配置协同工作,同时保持一致的功能。
核心组件
系统由几个关键组件协同工作:
-
应用程序控制器:管理设备状态并协调所有其他组件,是系统核心
-
电路板抽象层:提供独立于硬件的物理组件访问,使核心应用程序无需了解组件具体实现细节即可与它们交互
-
通信协议:通过WebSocket或MQTT处理客户端-服务器通信
-
显示系统:管理所连接显示器上的视觉反馈
-
音频处理:处理音频输入/输出和处理
状态管理
系统通过明确定义的状态机进行操作,控制设备响应用户交互和系统事件的行为。状态包括启动、激活、升级、空闲、连接、监听、说话和Wi-Fi配置等不同模式。
硬件与部署:灵活的选择方案
硬件需求
Xiaozhi-ESP32兼容多款ESP32开发板,以下是核心硬件要求:
-
主控板:ESP32-S3或ESP32-C3开发板(如ESP32-WROOM或ESP32-S3)
-
音频模块:麦克风模块用于语音输入,扬声器模块用于语音输出
-
显示模块:可选配OLED或LCD显示屏
-
网络模块:支持Wi-Fi或ML307 Cat.1 4G通信

部署方式
项目提供两种运行方式:
-
在线版本:接入xiaozhi.me服务器,个人用户可免费试用,适合普通用户
-
离线版本:在本地个人电脑上搭建服务器,需要一定的技术背景,更适合开发者
代码解析:清晰的结构设计
了解项目代码结构有助于二次开发,项目主要使用C++语言实现。
工程结构
项目仓库包含多个文件和文件夹,主要结构如下:
-
**main/**:主要源码文件夹,包含应用程序核心逻辑
-
**docs/**:文档文件,包含README文档使用的图片资料和服务器websocket交互协议
-
**scripts/**:脚本文件,包含音频编码测试脚本、烧录调试脚本等
-
配置文件:包括分区配置和SDK默认配置
核心类设计
整个工程的类图主要围绕Application、Board、ThingManager三个大类进行实现:
-
Application类:作为整个应用程序的核心管理类,负责协调和控制各个功能模块的运行
-
Board类:是一个抽象基类,定义了硬件设备的接口,为不同的硬件平台提供统一的操作方法
-
ThingManager类:作为物联网设备管理类,负责管理多个Thing对象
入口函数
整个工程的入口函数在xiaozhi-esp32/main/main.cc中,初始化默认事件循环和NVS后,通过Application::GetInstance().Start()直接启动应用。
extern "C" void app_main(void)
{
// 初始化默认事件循环
ESP_ERROR_CHECK(esp_event_loop_create_default());
// 初始化 NVS flash 以存储 WiFi 配置
esp_err_t ret = nvs_flash_init();
// ... 更多初始化代码
}
使用方法:快速上手指南
环境准备
要开始使用Xiaozhi-ESP32,需要先准备开发环境:
-
安装开发环境:推荐使用Arduino IDE或PlatformIO进行代码编写和烧录
-
配置硬件:将麦克风模块、扬声器及其他所需传感器连接到ESP32开发板上
-
获取源码:从GitHub仓库下载项目代码
基础配置
配置设备主要涉及以下步骤:
-
网络配置:设置Wi-Fi或4G网络连接参数
-
服务配置:配置LLM和TTS服务参数
-
设备注册:在管理后台注册设备并获取访问凭证
优势对比:与传统方案的比较
与商业智能助手相比,Xiaozhi-ESP32具有明显优势:
| 特性 | 商业智能助手 | Xiaozhi-ESP32 |
|---|---|---|
| 成本 | 高昂 | 使用低成本ESP32,经济实惠 |
| 数据隐私 | 数据传输至云端,有隐患 | 本地运行,无需云端支持,隐私性更高 |
| 功能定制 | 功能固定,扩展困难 | 完全开源,可自由扩展功能 |
| 技术门槛 | 专业配置 | 入门简单,适合学习与开发 |
应用场景:广泛的适用领域
Xiaozhi-ESP32可应用于多种场景:
-
智能家居控制:通过语音控制灯光、窗帘、空调等家电设备
-
个人语音助手:提供天气查询、日程提醒、语音备忘等功能
-
教育与实践:作为物联网和人工智能开发的优秀学习案例
-
工业物联网:各类传感器设备返回定制化的状态报告
总结:开创性的AIoT开源项目
Xiaozhi-ESP32是一个兼具功能性和学习价值的开源项目,它降低了AI语音交互的开发门槛 ,让更多人能体验并学习AI技术。项目采用模块化架构设计,功能丰富且持续更新,社区活跃。
无论是智能家居控制、个人语音助手开发,还是AI+IoT技术学习,Xiaozhi-ESP32都是一个理想的选择。其开源特性也允许开发者根据自己的需求定制功能,为智能硬件开发提供了更多可能性。
GitHub项目地址: