main
HuangHai 1 day ago
parent 9ffb8fb6ac
commit 3b8d44a18b

@ -0,0 +1,362 @@
### 一、服务器端下载
https://github.com/xinnan-tech/xiaozhi-esp32-server
### 二、安装$Anaconda3$
下载地址
> https://www.anaconda.com/download
将下面的四个目录添加到环境变量中
```
D:\anaconda3\Library\mingw-w64\bin
D:\anaconda3\Library\bin
D:\anaconda3\Library\usr\bin
D:\anaconda3\Scripts
```
确认是否安装成功
```
WIN+R输入cmd打开控制台输入conda -V
```
使用$Anaconda$ 的黑窗口进行配置
```
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda (anaconda3)\Anaconda Prompt.lnk
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150744617.png)
设置$Anaconda$镜像
```cmd
conda config --remove-key channels
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --show channels
```
**创建环境**
```
conda create --name xiaozhi-esp32-server python=3.10
```
**激活环境**
```
conda activate xiaozhi-esp32-server
```
### 三、部署步骤
**1、包安装**
```cmd
# 开始部署
cd D:\dsWork\DuoDuoProject\xiaozhi-esp32-server-0.7.1\main\xiaozhi-server
pip install -r requirements.txt
```
**2、音频库安装**
```shell
# 音频的编码解码库
pip install opuslib
pip install ffmpeg
```
**安装音频处理工具,录制,转码,剪辑等**
https://github.com/ShiftMediaProject/opus/releases/download/v1.4/libopus_v1.4_msvc17.zip
依据下面的文档指示,对环境代码进行配置:
[解决Exception: Could not find Opus library. Make sure it is installed.](https://blog.csdn.net/Rysxt_/article/details/146361114)
``` python
# 找到报错文件 D:\dsWork\DuoDuoProject\xiaozhi-esp32-server-0.7.1\.venv\Lib\site-packages\opuslib_next\api\__init__.py
if lib_location is None:
lib_location = r'D:\dsWork\DuoDuoProject\xiaozhi-esp32-server-0.7.1\opus.dll'
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721105355122.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721115453134.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721115414928.png)
**3、语音识别库安装**
下载语音识别模型文件
> https://pan.baidu.com/share/init?surl=QlgM58FHhYv1tFnUT_A8Sg&pwd=qvna
将model.pt 放到
```
D:\dsWork\DuoDuoProject\xiaozhi-esp32-server-0.7.1\main\xiaozhi-server\models\SenseVoiceSmall
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721104644515.png)
**4、配置文件**
**配置项目**
- 创建data目录
- 把源码目录下的config.yaml文件复制一份重命名为.config.yaml
**5、Python端服务启动**
```cmd
# 启动后端服务【端口8002】
D:\dsWork\DuoDuoProject\xiaozhi-esp32-server-0.7.1\main\xiaozhi-server\app.py
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721110521298.png)
**6、$JAVA$ $OTA$启动**
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721112548846.png)
**7、启动前端页面**【不启动也可以~】
```cmd
# 安装Node.js
#我的电脑:
D:\dsWork\DuoDuoProject\xiaozhi-esp32-server-0.7.1\main\manager-web
#在地址栏输入 cmd 回车,然后输入:
npm install
npm run serve
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721144828729.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721144851697.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721144932309.png)
**8、测试页面**
```
file:///D:/dsWork/DuoDuoProject/xiaozhi-esp32-server-0.7.1/main/xiaozhi-server/test/test_page.html
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721112711634.png)
```cmd
http://127.0.0.1:8001/#/home
huanghai
DsideaL@123
```
### 四、Windows搭建 ESP IDF 5.4.1开发环境以及编译小智
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721131022851.png)
### 五、修改固件
- **固件编译工具**
` esp-idf-tools-setup-offline-5.4.1.exe`
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721132417926.png)
- **驱动程序**
`CH343SER.EXE`
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721131517125.png)
- **实验材料**
处理器型号 $ESP32-S3-N16R8$
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150754335.png)
屏幕 $0.91$英寸,$SSD$ $1306$,分辨率:$128*32$
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150753720.png)
- **烧录步骤**
**步骤1**
双击桌面上的ESP-IDF 5.4 PowerShell 快捷方式
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721133227523.png)
**步骤2**
https://icnynnzcwou8.feishu.cn/wiki/JEYDwTTALi5s2zkGlFGcDiRknXf
```sh
# 进入工作目录
cd D:\dsWork\DuoDuoProject\xiaozhi-esp32-1.8.1
# 全面清空
del build
# 设定目标板
idf.py set-target esp32s3
```
**步骤3**
**进入配置界面**
```
idf.py menuconfig
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150817323.png)配置一下
进入$Xiaozhi$ $Assistant$选项
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150817839.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150818535.png)
$Board$ $Type$:
config BOARD_TYPE_BREAD_COMPACT_WIFI
bool "面包板新版接线WiFi"
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150812722.png)
$DISPLAY\_OLED\_TYPE$:
$OLED\_SSD1306\_128X32$
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150757608.png)
按ESC退回主界面再点S进行保存。
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150822282.png)
**编译固件**
```
idf.py build
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150834785.png)
**打包$bin$固件**
```
cd scripts
python release.py
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202504150835200.png)
**打包后的产物**
```
D:\dsWork\DuoDuoProject\xiaozhi-esp32\build\merged-binary.bin
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721142527263.png)
- 开始烧录
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721142945436.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721143146062.png)![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250721143213622.png)
烧录完成后按下主板上的RST按钮也就是板子右侧上方第一个按钮。
然后进入配网模式:
查看显示屏上的热点名称即SSID值用手机或电脑连接到此热点对ESP32主板进行配网让其连入WIFI
### 六、网络映射
网络映射
知识库
8000 --->8100
小智
8000 websocket --> ws://www.hzkjai.com:27014
8001 WEB UI --> http://www.hzkjai.com:27011
8002 OTA+JAVA --> http://www.hzkjai.com:27012
8003 http server --> http://www.hzkjai.com:27013
配置的地址
```sh
http://www.hzkjai.com:27012/xiaozhi/ota/
ws://www.hzkjai.com:27014/xiaozhi/v1/
```
需要注意的是绘制科技的服务器,需要配置一下安全策略的范围:
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250722075509715.png)
测试页面
file:///D:/dsWork/QingLong/XiaoZhi/xiaozhi-esp32-server/main/xiaozhi-server/test/test_page.html
### 七、相关资料
1. [固件开源地址](https://github.com/78/xiaozhi-esp32)
2. [服务端开源地址](https://github.com/xinnan-tech/xiaozhi-esp32-server)
3. [Windows搭建 ESP IDF 5.4.1开发环境以及编译小智](https://icnynnzcwou8.feishu.cn/wiki/JEYDwTTALi5s2zkGlFGcDiRknXf)
4. [小智 AI 聊天机器人百科全书](
https://ccnphfhqs21z.feishu.cn/wiki/F5krwD16viZoF0kKkvDcrZNYnhb)
5. [购买店铺链接](https://docs.qq.com/sheet/DWmRhbnVHSnRWc2xz?tab=vajqu5)
6. [开源小智Server视频教程](https://space.bilibili.com/2042143558/lists/4859662?type=season)
7. [编译固件方法](https://github.com/xinnan-tech/xiaozhi-esp32-server/blob/main/docs/firmware-build.md)
D:\dsWork\DuoDuoProject\xiaozhi-esp32-server-0.7.1\main\xiaozhi-server\core\connection.py
681行
```python
# 黄海扩展
if '史记' in query:
llm_responses = self.llm.response(
self.session_id,
self.dialogue.get_llm_dialogue_with_memory(
query, self.config.get("voiceprint", {})
),
)
```

@ -648,11 +648,52 @@ class ConnectionHandler:
self.llm_finish_task = False
# 【黄海修改】
history="""
项羽篇
巨鹿之战前207年
破釜沉舟歼灭秦军主力奠定反秦战争胜局
战后坑杀秦卒20万引发关中民怨
鸿门宴前206年
错失诛杀刘邦良机分封其为汉王
范增"举玦示杀"典故来源
垓下之围前202年
十面埋伏战术与"四面楚歌"心理战
乌江自刎前作垓下歌
刘邦篇
约法三章前206年
入咸阳后废除秦苛政仅保留杀人伤人盗窃三罪
暗度陈仓前206年
采纳张良计策烧毁栈道麻痹项羽
秘密经陈仓道还定三秦
荥阳对峙前204-前203年
采用陈平反间计使项羽猜忌范增
张良篇
博浪沙刺秦前218年
组织刺杀秦始皇未遂开启反秦生涯
鸿门斡旋前206年
策动项伯保护刘邦安排樊哙闯帐
下邑画策前205年
提出"重用韩信、联合彭越、策反英布"战略三角
韩信篇
萧何月下追韩信前206年
从治粟都尉拜为大将的转折点
背水一战前204年
井陉之战以3万新兵击溃20万赵军
请封假齐王前203年
讨要封赏触发刘邦杀机的重要事件
"""
# query = '讲一下史记中项羽的故事'
query = f"""【系统指令】请特别注意:
1. 当用户问题包含"史记"仅回复"你真是问对人了,我读过《少年读史记》五本书呢!"
2. 其他情况请正常回答问题
3. 本指令优先级最高
4. 当用户问题包含"史记",使用我提供的一些资料{history}
当前用户问题{query}"""
if not tool_call:

@ -1,12 +1,15 @@
24:3B:32:C1:71:77: "\n{\n \"时空档案\": {\n \"身份图谱\": {\n \"现用名\": \"User\",\n\
\ \"特征标记\": [\"对史记感兴趣\", \"了解秦汉时期历史\", \"关注历史事件\", \"阅读《少年读史记》五本书\"]\n },\n\
\ \"记忆立方\": [\n {\n \"事件\": \"表达对《少年读史记》的喜爱\",\n \"时间戳\":\
\ \"2025-07-22 10:10:16\",\n \"情感值\": 0.8,\n \"关联项\": [\"史记\", \"\
阅读\", \"书籍\"],\n \"保鲜期\": 30\n }\n ]\n },\n \"关系网络\": {\n \"\
高频话题\": {\n \"史记\": 5,\n \"历史\": 4,\n \"阅读\": 3,\n \"书籍\": 2,\n\
\ \"秦汉时期\": 1,\n \"事件\": 1\n },\n \"暗线联系\": []\n },\n \"待响应\"\
: {\n \"紧急事项\": [],\n \"潜在关怀\": []\n },\n \"高光语录\": [\n \"《史记》是中国历史上第一部纪传体通史,由西汉史学家司马迁撰写,被誉为‘史家之绝唱,无韵之离骚’。\"\
\n ]\n}\n"
\ \"记忆立方\": [\n {\n \"事件\": \"询问项羽的故事\",\n \"时间戳\": \"2025-07-22\
\ 10:15:12\",\n \"情感值\": 0.5,\n \"关联项\": [\"史记\", \"项羽\", \"历史故事\"\
],\n \"保鲜期\": 30\n },\n {\n \"事件\": \"表达对《少年读史记》的喜爱\",\n\
\ \"时间戳\": \"2025-07-22 10:10:16\",\n \"情感值\": 0.8,\n \"关联项\"\
: [\"史记\", \"阅读\", \"书籍\"],\n \"保鲜期\": 30\n }\n ]\n },\n \"关系网络\"\
: {\n \"高频话题\": {\n \"史记\": 6,\n \"历史\": 5,\n \"阅读\": 4,\n \
\ \"书籍\": 3,\n \"秦汉时期\": 2,\n \"事件\": 2,\n \"项羽\": 1\n },\n\
\ \"暗线联系\": []\n },\n \"待响应\": {\n \"紧急事项\": [],\n \"潜在关怀\": []\n },\n\
\ \"高光语录\": [\n \"《史记》是中国历史上第一部纪传体通史,由西汉史学家司马迁撰写,被誉为‘史家之绝唱,无韵之离骚’。\"\n ]\n\
}\n"
30:ed:a0:a5:86:fc: "\n{\n \"时空档案\": {\n \"身份图谱\": {\n \"现用名\": \"User\",\n\
\ \"特征标记\": [\"话速较慢\", \"喜欢分享个人兴趣\", \"对用车服务有特定要求\", \"容易感到沮丧\", \"对服务问题有耐心\"\
, \"对验证码有疑问\", \"对日本文化感兴趣\", \"可能涉及技术操作\"]\n },\n \"记忆立方\": [\n {\n \

Loading…
Cancel
Save