AI语音智能体开发日记(十八)智能体服务器xiaozhi-esp32-server源码部署指南

发布时间:2026/10/11 8:42:51

AI语音智能体开发日记(十八)智能体服务器xiaozhi-esp32-server源码部署指南 相关链接AI语音智能体开发日记一如何为“小智”服务器启用并调试 License 功能-CSDN博客AI语音智能体开发日记二解决 Wi-Fi 配网小程序的兼容性问题-CSDN博客AI语音智能体开发日记三解决小程序配网中的蓝牙命名与MAC地址获取问题-CSDN博客AI语音智能体开发日记四在FreeRTOS中构建线程安全的UART2通信模块-CSDN博客AI语音智能体开发日记五为智能设备注入“灵魂”——详解MCP工具的注册与使用-CSDN博客AI语音智能体开发日记六为智能体注入旋律——七牛云音乐服务的接入与避坑指南-CSDN博客AI语音智能体开发日记七搞定功放控制——详解GX8006平台Mute电平配置-CSDN博客AI语音智能体开发日记八LVGL 8.4.0 移植实战——从零构建嵌入式GUI-CSDN博客AI语音智能体开发日记九LVGL 8.4.0 中文字体配置全攻略-CSDN博客AI语音智能体开发日记十LVGL 图标字体实战——从 FontAwesome 到屏幕显示-CSDN博客AI语音智能体开发日记十一为智能设备“声”临其境——详解音频资源自动化生成流程-CSDN博客AI语音智能体开发日记十二GX8006 固件定制指南——从双唤醒词到 UART 音频传输-CSDN博客AI语音智能体开发日记十三一次由寄存器溢出引发的串口波特率“玄学”问题排查-CSDN博客推荐链接AI语音智能体架构解析一系统架构全景图-CSDN博客AI语音智能体架构解析二大模型AI 的大脑-CSDN博客AI语音智能体架构解析三智控台指挥中心-CSDN博客AI语音智能体架构解析四AI 语音终端执行器官-CSDN博客AI语音智能体架构解析五小程序/APP遥控器-CSDN博客推荐链接AI 应用 图文 解说 (一) -- 百度智能云 实现 语音 聊天-CSDN博客AI 应用 图文 解说 (二) -- 百度智能云 ASR LIM TTS 语音AI助手程序 -CSDN博客xiaozhi-esp32-server全模块源码部署指南适用系统Ubuntu 22.04 LTS硬件建议4 核 CPU、8G 内存项目地址https://github.com/xinnan-tech/xiaozhi-esp32-server一、架构概览xiaozhi-esp32-server 采用三层微服务架构全模块部署需启动以下服务服务技术栈默认端口说明MySQLMySQL 8.03306数据库RedisRedis 7.06379缓存manager-apiJava 21 Spring Boot8002管理后端 APImanager-webNode.js 18 Vue.js8001智控台前端xiaozhi-serverPython 3.10 FastAPI8000 / 8003核心语音服务二、安装基础工具2.1安装Gitsudo apt updatesudo apt install git -y2.2安装Dockersudo apt install docker.io -ysudo systemctl start dockersudo systemctl enable docker验证docker --version2.3安装Docker Composesudo apt install docker-compose -y验证docker-compose --version如果拉取 Docker 镜像很慢可配置镜像加速器。编辑 /etc/docker/daemon.json{registry-mirrors: [https://docker.m.daocloud.io]}然后重启 Dockersudo systemctl restart docker三、安装JDK21manager-api依赖sudo apt install openjdk-21-jdk -y验证java --version确认输出为 openjdk 21。同时安装 Maven构建工具sudo apt install maven -y四、安装Node.js18manager-web依赖curl -fsSL https://deb.nodesource.com/setup_18.x|sudo -E bash -sudo apt install nodejs -y验证node --versionnpm --version五、安装MiniforgePython环境管理wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.shbash Miniforge3-Linux-x86_64.sh安装过程中一路按回车确认最后选择 yes 初始化 conda。重启终端使 conda 生效验证conda --version六、克隆项目源码mkdir -p ~/servercd ~/servergit clone https://github.com/xinnan-tech/xiaozhi-esp32-server.git七、用Docker启动MySQL和Redis7.1启动MySQLdocker run -d \--name xiaozhi-mysql \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD123456 \-e MYSQL_DATABASExiaozhi_esp32_server \mysql:8.07.2启动Redisdocker run -d \--name xiaozhi-redis \-p 6379:6379 \redis:7.07.3验证容器状态docker ps应能看到 xiaozhi-mysql 和 xiaozhi-redis 两个容器处于运行状态。八、部署manager-api管理后端8.1进入目录cd ~/server/xiaozhi-esp32-server/main/manager-api8.2修改数据库配置编辑 src/main/resources/application-dev.yml确认数据库连接信息spring:datasource:username:rootpassword:123456url:jdbc:mysql://127.0.0.1:3306/xiaozhi_esp32_serverredis:host:127.0.0.1port:63798.3编译并启动mvn clean package -DskipTestsjava -jar target/manager-api.jar启动成功后manager-api 默认运行在 8002 端口。使用vscode打开\xiaozhi-esp32-server\main\manager-api\src\main\java\xiaozhi下的AdminApplication.java文件右键run java或运行快捷键。前台打开效果九、部署manager-web智控台前端9.1进入目录cd ~/server/xiaozhi-esp32-server/main/manager-web9.2安装依赖并启动npm installnpm run serve启动成功后智控台默认运行在 http://127.0.0.1:8001。前台效果9.3注册超级管理员用浏览器打开智控台地址注册第一个用户即超级管理员。十、获取server.secret参数登录智控台http://127.0.0.1:8001在顶部菜单找到参数管理找到参数编码为 server.secret 的记录复制其参数值随机生成的密钥每次重新部署会变化修改server.websocket十一、创建Python 3.10虚拟环境conda create -n xiaozhi-esp32-server python3.10 -yconda activate xiaozhi-esp32-server验证python --version确认输出为 Python 3.10.x。必须使用 Python 3.10更高版本会导致 PyTorch 等依赖找不到匹配包。十二、安装Python依赖和系统工具12.1安装ffmpeg和libopusconda install ffmpeg libopus -y验证ffmpeg -version12.2安装Python依赖cd ~/server/xiaozhi-esp32-server/main/xiaozhi-serverpip config set global.index-url https://mirrors.aliyun.com/pypi/simple/pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cpu十三、配置xiaozhi-server13.1创建data目录并复制配置文件cd ~/server/xiaozhi-esp32-server/main/xiaozhi-servermkdir -p datacp config_from_api.yaml data/.config.yaml13.2编辑配置文件nano data/.config.yaml需要修改的关键项secret填入第十步中从智控台复制的 server.secret 值url改为 http://127.0.0.1:8002/xiaozhi指向 manager-api 的地址十四、下载语音识别模型mkdir -p models/SenseVoiceSmall从项目文档中提供的百度网盘链接下载 SenseVoiceSmall 模型文件提取码: qvna将 model.pt 放入 models/SenseVoiceSmall/ 目录下。十五、启动xiaozhi-servercd ~/server/xiaozhi-esp32-server/main/xiaozhi-serverconda activate xiaozhi-esp32-serverpython app.py启动成功后日志会输出OTA接口是 http://你的IP:8003/xiaozhi/ota/Websocket地址是 ws://你的IP:8000/xiaozhi/v1/十六、配置大模型API Key回到智控台http://127.0.0.1:8001进入模型配置→大语言模型填入你从大模型服务商获取的 API Key如智谱AI、DeepSeek、通义千问等保存配置十七、测试验证登录智控台管理界面找到 参数管理找到参数代码为 server.websocket 的配置项将其值改为ws://192.168.3.132:8000/xiaozhi/v1/进入xiaozhi-esp32-server/testpython -m http.server 8006用浏览器打开项目 test 目录下的 test_page.html填入日志中输出的 WebSocket 地址ws://你的IP:8000/xiaozhi/v1/进行测试。十八、各服务端口汇总服务端口说明MySQL3306数据库Redis6379缓存manager-api8002管理后端 APImanager-web8001智控台前端xiaozhi-server WebSocket8000设备通信xiaozhi-server HTTP/OTA8003OTA 和视觉分析十九、常见问题速查问题解决方法Docker 镜像拉取慢配置 registry-mirrors 镜像加速器找不到data/.config.yaml在 xiaozhi-server 下执行 mkdir -p data cp config_from_api.yaml data/.config.yamlNo such file or directory: ffmpeg执行 conda install ffmpeg -yLLM 的 API key 未设置在智控台的模型配置中填入真实 API KeyNo matching distribution found for torch确认使用的是 Python 3.10 环境manager-api 连不上数据库检查 application-dev.yml 中的数据库地址和密码是否正确TTS 任务出错确认已通过 conda 安装了 libopus 和 ffmpeg语音识别出现乱码确认 models/SenseVoiceSmall/model.pt 模型文件已正确放置二十、注意事项所有安装路径严禁包含中文或空格Python 版本必须为 3.10不可使用更高版本每次重新部署后server.secret 会重新生成需重新配置云服务器部署时安全组需开放 8000-8003 端口设备与服务端需在同一局域网下或确保网络可达
延伸阅读

