从零开始搭建小智ESP32 AI语音助手:Windows系统上完整部署教程
本文将详细指导您如何从零开始,在Windows系统上完整部署“小智ESP32”项目的后端服务、前端管理界面、AI语音服务,并最终编译烧录设备固件。本项目集成了Web管理、大语言模型、语音识别等多项技术,旨在帮助您构建自己的AI语音助手。
项目简介
小智ESP32是一个开源项目,它包含以下核心组件:
- ESP32设备固件:运行在ESP32开发板上,负责语音采集、播放及与服务器通信。
- Java后端服务 (manager-api) : 提供RESTful API,处理设备管理、用户认证、OTA升级等。
- Web前端管理界面 (manager-web) :Vue.js编写的管理后台,用于系统配置和监控。
- Python AI服务 (xiaozhi-server) :提供语音识别(ASR)、语音合成(TTS)及与大语言模型(如智谱AI)交互的核心AI能力。
在开始前,请确保您的电脑已连接互联网,并准备好一个ESP32开发板(如ESP32-S3)。
第一阶段:基础环境准备 (Windows)
1.1 安装并配置小皮面板 (phpStudy)
小皮面板是一个集成的PHP开发环境,我们将用它来快速搭建数据库等服务。Windows版phpstudy下载 - 小皮面板(phpstudy)
- 下载安装:访问小皮面板官网下载Windows版并安装。
- 安装必要软件:
- 打开小皮面板,进入 软件管理。
- 安装 MySQL 8.0.12 版本。安装完成后,设置数据库用户名和密码为
root/123456。 - 安装 Redis 3.0.504 版本。
- 安装数据库管理工具 phpMyAdmin 4.8.5。
- 创建数据库:
- 在小皮面板主页启动 Apache、MySQL 和 Redis 服务。
- 点击打开 phpMyAdmin。
- 使用用户名
root和密码123456登录。 - 点击 新建,创建一个名为
xiaozhi_esp32_server的数据库。
1.2 安装Java与开发工具
- 安装JDK 21:参考教程 Java官网下载JDK21版本详细教程(下载、安装、环境变量配置)_jdk21下载-ZEEKLOG博客,完成JDK21的下载、安装和环境变量配置。
- 安装Maven:参考教程 Maven的安装和环境变量配置_安装maven并配置环境变量-ZEEKLOG博客,完成Maven的安装和配置。
- 安装VSCode及插件:
- 下载并安装Visual Studio Code (VSCode)。
- 在VSCode的扩展商店中,搜索并安装 Java Extension Pack 插件包。
第二阶段:部署Java后端服务
2.1 获取并配置项目代码
- 重命名项目:将下载下来的ZIP包解压,默认文件夹名可能是
xiaozhi-esp32-server-main,请将其重命名为xiaozhi-esp32-server。 - 用VSCode打开:使用VSCode打开
xiaozhi-esp32-server文件夹。
克隆项目:从GitHub下载项目代码。
# 假设你使用Git,或者直接下载ZIP包 # 项目地址:https://github.com/xinnan-tech/xiaozhi-esp32-server2.2 修改配置文件
- 找到配置文件:
main/manager-api/src/main/resources/application-dev.yml。
修改数据库连接信息,确保与你在小皮面板中的设置一致,特别是密码和数据库名:
spring: datasource: url: jdbc:mysql://localhost:3306/xiaozhi_esp32_server?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 123456 # 你的数据库密码 redis: host: localhost port: 6379 database: 0 password: # 如果Redis有密码请填写,默认无密码2.3 启动后端服务
- 在VSCode中,找到启动文件:
main/manager-api/src/main/java/xiaozhi/AdminApplication.java。 - 点击编辑器内的
F5键或使用“Run”功能启动项目。 - 如果一切正常,控制台会输出启动成功的日志,后端API服务将运行在
http://127.0.0.1:8002。
第三阶段:部署Web前端管理界面
3.1 安装Node.js
从Node.js官网下载并安装LTS版本的Node.js,它会自动包含npm包管理器。
3.2 安装依赖并启动
- 打开命令行终端(CMD或PowerShell)。
- 切换目录到前端项目根目录:
cd xiaozhi-esp32-server\main\manager-web。 - 启动成功后,终端会提示访问地址。打开浏览器,访问
http://127.0.0.1:8001。
启动前端开发服务器:
npm run serve安装项目依赖:
npm install3.3 系统初始化配置
- 注册管理员账号:在登录页面点击“注册”,第一个注册的用户会自动成为超级管理员。
- 配置大语言模型密钥:
- 使用超级管理员账号登录系统。
- 在顶部菜单找到 模型配置,然后在左侧栏点击 大语言模型。
- 找到列表中的第一条数据 智谱AI,点击 修改 按钮。
- 将你从 智谱AI开放平台申请到的API密钥填写到 API密钥 字段中,然后点击保存。
第四阶段:部署Python AI语音服务
4.1 安装Anaconda与Python环境
- 安装Anaconda:从 Anaconda官网下载并安装。
配置Conda清华源并安装基础库:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge conda install libopus -y conda install ffmpeg -y创建并激活虚拟环境:打开Anaconda Prompt(或终端),执行以下命令:
# 清理旧环境(可选) conda remove -n xiaozhi-esp32-server --all -y # 创建新的Python 3.10环境 conda create -n xiaozhi-esp32-server python=3.10 -y # 激活环境 conda activate xiaozhi-esp32-server4.2 安装项目依赖与模型
- 在终端中,切换目录到AI服务项目根目录:
cd xiaozhi-esp32-server\main\xiaozhi-server。 - 确保已激活环境:
conda activate xiaozhi-esp32-server。 - 下载语音识别模型:
- 从 魔塔社区搜索并下载
SenseVoiceSmall模型。 - 在
xiaozhi-esp32-server\main\xiaozhi-server\models\` 目录下,创建文件夹SenseVoiceSmall`。 - 将下载的模型文件放入此文件夹中。
- 从 魔塔社区搜索并下载
配置pip阿里云源并安装依赖:
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ pip install -r requirements.txt4.3 配置项目文件
- 获取Secret:登录Web管理台
http://127.0.0.1:8001,在 参数管理 中找到参数编码为server.secret的记录,复制其 参数值。- 在
xiaozhi-esp32-server\main\xiaozhi-server目录下,新建一个data文件夹。 - 将项目根目录下的
config.yaml文件复制到data文件夹中,并重命名为.config.yaml(注意前面的点)。 - 用文本编辑器打开
.config.yaml,清空原有内容,填入以下配置,并将你的 server.secret值替换为刚才复制的密钥:
- 在
创建配置文件:
manager-api: url: http://127.0.0.1:8002/xiaozhi secret: 你的 server.secret值4.4 运行AI服务
确保终端当前路径在 xiaozhi-server目录下,并已激活conda环境,然后运行:
python app.py服务启动后,将运行在 http://127.0.0.1:8000。
第五阶段:编译并烧录ESP32固件
5.1 搭建ESP-IDF开发环境
- 获取项目代码:克隆固件项目
https://github.com/78/xiaozhi-esp32,并用VSCode打开。 - 安装ESP-IDF:我们使用ESP-IDF v5.3.2。强烈建议参考详细的视频教程 【教程】使用VSCode安装ESP-IDF烧录小智AI固件_哔哩哔哩_bilibili 来完成VSCode插件的安装和ESP-IDF的环境配置。这是最关键且容易出错的一步。
5.2 配置项目参数
- 在VSCode中,打开项目下的
main/Kconfig.projbuild文件(其内容决定了配置菜单)。 - 按下
F1或Ctrl+Shift+P,输入ESP-IDF: SDK Configuration editor打开SDK配置编辑器。 - 参考以下配置进行修改(非常重要!):
- OTA 接口:
http://你电脑的局域网IP:8002/xiaozhi/ota/- 例如:
http://192.168.1.100:8002/xiaozhi/ota/
- 例如:
- Websocket 接口:
ws://你电脑的局域网IP:8000/xiaozhi/v1/- 例如:
ws://192.168.1.100:8000/xiaozhi/v1/
- 例如:
- 选择你的硬件型号(如ESP32-S3-DevKitC-1等)。
- 根据你的硬件,配置正确的音频编解码器芯片型号(如ES8311、ES7210等)、显示屏类型和引脚分配。
- OTA 接口:
5.3 编译与烧录
- 所有参数配置完成后,保存配置。
- 在VSCode底部状态栏,找到ESP-IDF的快捷按钮(通常是一个小火苗图标)。
- 确保你的ESP32开发板通过USB线连接到电脑,并选择正确的串口号。
- 点击“一键三连”按钮(依次执行 编译 -> 烧录 -> 打开串口监视器)。
- 等待烧录完成,在串口监视器中看到设备启动日志,即表示成功。
总结与测试
至此,所有服务均已部署完成!请确保:
- 小皮面板 中的Apache, MySQL, Redis正在运行。
- Java后端 (
AdminApplication) 正在运行 (端口8002)。 - Web前端 (
npm run serve) 正在运行 (端口8001)。 - Python AI服务 (
app.py) 正在运行 (端口8000)。
让你的ESP32设备和你电脑连接到同一个局域网。设备启动后,应能自动连接到你的AI服务器。现在,你就可以通过Web管理台管理设备,并与你的小智AI语音助手进行对话了!
注意:过程中如遇问题,请优先检查各服务的日志输出,并确保所有IP地址、端口号和密钥配置准确无误。祝您搭建顺利!