|
|
|
@ -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
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
设置$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'
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
**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
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
**4、配置文件**
|
|
|
|
|
|
|
|
|
|
**配置项目**
|
|
|
|
|
|
|
|
|
|
- 创建data目录
|
|
|
|
|
- 把源码目录下的config.yaml文件复制一份,重命名为.config.yaml
|
|
|
|
|
|
|
|
|
|
**5、Python端服务启动**
|
|
|
|
|
|
|
|
|
|
```cmd
|
|
|
|
|
# 启动后端服务【端口:8002】
|
|
|
|
|
D:\dsWork\DuoDuoProject\xiaozhi-esp32-server-0.7.1\main\xiaozhi-server\app.py
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
**6、$JAVA$ $OTA$启动**
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
**7、启动前端页面**【不启动也可以~】
|
|
|
|
|
|
|
|
|
|
```cmd
|
|
|
|
|
# 安装Node.js
|
|
|
|
|
|
|
|
|
|
#我的电脑:
|
|
|
|
|
D:\dsWork\DuoDuoProject\xiaozhi-esp32-server-0.7.1\main\manager-web
|
|
|
|
|
|
|
|
|
|
#在地址栏输入 cmd 回车,然后输入:
|
|
|
|
|
npm install
|
|
|
|
|
npm run serve
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
**8、测试页面**
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
file:///D:/dsWork/DuoDuoProject/xiaozhi-esp32-server-0.7.1/main/xiaozhi-server/test/test_page.html
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
```cmd
|
|
|
|
|
http://127.0.0.1:8001/#/home
|
|
|
|
|
huanghai
|
|
|
|
|
DsideaL@123
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 四、Windows搭建 ESP IDF 5.4.1开发环境以及编译小智
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
### 五、修改固件
|
|
|
|
|
|
|
|
|
|
- **固件编译工具**
|
|
|
|
|
|
|
|
|
|
` esp-idf-tools-setup-offline-5.4.1.exe`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **驱动程序**
|
|
|
|
|
|
|
|
|
|
`CH343SER.EXE`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **实验材料**
|
|
|
|
|
处理器型号 $ESP32-S3-N16R8$
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
屏幕 $0.91$英寸,$SSD$ $1306$,分辨率:$128*32$
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **烧录步骤**
|
|
|
|
|
|
|
|
|
|
**步骤1**
|
|
|
|
|
双击桌面上的ESP-IDF 5.4 PowerShell 快捷方式
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
**步骤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
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
配置一下
|
|
|
|
|
|
|
|
|
|
进入$Xiaozhi$ $Assistant$选项
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
$Board$ $Type$:
|
|
|
|
|
|
|
|
|
|
config BOARD_TYPE_BREAD_COMPACT_WIFI
|
|
|
|
|
bool "面包板新版接线(WiFi)"
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
$DISPLAY\_OLED\_TYPE$:
|
|
|
|
|
|
|
|
|
|
$OLED\_SSD1306\_128X32$
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
按ESC退回主界面,再点S进行保存。
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
**编译固件**
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
idf.py build
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
**打包$bin$固件**
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
cd scripts
|
|
|
|
|
python release.py
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
**打包后的产物**
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
D:\dsWork\DuoDuoProject\xiaozhi-esp32\build\merged-binary.bin
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 开始烧录
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
烧录完成后,按下主板上的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/
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
需要注意的是绘制科技的服务器,需要配置一下安全策略的范围:
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
测试页面
|
|
|
|
|
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", {})
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
```
|
|
|
|
|
|