Xiaozhi
Anaconda
- 下载安装
清华大学开源软件镜像站:anaconda
启动安装程序时,以管理员身份运行,安装的过程中会非常的慢

图1)
图2)- 环境变量
path 环境变量添加以下内容:
- D:\Anaconda
- D:\Anaconda\Scripts
- D:\Anaconda\Library\bin
- D:\Anaconda\Library\mingw-w64\bin
- D:\Anaconda\Library\usr\bin
- D:\Anaconda\pkgs
测试是否配置成功 conda --version
- 相关命令
|
|
xiaozhi-sep32-server(win)
部署
- 安装基础环境

图3)运行之后,如果你能看到命令行窗口前面有一个( base )字样,说明你成功进入了 conda 环境。那么你就可以执行以下命令了。

图4)
|
|
- 安装项目依赖
到 xiaozhi-esp32-server 地址,点击 Download ZIP 按钮下载项目压缩包。
此时它的名字可能叫 xiaozhi-esp32-server-main,你需要把它重命名成 xiaozhi-esp32-server,在这个文件里,进入到 main 文件夹,再进入到 xiaozhi-server,好了请记住这个目录 xiaozhi-server。
|
|
- 下载语音识别模型文件
到项目作者提供的连接处下载,下载后把 model.pt 文件放在 models/SenseVoiceSmall 目录下。
- 配置项目文件
如果你的 xiaozhi-server 目录没有 data,你需要创建 data 目录。 如果你的 data 下面没有 .config.yaml 文件,你可以把源码目录下的 config.yaml 文件复制一份,重命名为 .config.yaml。
- 运行项目
|
|
报错处理
- 错误一
Exception: Could not find Opus library. Make sure it is installed.

图5)1.1 找到报错文件 {python下目录}\lib\site-packages\opuslib_next\api\__init__.py 并打开 __init__.py
我的位置是在:E:\software\anaconda3\envs\xiaozhi-esp32-server\Lib\site-packages\opuslib_next\api\__init__.py

图6)1.2 下载 opus:https://github.com/ShiftMediaProject/opus/releases

图7)1.3 解压找到 x64 文件下的 opus.dll,并复制路径

图8)1.4 添加代码至 步骤1 的红框位置处保存文件
|
|
- 错误二
提示 ffmpeg is not installed 没有安装,重新进行 conda install conda-forge::ffmpeg -y 依然无果
2.1 打开 Dpwnload FFmpeg 官网 https://ffmpeg.org/download.html,选择安装包 Windows builds from gyan.dev

图9)2.2 下滑找到 release bulids 部分,选择 ffmpeg-7.0.2-essentials_build.zip

图10)2.3 下载完成后,解压缩得到 FFmpeg 文件夹。
解压后的文件夹中应包含以下目录:
- bin:
FFmpeg可执行文件所在的文件夹,运行FFmpeg的所有命令都需通过此目录下的文件。 - doc:文档资料。
- presets:预设的格式和编码方案。
进入 bin 目录,可以看到 FFmpeg 的三个核心可执行文件:

图11)2.4 将上述三个 exe 文件复制到 conda xiaozhi-esp32-server 环境下,例:
C:\Users\用户名\.conda\envs\xiaozhi-esp32-server\Library\bin

图12)2.5 重新进入到你的项目目录,执行以下命令
|
|
PyCharm调试
在 Anaconda 配置好虚拟环境后,需要将环境添加进 PyCharm 中。

图13)点击文件夹图标

图14)- 因为是
Conda executable,所以我们要选择Conda.exe不能选择Python解释器,因此我们要选择那个在Anaconda根目录下的_Conda.exe(注意:文件名中有下划线)。如果找不到_conda.exe,可以选择base环境下的conda.exe(即Anaconda根目录下的Conda.exe),在新版本的anaconda中好像已经无法找到_conda.exe了,选择conda.exe即可,然后点击右侧的Load Environments。如果在base环境中找不到conda.exe,进Scripts选择conda.exe即可。 - 根目录下的
_conda.exe或者conda.exe。 - 如果根目录没有,选择
Scripts目录下的conda.exe。
选择完成后,最后点击右侧的 Load Environments

图15)接下来,因为我们已经在 Anaconda 中创建了虚拟环境,因此点击 Use existing environment, 选择已安装的 Anaconda 中的虚拟环境即可,点击右下角的 OK,即可

