AI prompts
base on 小智ESP32的Java企业级管理平台,提供设备监控、音色定制、角色切换和对话记录管理的前后端及服务端一体化解决方案 <h1 align="center">Xiaozhi ESP32 Server Java</h1>
<p align="center">
基于 <a href="https://github.com/78/xiaozhi-esp32">Xiaozhi ESP32</a> 项目开发的 Java 版本服务端,包含完整前后端管理平台<br/>
为智能硬件设备提供强大的后端支持和直观的管理界面
</p>
<p align="center">
<a href="https://github.com/joey-zhou/xiaozhi-esp32-server-java/issues">反馈问题</a>
· <a href="#deployment">部署文档</a>
· <a href="https://github.com/joey-zhou/xiaozhi-esp32-server-java/blob/main/CHANGELOG.md">更新日志</a>
</p>
<p align="center">
<a href="https://github.com/joey-zhou/xiaozhi-esp32-server-java/graphs/contributors">
<img alt="GitHub Contributors" src="https://img.shields.io/github/contributors/joey-zhou/xiaozhi-esp32-server-java?logo=github" />
</a>
<a href="https://github.com/joey-zhou/xiaozhi-esp32-server-java/issues">
<img alt="Issues" src="https://img.shields.io/github/issues/joey-zhou/xiaozhi-esp32-server-java?color=0088ff" />
</a>
<a href="https://github.com/joey-zhou/xiaozhi-esp32-server-java/pulls">
<img alt="GitHub pull requests" src="https://img.shields.io/github/issues-pr/joey-zhou/xiaozhi-esp32-server-java?color=0088ff" />
</a>
<a href="https://github.com/joey-zhou/xiaozhi-esp32-server-java/blob/main/LICENSE">
<img alt="License" src="https://img.shields.io/badge/license-MIT-white?labelColor=black" />
</a>
<a href="https://github.com/joey-zhou/xiaozhi-esp32-server-java">
<img alt="stars" src="https://img.shields.io/github/stars/joey-zhou/xiaozhi-esp32-server-java?color=ffcb47&labelColor=black" />
</a>
</p>
<p align="center">
<b>如果这个项目对您有帮助,请考虑给它一个 ⭐ Star!</b><br/>
您的支持是我们持续改进的动力!
</p>
---
## 项目简介 📝
Xiaozhi ESP32 Server Java 是基于 [Xiaozhi ESP32](https://github.com/78/xiaozhi-esp32) 项目开发的 Java 版本服务端,包含完整的前后端管理平台。该项目旨在为用户提供一个功能丰富、操作便捷的管理界面,帮助用户更好地管理设备、配置等。
考虑到企业级应用场景的需求,Java 作为一种成熟的企业级开发语言,具备更完善的生态系统支持和更强大的并发处理能力,因此我们选择开发这个 Java 版本的服务端,为项目提供更多可能性和扩展空间。
- **后端框架**:Spring Boot + Spring MVC
- **前端框架**:Vue.js + Ant Design
- **数据存储**:MySQL + Redis
- **全局响应式**:适配各种设备及分辨率
---
## 适用人群 👥
如果您已经购买了 ESP32 相关硬件,且希望通过一个功能完善、界面友好的管理平台来控制和管理您的设备,那么本项目非常适合您。特别适合:
- 需要企业级稳定性的用户
- 个人开发者,希望快速搭建使用的用户
- 希望有完整前端管理界面的用户
- 需要更强大数据管理和分析能力的用户
- 对系统扩展性有较高要求的用户
- 需要支持大量设备并发连接的场景
- 对实时数据处理有高要求的应用场景
---
## 功能模块 ✨(部分内容未开源,有需求请通过下方联系方式沟通)
### 开源版功能 🆓
| 功能模块 | 状态 | 描述 |
|---------|------|------|
| **首句响应** | ✅ | 唤醒词响应时间 >4秒 |
| **平均响应速度** | ✅ | 平均对话响应时间 >3秒 |
| **WebSocket协议** | ✅ | 高性能WebSocket通信,支持设备实时状态更新和控制 |
| **设备管理** | ✅ | 查看已接入的所有设备列表、设备状态实时监控、添加/编辑/删除设备信息 |
| **音色选择** | ✅ | 提供多种音色模板、预览音色效果、为不同设备分配不同音色配置 |
| **用户管理** | ✅ | 支持多用户配置,满足家庭多成员使用需求 |
| **聊天记录** | ✅ | 查看历史聊天记录、按日期/关键词搜索聊天内容、删除消息、清空记忆功能 |
| **智能体** | ✅ | 对接Coze与Dify等智能体平台,实现复杂场景对话能力 |
| **角色切换** | ✅ | 预设角色切换(AI老师、男/女朋友、智能家居助手等)支持语音切换角色 |
| **持久化对话** | ✅ | 支持持久化对话记录,方便查看历史对话内容 |
| **LLM多平台支持** | ✅ | 支持OpenAI、智谱AI、讯飞星火、Ollama等多种大语言模型 |
| **IoT设备控制** | ✅ | 支持通过语音指令管理IoT设备,实现智能家居控制 |
| **多语音识别服务** | ✅ | 支持Funasr、阿里、腾讯、Vosk等多种语音识别服务 |
| **Function Call** | ✅ | 支持LLM函数调用功能,实现复杂任务处理和智能决策 |
| **拍照识图** | ✅ | 支持图像识别和处理,实现更丰富的交互方式 |
| **实时打断** | ✅ | 支持实时打断功能,提高对话流畅度 |
| **记忆管理** | ✅ | 自定义记忆对话条数、历史对话总结/摘要功能、手动操作对话记录 |
### 商业版功能 💼
| 功能模块 | 状态 | 描述 |
|---------|------|------|
| **首句响应** | ✅ | 唤醒词响应时间 <1秒,极速响应体验 |
| **平均响应速度** | ✅ | 平均对话响应时间 <2.5秒,流畅对话体验 |
| **MQTT协议** | ✅ | 支持MQTT通信协议,长连接、服务端主动唤醒 |
| **音色克隆** | ✅ | 支持火山引擎与阿里云音色克隆,实现个性化声音定制 |
| **双向流式交互** | ✅ | 支持火山、阿里、讯飞流式播放,实时语音输入和回复输出 |
| **用户端** | ✅ | 友好的用户端操作界面,原生卡片方式设备管理页面 |
| **MCP接入点** | ✅ | 基于角色的MCP工具接入点,扩展功能接入 |
| **MCP服务** | ✅ | SSE MCP接入方式,支持更多第三方服务集成 |
| **Function Call安抚词** | ✅ | 工具调用前置安抚词,提升用户体验 |
| **长期记忆** | ✅ | 根据用户对话,提取关键信息记录,智能记忆管理 |
| **知识库** | ✅ | RAG检索知识库(后期拓展图知识库),文档上传,智能检索 |
| **记忆总结** | ✅ | 基于知识库长期记忆总结,智能对话分析 |
| **语音提醒与闹钟** | ✅ | 服务端主动唤醒设备下发音频内容,智能提醒功能 |
| **多设备协同** | ✅ | AB设备协同播放,全屋智能协同工作 |
| **监控面板** | ✅ | 监控日、周、月不同维度Token,对话时长,设备活跃等数据 |
| **OTA固件升级** | ✅ | 固件上传,自动升级,远程设备管理 |
| **聊天数据可视化** | ✅ | 聊天频率统计图表等数据可视化功能,监控对话数据趋势 |
### 开发中功能 🚧
| 功能模块 | 状态 | 描述 |
|---------|------|------|
| **混合模式角色** | 🚧 | 支持多角色混合模式,通过不同唤醒词唤醒不同角色(自动切换) |
| **声纹识别** | 🚧 | 支持声纹识别功能,实现个性化语音助手 |
| **多语言支持** | 🚧 | 支持多语言界面,满足不同地区用户需求 |
| **Home Assistant** | 🚧 | 支持智能家居设备控制,通过语音指令管理Home Assistant设备 |
| **情感分析** | 🚧 | 通过语音情感分析,提供更人性化的回复 |
| **自定义插件系统** | 🚧 | 支持自定义插件开发,扩展系统功能 |
| **远程控制** | 🚧 | 支持远程控制设备,实现外出时的设备管理 |
---
## UI 展示 🎨
<div align="center">
<img src="docs/images/device.jpg" alt="设备管理" width="600" style="margin: 10px;" />
<p><strong>设备管理</strong> - 全面管理和监控所有连接设备</p>
</div>
<details>
<summary style="cursor: pointer; font-size: 1.2em; color: #0366d6; text-align: center; display: block; margin: 20px 0; padding: 10px; background-color:rgb(48, 48, 48); border-radius: 5px;">
<strong>👉 点击查看更多界面截图 👈</strong>
</summary>
<div align="center">
<img src="docs/images/login.jpg" alt="登录界面" width="600" style="margin: 10px;" />
<p><strong>登录界面</strong> - 安全访问系统的入口</p>
<img src="docs/images/dashboard.jpg" alt="仪表盘" width="600" style="margin: 10px;" />
<p><strong>仪表盘</strong> - 系统概览和关键数据展示</p>
<img src="docs/images/user.jpg" alt="用户管理" width="600" style="margin: 10px;" />
<p><strong>用户管理</strong> - 管理用户信息和权限</p>
<img src="docs/images/message.jpg" alt="消息记录" width="600" style="margin: 10px;" />
<p><strong>消息记录</strong> - 查看和搜索历史对话内容</p>
<img src="docs/images/model.jpg" alt="模型管理" width="600" style="margin: 10px;" />
<p><strong>模型管理</strong> - 配置和管理AI模型</p>
<img src="docs/images/agent.jpg" alt="智能体管理" width="600" style="margin: 10px;" />
<p><strong>智能体管理</strong> - 设置和切换智能体,Coze/Dify</p>
<img src="docs/images/role.jpg" alt="角色管理" width="600" style="margin: 10px;" />
<p><strong>角色管理</strong> - 设置和切换AI角色</p>
<img src="docs/images/voiceClone.jpg" alt="音色克隆" width="600" style="margin: 10px;" />
<p><strong>音色克隆</strong> - 克隆自己的声音,实现个性化语音助手</p>
</div>
</details>
---
<a id="deployment"></a>
## 部署文档 📚
我们提供了多种部署方式,以满足不同用户的需求:
### 1. 本地源码运行
- [Windows部署文档](./docs/WINDOWS_DEVELOPMENT.md) - 适合Windows环境开发和测试 - 由群友"汇合"提供
- [CentOS部署文档](./docs/CENTOS_DEVELOPMENT.md) - 适合Linux服务器环境部署 - 由群友"汇合"提供
成功运行后,控制台会输出 OTA 和 WebSocket 连接地址,根据固件编译文档使设备接入服务使用。
### 2. Docker部署
- [Docker部署文档](./docs/DOCKER.md) - 快速容器化部署方案 - 由群友"💍Mr_li"提供
### 3. 固件编译
- [固件编译文档](./docs/FIRMWARE-BUILD.md) - 详细的固件编译和烧录过程
烧录成功且联网成功后,通过唤醒词唤醒小智,留意后端控制台输出的信息。
---
## 开发路线图 🗺️
根据我们的[项目开发需求清单](https://github.com/users/joey-zhou/projects/1),未来我们计划实现以下功能:
### 近期计划 (2025 Q2)
- 完善Function Call功能,支持更多复杂任务处理
- 实现多角色混合模式,支持不同唤醒词唤醒不同角色
- 优化记忆管理系统,提供更灵活的历史对话管理
- 实现聊天数据可视化功能,提供数据分析能力
### 中期计划 (2025 Q3-Q4)
- 实现声纹识别功能,支持个性化语音助手
- 完善Home Assistant集成,提供更全面的智能家居控制能力
- 开发多模态交互功能,支持图像识别和处理
- 实现自定义插件系统,支持功能扩展
### 长期计划 (2026+)
- 开发多设备协同工作机制,实现全屋覆盖的语音助手系统
- 实现情感分析功能,提供更人性化的交互体验
- 开发知识库集成功能,增强问答能力
- 实现多用户支持,满足家庭多成员使用需求
我们将根据社区反馈和技术发展不断调整开发计划,确保项目持续满足用户需求。
---
## 贡献指南 👐
欢迎任何形式的贡献!如果您有好的想法或发现问题,请通过以下方式联系我们:
### 微信
微信群超200人无法扫码进群,可以加我微信备注 **小智** 我拉你进微信群
<img src="./web/static/img/wechat.jpg" alt="微信" width="200" />
### QQ
欢迎加入我们的QQ群一起交流讨论,QQ群号:790820705
<img src="./web/static/img/qq.jpg" alt="QQ群" width="200" />
### 定制开发
我们接受各种定制化开发项目,如果您有特定需求,欢迎通过微信联系洽谈。
---
## 免责声明 ⚠️
本项目仅提供音乐和绘本播放的技术实现代码,不提供任何媒体内容。用户在使用相关功能时应确保拥有合法的使用权或版权许可,并遵守所在地区的版权法律法规。
项目中可能涉及的示例内容或资源均来自网络或由用户投稿提供,仅用于功能演示和技术测试。如有任何内容侵犯了您的权益,请立即联系我们,我们将在核实后立即采取删除等处理措施。
本项目开发者不对用户使用本项目代码获取或播放的任何内容承担法律责任。使用本项目即表示您同意自行承担使用过程中的全部法律风险和责任。
---
## Star History 📈
<a href="https://www.star-history.com/#joey-zhou/xiaozhi-esp32-server-java&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=joey-zhou/xiaozhi-esp32-server-java&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=joey-zhou/xiaozhi-esp32-server-java&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=joey-zhou/xiaozhi-esp32-server-java&type=Date" />
</picture>
</a>", Assign "at most 3 tags" to the expected json: {"id":"13936","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"