【xiaozhi-esp32-server-服务端全模块启动】 xiaozhi-server 获取6位有效验证码

xiaozhi-server项目: https://github.com/xinnan-tech/xiaozhi-esp32-server/tree/main

全模块启动文档: https://github.com/xinnan-tech/xiaozhi-esp32-server/blob/main/docs/Deployment_all.md

小智客户端相关开源项目:

xiaozhi-web-client:https://github.com/TOM88812/xiaozhi-web-client

pyxiaozhi(按住发送): https://github.com/huangjunsen0406/py-xiaozhi

Xiaozhi-webrtc(数字人): https://github.com/dairoot/xiaozhi-webrtc

本博客用来记录开源项目xiaozhi-esp32-server 启动的详细步骤;参考官网文档https://github.com/xinnan-tech/xiaozhi-esp32-server/blob/main/docs/Deployment_all.md, 重复记录主要是用于一些特殊化配置, vscode中启动java以及一些安装过程中问题的的记录。

过程中如有疑惑,可直接参考官网的md文件。

部署好服务端之后:可以查看https://blog.csdn.net/qq_45056135/article/details/160531760?spm=1001.2014.3001.5502 去部署客户端

1. 环境搭建

1.1. 安装MySQL

1.1.1. 验证是否已经安装mysql

Python 复制代码
mysql --vserion

出现版本号已安装 例如:mysql Ver 8.0.36 for macos14 on arm64

command not found没安装

Case1: 如果本机已经安装了MySQL,可以直接在数据库中创建名为xiaozhi_esp32_server的数据库。

Python 复制代码
CREATE DATABASE xiaozhi_esp32_server CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Case2: 如果没有安装则安装mysql,如果已经安装了则跳过这部分

Python 复制代码
# 利用docker安装mysql 
docker run \
    --name xiaozhi-esp32-server-db -e \
    MYSQL_ROOT_PASSWORD=123456 \
    --restart=always        \
    -p 13306:3306 \
    -e MYSQL_DATABASE=xiaozhi_esp32_server \
    -e MYSQL_INITDB_ARGS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" \
    -e TZ=Asia/Shanghai \
    -d mysql:latest

# 在你的电脑上,用 Docker 自动安装、自动配置、
# 自动启动一个 MySQL 数据库,端口 13306,密码 123456,自动创建好小智服务需要的库xiaozhi_esp32_server。
# mysql容器名字为xiaozhi-esp32-server-db

docker run \
    --name xiaozhi-esp32-server-db -e \
    MYSQL_ROOT_PASSWORD=123456 \
    --restart=always        \
    -p 13306:3306 \
    -e MYSQL_DATABASE=xiaozhi_esp32_server \
    -e MYSQL_INITDB_ARGS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" \
    -e TZ=Asia/Shanghai \
    -d mysql:8.0

--restart=always

如果没有 mysql:latest 镜像会拉取这个镜像的
1.1.1.1. 连接数据测试可以正常使用
Python 复制代码
# 连接数据库。macbook
mysql -h 127.0.0.1 -P 3306 -u root -p12345678 

# other
mysql -h 127.0.0.1 -P 3306 -u root -p123456
mysql -h 127.0.0.1 -P 33306 -u root -p123456

# 显示数据库
show databses;
# 如下显示说明成功
xiaozhi_esp32_server

1.1.2. mysql 数据目录进行挂载 [docker部署才需要]

1.1.2.1. 数据备份
Python 复制代码
# 数据备份
# 1. 先查看原容器是否运行(确认容器名正确)
docker ps | grep xiaozhi-esp32-server-db
# 2. 创建宿主机临时目录,用于备份数据
mkdir -p /tmp/mysql_backup
mkdir -p /opt/wjg/mysql_data/data
# 3. 拷贝容器内MySQL数据到宿主机临时目录
# MySQL容器内默认数据目录是 /var/lib/mysql
# 所有文件
docker cp xiaozhi-esp32-server-db:/var/lib/mysql/ /opt/wjg/mysql_data/data
# 目录
docker cp xiaozhi-esp32-server-db:/var/lib/mysql /opt/wjg/mysql_data/data