图16)根据需求选择已经存在的环境即可

图17)返回创建项目页面,点击 Create 即可

图18)成功进入环境

图19)Previously configured interpreter 中无法识别
看看所要添加的虚拟环境中是否
install了python,环境中没有安装python是识别不到的。 也就说仅创建一个虚拟环境,pycharm应该是无法识别到的。
提示:环境变量
Path里添加了Anaconda的Scripts的话就可以用Scripts里面的conda.exe。
补充
项目在 PyCharm 中突然无法启动

图20)但是我在 Anaconda Prompt 中运行是正常的

图21)经过测试,ffmpeg 确实安装了,没有遗漏,我在 app.py 中将 check_ffmpeg_installed() 注释,可以正常启动使用,就是控制台会打印提示信息

图22)构建Docker镜像
将本地项目复制到服务器上,注意是整个项目,而不是只复制一个 xiaozhi-server。
|
|
由于自身需求我在 requirements.txt 中添加了一个新的依赖 psycopg2,因此我需要修改 Dockerfile-server 文件
|
|
|
|
libpq-dev移除编译时PostgreSQL依赖,现在不需要了libpq5移除运行时PostgreSQL依赖
|
|
依赖冲突
在构建镜像的过程中提示依赖冲突

图23)当前操作系统不支持 onnxruntime>=1.17.0 所以需要降低 onnxruntime 版本到 1.16.0,被 magika 所依赖,但是 magika 版本大于 0.5.0 时需要 onnxruntime>=1.17.0,所以需要调整 magika==0.5.0,同时 markitdown 依赖于 magika
最终的解决方法是指定 magika 的版本 magika==0.5.0,markitdown 移除 markitdown 版本的指定
依赖问题
6.970 ERROR: No matching distribution found for sherpa_onnx==1.11.0
原因:sherpa_onnx 原项目删除了 1.20.0 版本。因此找不到 1.20.0 版本
解决方法(任选一种):
- 1、拉取最新项目
- 2、修改
/xiaozhi-esp32-server//main/xiaozhi-server/requirements.txt,第24行,改成sherpa_onnx==1.12.4
缺少依赖
pip download google-api-core[grpc] --dest /xxxxxx/xiaozhi-esp32-server/dependencies/
过滤LLM返回结果中括号及括号中的内容
在调用 TTS 合成前过滤括号及括号中的内容
路径:\xiaozhi-esp32-server\main\xiaozhi-server\core\providers\tts\base.py
|
|
在发送到页面上显示的时候,将残留的一些符号再过滤一下(残留的符号在 TTS 合成时不影响,在页面上显示影响美观)
路径:\xiaozhi-esp32-server\main\xiaozhi-server\core\handle\sendAudioHandle.py
|
|
过滤LLM返回结果中*包括的内容
|
|
使用VSCode编译固件
编译环境
- 安装插件
- C/C++
- CMake
- CMake Tools
- ESP-IDF

图24)- 配置ESP-IDF

图25)
图26)编译
- 选择设备目标

图27)
图28)- 选择烧录方式

图29)- 配置编辑器

图32)- 构建项目

图30)
图31)- 查看设备端口
在 设备管理器 中查看端口
- 选择使用的端口

图33)- 烧录项目

图34)- 监视设备

图35)制作可刷机的固件

