开源AI语音机器人小智Xiaozhi-ESP32:低成本构建个人智能助理

开源AI语音机器人小智Xiaozhi-ESP32:低成本构建个人智能助理

目录

项目概述:开源AI语音交互解决方案

核心功能:全面而实用的特性

系统架构:模块化设计

核心组件

状态管理

硬件与部署:灵活的选择方案

硬件需求

部署方式

代码解析:清晰的结构设计

工程结构

核心类设计

入口函数

使用方法:快速上手指南

环境准备

基础配置

优势对比:与传统方案的比较

应用场景:广泛的适用领域

总结:开创性的AIoT开源项目


仅需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技术。

Image

核心功能:全面而实用的特性

Xiaozhi-ESP32集成了多种先进功能,使其在开源智能硬件中表现突出:

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

Image

系统架构:模块化设计

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,需要先准备开发环境:

  1. 安装开发环境:推荐使用Arduino IDE或PlatformIO进行代码编写和烧录
  2. 配置硬件:将麦克风模块、扬声器及其他所需传感器连接到ESP32开发板上
  3. 获取源码:从GitHub仓库下载项目代码

基础配置

配置设备主要涉及以下步骤:

  1. 网络配置:设置Wi-Fi或4G网络连接参数
  2. 服务配置:配置LLM和TTS服务参数
  3. 设备注册:在管理后台注册设备并获取访问凭证

优势对比:与传统方案的比较

与商业智能助手相比,Xiaozhi-ESP32具有明显优势:

特性商业智能助手Xiaozhi-ESP32
成本

高昂

使用低成本ESP32,经济实惠

数据隐私

数据传输至云端,有隐患

本地运行,无需云端支持,隐私性更高

功能定制

功能固定,扩展困难

完全开源,可自由扩展功能

技术门槛

专业配置

入门简单,适合学习与开发

应用场景:广泛的适用领域

Xiaozhi-ESP32可应用于多种场景:

  • 智能家居控制:通过语音控制灯光、窗帘、空调等家电设备
  • 个人语音助手:提供天气查询、日程提醒、语音备忘等功能
  • 教育与实践:作为物联网和人工智能开发的优秀学习案例
  • 工业物联网:各类传感器设备返回定制化的状态报告

总结:开创性的AIoT开源项目

Xiaozhi-ESP32是一个兼具功能性和学习价值的开源项目,它降低了AI语音交互的开发门槛,让更多人能体验并学习AI技术。项目采用模块化架构设计,功能丰富且持续更新,社区活跃。

无论是智能家居控制、个人语音助手开发,还是AI+IoT技术学习,Xiaozhi-ESP32都是一个理想的选择。其开源特性也允许开发者根据自己的需求定制功能,为智能硬件开发提供了更多可能性。


GitHub项目地址:

 https://github.com/78/xiaozhi-esp32

Read more

前端防范 XSS(跨站脚本攻击)

目录 一、防范措施 1.layui util  核心转义的特殊字符 示例 2.js-xss.js库 安装 1. Node.js 环境(npm/yarn) 2. 浏览器环境 核心 API 基础使用 1. 基础过滤(默认规则) 2. 自定义过滤规则 (1)允许特定标签 (2)允许特定属性 (3)自定义标签处理 (4)自定义属性处理 (5)转义特定字符 常见场景示例 1. 过滤用户输入的评论内容 2. 允许特定富文本标签(如富文本编辑器内容) 注意事项 更多配置 XSS(跨站脚本攻击)是一种常见的网络攻击手段,它允许攻击者将恶意脚本注入到其他用户的浏览器中。

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

目录 1. 打开浏览器开发者工具 2. 使用 Network 面板 3. 查看具体的API请求 a. Headers b. Payload c. Response d. Preview e. Timing 4. 实际操作步骤 5. 常见问题及解决方法 a. 无法看到API请求 b. 请求失败 c. 跨域问题(CORS) 作为一名后端工程师,理解前端如何调用接口、传递参数以及接收返回值是非常重要的。下面将详细介绍如何通过浏览器开发者工具(F12)查看和分析这些信息,并附带图片案例帮助你更好地理解。 1. 打开浏览器开发者工具 按下 F12 或右键点击页面选择“检查”可以打开浏览器的开发者工具。常用的浏览器如Chrome、Firefox等都内置了开发者工具。下面是我选择我的一篇文章,打开开发者工具进行演示。 2. 使用

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例)

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例) 前端开发中最令人头疼的莫过于那些难以定位的UI问题——元素错位、样式冲突、响应式失效...传统调试方式往往需要反复修改代码、刷新页面、检查元素。现在,通过Cursor编辑器集成的Codex功能,你可以直接用截图交互快速定位和修复这些问题。本文将带你从零开始,掌握这套革命性的调试工作流。 1. 环境准备与基础配置 在开始之前,确保你已经具备以下环境: * Cursor编辑器最新版(v2.5+) * Node.js 18.x及以上版本 * React 18项目(本文以Chakra UI 2.x为例) 首先在Cursor中安装Codex插件: 1. 点击左侧扩展图标 2. 搜索"Codex"并安装 3. 登录你的OpenAI账户(需要ChatGPT Plus订阅) 关键配置项: // 在项目根目录创建.