更多相关文章

2026/10/11 8:37:51

连续8年稳定EI的MEMA国际会议:机械电气材料方向投稿全攻略

国内做机械、电气、材料这几个方向的同行,十有八九都有过投国际会议的念头。周期短、检索快、还能借机见见同领域的人,听起来比死磕期刊划算多了。但会议市场这几年鱼龙混杂,选错了会不仅耽误毕业,连单位都不认。MEMA这个会&#…

2026/10/11 8:37:51

Python面向对象编程终极指南:从语法到设计实战

把“面向对象”这四个字真正讲透,是我写这篇指南的初衷。网上讲 Python OOP 的文章多如牛毛,但大多数要么是文档翻译腔,要么只教语法不教为什么。我见过太多人学完了类、继承、多态,一写项目还是拿着一堆函数硬怼;也见…

2026/10/11 15:28:20

Python数据可视化实战:新零售销售数据清洗与pyecharts绘图教案

简介:《Python数据可视化实战》第7章新零售智能销售数据可视化实战配套教案,面向大数据类专业的教师与学生,围绕某公司智能销售设备数据,讲解从理解工程背景、读取清洗与规约数据,到借助pyecharts绘制交互式图形并撰写…

2026/10/11 15:28:20

Linux命令实战指南:从文件操作到系统排查的高效技巧

1. 定位导航与文件操作:先解决90%的日常使用 1.1 pwd、ls、cd的组合:很多人忽略的基础细节 刚接触Linux的时候,我也有过拿着命令列表死记硬背的阶段,但真正让我把命令用熟的,不是背诵,而是反复在真实环境里…

2026/10/11 15:28:20

栈(Stack)数据结构详解:从原理到应用与实战避坑

如果你在一本技术书或者面试题库里看到“Stack栈”这几个字,脑海里冒出来的多半是两件事:LIFO(后进先出),以及一堆入栈出栈的选择题。我不会否认这就是栈的核心,但工作这些年,我越来越觉得&…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