图36)编译完的 xiaozhi.bin 只是软件包,其他包都没烧录,要做成一个包用官方工具合并成一个
编译出来一共有 5 个 bin 文件:
- bootloader.bin (bootloader)
- ota_data_initial.bin (ota初始数据)
- partition-table.bin (分区表数据)
- srmodels.bin
- xiaozhi.bin (app,可执行程序)
这些文件在 build 目录下或它的子目录下,在命令行中进入 build 目录之后,可以用一个整合命令把这些 bin 档进行合并
|
|
如果不知道怎么修改命令,把偏移信息和上述命令发给模型,让模型根据偏移信息修改命令
xiaozhi-sep32-server(mac)
brew常用命令
|
|
Nginx
- 安装与路径说明
-
实际安装目录
/opt/homebrew/Cellar/nginx/1.27.5
(包含二进制文件、配置模板等) -
常用操作路径(符号链接)
/opt/homebrew/opt/nginx
推荐使用该路径进行命令操作。 -
核心配置文件
/opt/homebrew/etc/nginx/nginx.conf
修改端口、服务器块、日志等主要编辑此文件。 -
站点配置目录
/opt/homebrew/etc/nginx/servers/
可在此目录下添加多个.conf文件(如myapp.conf、api.conf),Nginx 会自动加载。 -
网站根目录
/opt/homebrew/var/www
默认网页存放路径,访问http://localhost:8080时显示此目录下的index.html。如需更改,可修改nginx.conf或servers/*.conf。 -
日志文件
- 错误日志:
/opt/homebrew/var/log/nginx/error.log - 访问日志:
/opt/homebrew/var/log/nginx/access.log
- 错误日志:
- 常用操作命令
| 功能 | 命令 |
|---|---|
| 启动 Nginx(服务方式) | brew services start nginx |
| 停止 Nginx | brew services stop nginx |
| 重启 Nginx | brew services restart nginx |
| 测试配置文件语法 | /opt/homebrew/opt/nginx/bin/nginx -t |
| 重新加载配置(热重载) | /opt/homebrew/opt/nginx/bin/nginx -s reload |
| 查看 Nginx 版本 | /opt/homebrew/opt/nginx/bin/nginx -v |
默认端口为 8080,无需 sudo 即可运行。
如需前台运行,可用:/opt/homebrew/opt/nginx/bin/nginx -g ‘daemon off;’
MySQL
- 安装
|
|
- 常用路径
-
实际安装目录
/opt/homebrew/Cellar/mysql/<版本号> -
常用操作路径(符号链接)
/opt/homebrew/opt/mysql -
配置文件
/opt/homebrew/etc/my.cnf -
数据目录
/opt/homebrew/var/mysql -
日志文件
/opt/homebrew/var/mysql/*.err
- 常用操作命令
| 功能 | 命令 |
|---|---|
| 启动 MySQL(服务方式) | brew services start mysql |
| 停止 MySQL | brew services stop mysql |
| 重启 MySQL | brew services restart mysql |
| 登录 MySQL | mysql -u root -p |
| 修改 root 密码 | mysqladmin -u root password '新密码' |
| 查看版本 | mysql --version |
- 初次使用
4.1 启动服务:brew services start mysql
4.2 设置 root 密码(首次登录无需密码):
|
|
4.3 登录 MySQL:
|
|
默认端口为 3306,如遇到权限或启动问题,可尝试重启服务或检查日志文件。
安装DBeaver
下载:DBeaver
遇到 Public Key Retrieval is not allowed 的错误提示

图37)安装Redis
- 安装
|
|
- 常用路径
-
实际安装目录
/opt/homebrew/Cellar/redis/<版本号> -
常用操作路径(符号链接)
/opt/homebrew/opt/redis -
配置文件
/opt/homebrew/etc/redis.conf -
数据目录
/opt/homebrew/var/db/redis -
日志文件
/opt/homebrew/var/log/redis.log
- 常用操作命令
| 功能 | 命令 |
|---|---|
| 启动 Redis(服务方式) | brew services start redis |
| 停止 Redis | brew services stop redis |
| 重启 Redis | brew services restart redis |
| 启动 Redis(前台) | redis-server /opt/homebrew/etc/redis.conf |
| 连接 Redis | redis-cli |
| 查看版本 | redis-server --version |
- 初次使用
4.1 启动服务:brew services start redis
4.2 连接 Redis:redis-cli
4.3 测试连接:在 redis-cli 中输入 ping,返回 PONG 表示连接成功。
默认端口为 6379,如遇到启动或连接问题,可检查日志文件或重启服务。
安装Another Redis Desktop Manager
下载:Another Redis Desktop Manager
Java环境
- JDK 21
地址:https://www.oracle.com/java/technologies/downloads/#jdk21-mac

图38)根目录:资源库/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
主要通过 IDEA 使用 Java 所以就不配置环境变量了
- Maven
地址:https://maven.apache.org/download.cgi

图39)- 配置 IDEA

图40)
图41)
图42)Python环境

图43)NVM
下载安装脚本:在终端中执行以下命令来下载并运行 nvm 的安装脚本,安装脚本已经自动把环境变量写入了 ~/.zshrc,不需要我们再手动添加。
|
|
重新加载 .zshrc
|
|
验证 nvm 是否可用
|
|
常用命令
|
|
xiaozhi-esp32-server
- 下载项目
|
|
- 运行
分别通过 VSCode、IDEA、PyCharm 运行 管理前端、管理后端、xiaozhi-server