/opt/wjg/mysql_data/conf
"Mounts": [
    {
        "Type": "bind",
        "Source": "/opt/qingyao/mysql_data/data",
        "Destination": "/var/lib/mysql",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    },
    {
        "Type": "bind",
        "Source": "/opt/qingyao/mysql_data/conf/my.cnf",
        "Destination": "/etc/mysql/my.cnf",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
]

[mysqld]
port = 3306
character-set-server = utf8mb4
lower_case_table_names = 1
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
character-set-client-handshake = FALSE


max_connections = 1000
innodb_buffer_pool_size = 1G
1.1.2.2. 停止并删除原容器

原容器未挂载目录,必须删除后重新创建(容器创建后无法修改挂载参数):

Bash 复制代码
# 停止容器
docker stop xiaozhi-esp32-server-db

# 删除容器(仅删容器,备份数据已在宿主机)
docker rm xiaozhi-esp32-server-db
1.1.2.3. 重新启动容器并挂载数据目录
Python 复制代码
# 1. 创建宿主机持久化数据目录(建议用非临时目录,如/opt/mysql_data)
mkdir -p /opt/mysql_data
chmod 777 /opt/mysql_data  # 赋予权限,避免MySQL启动权限报错

我的是(/opt/wjg/mysql_data/data)

# 2. 将备份的数据拷贝到新的持久化目录
cp -r /tmp/mysql_backup/mysql/* /opt/mysql_data/

# 3. 重新启动容器,添加-v参数挂载目录(核心修改)
# 容器名称 xiaozhi-esp32-server-db-mnt
docker run \
    --name xiaozhi-esp32-server-db-mnt -e \
    MYSQL_ROOT_PASSWORD=123456 \
    -p 33306:3306 \
    -e MYSQL_DATABASE=xiaozhi_esp32_server \
    -e MYSQL_INITDB_ARGS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" \
    -e TZ=Asia/Shanghai \
    -v /opt/wjg/mysql_data/data:/var/lib/mysql        \
    -v /opt/wjg/mysql_data/conf:/etc/mysql/my.cnf        \
    -d mysql:latest

# 容器名称 xiaozhi-esp32-server-db
docker run \
    --name xiaozhi-esp32-server-db -e \
    MYSQL_ROOT_PASSWORD=123456 \
    -p 13306:3306 \
    -e MYSQL_DATABASE=xiaozhi_esp32_server \
    -e MYSQL_INITDB_ARGS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" \
    -e TZ=Asia/Shanghai \
    -v /opt/wjg/mysql_data/data:/var/lib/mysql        \
    -v /opt/wjg/mysql_data/conf:/etc/mysql/my.cnf        \
    -d mysql:latest
1.1.2.4. 验证挂载是否成功
Bash 复制代码
# 1. 查看容器是否正常运行
docker ps | grep xiaozhi-esp32-server-db-mnt

# 2. 登录MySQL,创建测试表/数据
mysql -h 127.0.0.1 -P 13306 -u root -p123456
# 进入MySQL后执行:
use xiaozhi_esp32_server;
create table test (id int);
insert into test values (1);
exit;

# 3. 停止并删除容器,重新启动后检查数据是否还在
docker stop xiaozhi-esp32-server-db && docker rm xiaozhi-esp32-server-db
# 重新执行步骤3的docker run命令(无需再拷贝备份,因为数据已在/opt/mysql_data)
# 再次登录MySQL,查看test表和数据是否存在,存在则挂载成功

1.2. 安装redis

1.2.1. 验证本地是否已经有redis

Python 复制代码
redis-cli --version

输出版本号 → 已装 Redis

command not found → 没装

1.2.2. 如果没有安装则

Python 复制代码
# mac
brew install redis


# docker 安装
docker run \
    --name xiaozhi-esp32-server-redis \
    --restart=always        \
    -d -p 6379:6379 redis

docker run \
    --name xiaozhi-esp32-server-redis \
    --restart=always        \
    -d -p 16379:6379 redis

1.2.3. 连接redis

Python 复制代码
# mac
redis-cli -h 127.0.0.1 -p 6379 -a 123456

# server
redis-cli -h x.x.x.121 -p 6379 -a 123456

# 测试 
set name jordan
get name

# 退出
exit

1.3. 安装jdk21

1.3.1. 验证jdk是否已经安装

Python 复制代码
java -version

输出版本号 → 已装 jdk

command not found → 没装

1.3.2. 安装jdk

Python 复制代码
apt install openjdk-21-jdk

# 下载源文件
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz

mkdir -p /usr/local/java

tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local/java

vim /etc/profile

jdk-21.0.9
# 配置环境变量
export JAVA_HOME=/usr/local/java/jdk-21.0.9
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 生效环境变量
source /etc/profile
# 验证安装
java -version

1.4 安装maven

1.4.1. 验证是否已经安装了maven

Python 复制代码
mvn -version

输出版本号 → 已装 jdk

command not found → 没装

1.4.2. 安装maven [已经安装的直接跳过]

Python 复制代码
# 下载maven
wget https://dlcdn.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.tar.gz

# # 解压到 /usr/local/
tar -zxvf apache-maven-3.9.11-bin.tar.gz -C /usr/local/

# 重命名(可选,方便后续配置)
mv /usr/local/apache-maven-3.9.11 /usr/local/maven

# 配置环境变量
vim /etc/profile

#
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH

# 生效环境变量
source /etc/profile
# 验证安装
mvn -version

1.5. vscode 中使用 java [非vscode用户可以跳过]

windows安装java: https://blog.csdn.net/Coin_Collecter/article/details/136825041

vscode使用java: https://blog.csdn.net/m0_73972962/article/details/144424454

Python 复制代码
https://www.oracle.com/java/technologies/downloads/?er=221886#jdk21-windows

1.5.1. vscode中配置java

  1. 设置 --> java.home--> 选择对应的服务器 --> setting.json

如果是本地

如果是服务器

1.5.2. ### settings.json文件如下

mac

JSON 复制代码
{
    "workbench.colorTheme": "Default Dark+",
    "redhat.telemetry.enabled": true,
    "java.jdt.ls.java.home": "/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home",
    "chat.editor.fontSize": 12,
    "debug.console.fontSize": 12,
    "scm.inputFontSize": 12,
    "terminal.integrated.fontSize": 14,
    "chat.fontSize": 12,
    "window.zoomLevel": 1.2,
    "editor.fontLigatures": false,
    "git.confirmSync": false,
    "vue.autoInsert.dotValue": true,
    "claudeCode.preferredLocation": "panel"
}

查看javahome目录

Python 复制代码
echo $JAVA_HOME
Python 复制代码
# mac
{
    "redhat.telemetry.enabled": true,
    "java.jdt.ls.java.home": "/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home"
}

1.5.3. 其他注意点

被 ​ ​**public ​ 修饰的类,名称必须和文件名完全一致(包括大小写);没有 ​ public​​​ 修饰的类,名称可以和文件名不一致**​。

Python 复制代码
vscode中使用java
Extension Pack for Java
Java Extension Pack

测试是否可以运行java文件
Python 复制代码
// HelloWorld.java:Java 入门HelloWorld示例
public class HelloWorld {
    // 程序入口方法(main方法是Java程序的执行起点)
    public static void main(String[] args) {
        // 向控制台输出"Hello World!"(System.out.println()是打印并换行的方法)
        System.out.println("Hello World!");
        // 可选:额外打印一句中文,验证环境是否支持中文
        System.out.println("Java 入门成功!");
    }
}

1.6. 安装node.js

1.6.1 验证是否安装node.js

Python 复制代码
node -v

输出版本号 → 已装 jdk

command not found → 没装

1.6.2. 如果没有安装那么

Python 复制代码
# mac
brew install node

#

2. 运行项目

Python 复制代码
1. 启动springboot [manager-api:java]
2. 启动vue        [manager-web]
3. 启动python代码  [xiaozhi-server:app.py]
4.

2.1. manager-api

Python 复制代码
想要成功启动这个部分,你需要能正确的配置mysql, 和redis

3.1 安装JDK21,设置JDK环境变量

3.2 安装Maven,设置Maven环境变量

3.3 使用Vscode编程工具,安装好Java环境相关插件

3.4 使用Vscode编程工具加载manager-api模块

src/main/resources/application-dev.yml中配置数据库连接信息

Plain 复制代码
# mysql配置 username 和 password替换为你自己的
spring:
  datasource:
    username: root
    password: 123456

src/main/resources/application-dev.yml中配置Redis连接信息

Plain 复制代码
# redis相关配置 password替换为你自己的
spring:
    data:
      redis:
        host: localhost
        port: 6379
        password: 123456
        database: 0

3.5 运行主程序

本项目为SpringBoot项目,启动方式为: 打开Application.java运行Main方法启动

Plain 复制代码
路径地址:
src/main/java/xiaozhi/AdminApplication.java

当你看到输出日志时,说明你的manager-api启动成功了。

Plain 复制代码
2025-xx-xx 22:11:12.445 [main] INFO  c.a.d.s.b.a.DruidDataSourceAutoConfigure - Init DruidDataSource
2025-xx-xx 21:28:53.873 [main] INFO  xiaozhi.AdminApplication - Started AdminApplication in 16.057 seconds (process running for 17.941)
http://localhost:8002/xiaozhi/doc.html

2.1.1. 可能出现的错误

case1: mysql配置报错, 说明用户名和密码有问题,

SQL 复制代码
2026-04-25 15:57:56.572 [Druid-ConnectionPool-Create-293583290] ERROR com.alibaba.druid.pool.DruidDataSource - create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/xiaozhi_esp32_server?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true, errorCode 1045, state 28000
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121)
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:114)
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:837)
        at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:420)
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:238)
        at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:180)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1703)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1801)
        at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2946)

2.2. 运行manager-web程序

4.1 安装nodejs

4.2 使用Vscode编程工具加载manager-web模块

终端命令进入manager-web目录下

Plain 复制代码
npm install

然后启动

Plain 复制代码
npm run serve

请注意,如果你的manager-api的接口不在http://localhost:8002,请在开发时,修改 main/manager-web/.env.development中的路径

运行成功后,你需要使用浏览器,打开智控台,链接:++http://127.0.0.1:8001++ ,注册第一个用户。第一个用户即是超级管理员,以后的用户都是普通用户。普通用户只能绑定设备和配置智能体;超级管理员可以进行模型管理、用户管理、参数配置等功能。

重要:注册成功后,使用超级管理员账号,登录智控台,在顶部菜单找到模型配置,然后在左侧栏点击大语言模型,找到第一条数据智谱AI,点击修改按钮, 弹出修改框后,将你注册到的智谱AI的密钥填写到API密钥中。然后点击保存。

重要:注册成功后,使用超级管理员账号,登录智控台,在顶部菜单找到模型配置,然后在左侧栏点击大语言模型,找到第一条数据智谱AI,点击修改按钮, 弹出修改框后,将你注册到的智谱AI的密钥填写到API密钥中。然后点击保存。

重要:注册成功后,使用超级管理员账号,登录智控台,在顶部菜单找到模型配置,然后在左侧栏点击大语言模型,找到第一条数据智谱AI,点击修改按钮, 弹出修改框后,将你注册到的智谱AI的密钥填写到API密钥中。然后点击保存。

  1. 如果一切顺利打开http://localhost:8001/ 你就可以看到如下页面
    1. 第一次登陆最好记住你的密码 这个用户创建一次,而且默认是第一次的时候权限最高

2.3. python 项目启动

2.3.1. 安装Python环境

Python 复制代码
conda create -n xiaozhi-esp32-server python=3.10 -y
conda activate xiaozhi-esp32-server

# 添加清华源通道
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge

# 处理音频的包
conda install libopus -y
conda install ffmpeg -y

# 在 Linux 环境下进行部署时,如出现类似缺失 libiconv.so.2 动态库的报错 请通过以下命令进行安装
conda install libiconv -y

2.3.2. 创建conda环境

Python 复制代码
# 继续使用conda环境
conda activate xiaozhi-esp32-server
# 进入到你的项目根目录,再进入main/xiaozhi-server
cd main/xiaozhi-server
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements.txt

2.3.3. 下载语音识别模型文件

modelscope[sensevoicesmall]: https://www.modelscope.cn/models/iic/SenseVoiceSmall

本项目语音识别模型,默认使用SenseVoiceSmall模型,进行语音转文字。因为模型较大,需要独立下载,下载后把model.pt 文件放在models/SenseVoiceSmall 目录下。下面两个下载路线任选一个。

Python 复制代码

model.pt文件放在这里

测试asr语音模型是否有效:

Python 复制代码
# 可以识别本地模型
trust_remote_code=True

demo.py文件

Python 复制代码
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess

model_dir = "./"

model_path = model_dir + "models/SenseVoiceSmall"

model = AutoModel(
    model=model_path,
    vad_model="fsmn-vad",
    vad_kwargs={"max_single_segment_time": 30000},
    # device="cuda:0",
    hub="hf",
    trust_remote_code=True
)

# en
res = model.generate(
    input=f"{model.model_path}/example/en.mp3",
    cache={},
    language="auto",  # "zn", "en", "yue", "ja", "ko", "nospeech"
    use_itn=True,
    batch_size_s=60,
    merge_vad=True,  #
    merge_length_s=15,
)
text = rich_transcription_postprocess(res[0]["text"])
print(text)

2.3.4. 配置项目文件

  1. 使用超级管理员账号,登录智控台 ,在顶部菜单找到参数管理,找到列表中第一条数据,参数编码是server.secret,复制它到参数值server.secret需要说明一下,这个参数值很重要,作用是让我们的Server端连接manager-apiserver.secret是每次从零部署manager模块时,会自动随机生成的密钥。
  1. 如果你的xiaozhi-server目录没有data,你需要创建data目录。 如果你的data下面没有.config.yaml文件,你可以把xiaozhi-server目录下的config_from_api.yaml文件复制到data,并重命名为.config.yaml
  1. 复制参数值后,打开xiaozhi-server下的data目录的.config.yaml文件。此刻你的配置文件内容应该是这样的:
Plain 复制代码
manager-api:
  url: http://127.0.0.1:8002/xiaozhi
  secret: 你的server.secret值

把你刚才从智控台复制过来的server.secret参数值复制到.config.yaml文件里的secret里。

类似这样的效果

Plain 复制代码
manager-api:
  url: http://127.0.0.1:8002/xiaozhi
  secret: 12345678-xxxx-xxxx-xxxx-123456789000

直接看图:

2.3.5. 运行项目

Python 复制代码
运行项目
conda activate xiaozhi-esp32-server
python app.py

如下所示表示启动成功咯

2.4. 服务端页面介绍

2.4.1. 智能体管理界面, agent页面

这里会你自己创建的agent配置,刚进去的时候默认为空

2.4.2. 模型配置页面

这里你可以配置一些第三方服务配置, 或者自己的LLM, ASR[语音识别], TTS[语音生成],VAD[语音活动检测]等服务

2.4.2.2. 修改音频的灵敏度 [语音活动检测]

如果你想修改语音检测的阈值则你只需要修改检测阈值这个参数即可

  • 阈值越大可以屏蔽更多噪音
  • 阈值越小收音就会越敏感

2.4.3. 参数字典管理界面

几个重要参数: server.secret 用于绑定客户端

server.secret:

server.ota:

server.websocket:

close_connection_no_voice_time: 无语音输入断开连接时间(秒) 通常用来设置用户的无状态下的锻炼身体时间

server.auth.enabled: 是否开启认证。默认为True

3. QA

3.1. 如何获取6位有效验证码

Python 复制代码
import requests
import json
from loguru import logger
from app import get_mac_address

def load_param():
    device_id = get_mac_address()               # e:7a:00:f1:4a:2b
    ota_headers = {
        'Device-Id': device_id,
        'Content-Type': 'application/json'
    }
    ota_post_data = {
        "flash_size": 16777216,
        "minimum_free_heap_size": 8318916,
        "mac_address": device_id,
        "chip_model_name": "esp32",
        "chip_info": {
            "model": 9,
            "cores": 2,
            "revision": 2,
            "features": 18
        },
        "application": {
            "name": "xiaozhi",
            "version": "1.0.1"
        },
        "partition_table": [

        ],
        "ota": {
            "label": "factory"
        },
        "board": {
            "type": "demo",
            "ip": "127.0.0.1",
            "mac": device_id
        }
    }
    return device_id, ota_headers, ota_post_data

def get_ota_version(ota_http_url, device_id, ota_headers, ota_post_data):
    response = requests.post(ota_http_url, headers=ota_headers, data=json.dumps(ota_post_data))
    response_data = response.json()
    logger.info(f"device_id....................................{device_id}")
    if response_data.get('activation', '') == "":
        logger.info(f"6位有效验证码..................................已认证")
    else:
        valid_code = response_data.get('activation', '').get('code', '123321')
        logger.info(f"6位有效验证码.........................................{valid_code}")
    return response

# 获取六位有效验证嘛
if __name__ == "__main__":
    ota_http_url = "http://127.0.0.1:8002/xiaozhi/ota/"
    device_id, ota_headers, ota_post_data = load_param()
    response = get_ota_version(ota_http_url, device_id, ota_headers, ota_post_data)

然后配置

Python 复制代码
配置api_key
2. server.websocket
3. server.ota
4. server.secret

server.websocket: http://172.17.0.7:8013
erver.ota: http://172.17.0.7:8012/xiaozhi/ota/

wscat -c ws://172.17.0.7:8009

wscat -c ws://172.17.0.7:9999/xiaozhi/v1/

http://192.168.31.232:8003/xiaozhi/ota/

这几个参数要配置好即可生成6位有效验证码

3.2. 当你想要修改8001,8002,8003端口

Python 复制代码
# manager-api   这里的port 修改
application.yml

# vue.config.js 文件、manager-web 修改端口   8001 --> 8011,   target 8012
devServer: {
    port: 8011, // 指定端口为 8001
    proxy: {
      '/xiaozhi': {
        target: 'http://127.0.0.1:8012',
        changeOrigin: true
      }
    },
    client: {
      overlay: false, // 不显示 webpack 错误覆盖层
    },
  },

# server端
manager-api:
  # 你的manager-api的地址,最好使用局域网ip
  # 如果使用docker部署,请使用填写成 http://xiaozhi-esp32-server-web:8002/xiaozhi
  url: http://127.0.0.1:8012/xiaozhi
  # 你的manager-api的token,就是刚才复制出来的server.secret
  secret: 3faa0964-3f4a-4998-81bc-

3.3. Windows安装Mysql

windows安装mysql:https://blog.csdn.net/qq_45056135/article/details/127201960

彻底卸载mysql: https://blog.csdn.net/m0_52861000/article/details/131354710

找不到msvcr120.dll解决方法: https://learn.microsoft.com/zh-cn/answers/questions/4016279/ps-msvcr120-dll

3.3.1. 卸载

如果是安装失败需要卸载,参考博客2: https://blog.csdn.net/m0_52861000/article/details/131354710

打开注册表: win+R 输入 regedit

主要是注册表需要删除干净

Python 复制代码
# 注册表1
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
# 注册表2
\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\MySQLD Service

3.3.2. 由于找不到mSVCR120.dll, 无法继续执行代码

参考博客2:https://learn.microsoft.com/zh-cn/answers/questions/4016279/ps-msvcr120-dll

3.3.3. initialize specified but the data directory has files in it. Aborting.

已指定初始化但数据目录中存在文件。中止操作。 这个问题是因为mysql下面的data目录下面已经文件(可能是之前安装成功的残留)

D:\software\mysql-5.7.24-winx64\data 把data下面所有的数据删除即可

3.3.4. The service already exists! The current server installed:

参考博客3: https://blog.csdn.net/XIAOGUANG_/article/details/86468993

参考博客4: https://stackoverflow.com/questions/5599141/service-already-exists-when-it-clearly-doesnt

Python 复制代码
mysqld --initialize-insecure
mysqld -install
可能会出现该问题
  1. 意思是说mysql已经存在了 通过mysqld remove 进行删除, 然后重新 mysqld install

博客2说用

Plain 复制代码
sc delete service_name

sc delete mysqld  
sc delete mysql

这个方法对我来说没用
相关推荐
❆VE❆1 小时前
python实战(一):对接AI大模型并应用
开发语言·人工智能·python·ai
qq_372906932 小时前
CSS怎么在flex布局中实现项目均分间距_设置justify-content space-evenly
jvm·数据库·python
yangtuoni2 小时前
vscode调试C++ python相关配置
c++·vscode·python
小章UPUP2 小时前
2026 信息技术中考复习资料大全
python
2401_882273722 小时前
CSS 背景色无法撑满父容器?解决浮动导致的高度塌陷问题
jvm·数据库·python
好家伙VCC2 小时前
上市公司产学研合作及专利数据(1998-2022年)
人工智能·python
weixin_381288182 小时前
jsoup如何读取html
jvm·数据库·python
2401_882273722 小时前
golang如何处理zip压缩包_golang zip压缩包处理思路
jvm·数据库·python
Hesionberger2 小时前
LeetCode72.编辑距离(多维动态规划)
java·开发语言·c++·python·算法