通过python安装小智语音服务器端
小智语音因为不提供服务器端开源代码,就自己在ai问了一套
GitHub - xinnan-tech/xiaozhi-esp32-server: 本项目为xiaozhi-esp32提供后端服务,帮助您快速搭建ESP32设备控制服务器。Backend service for xiaozhi-esp32, helps you quickly build an ESP32 device control server.本项目为xiaozhi-esp32提供后端服务,帮助您快速搭建ESP32设备控制服务器。Backend service for xiaozhi-esp32, helps you quickly build an ESP32 device control server. - xinnan-tech/xiaozhi-esp32-serverhttps://github.com/xinnan-tech/xiaozhi-esp32-server这套代码整体来说分为两部分,一部分是服务器部分,一部分是后台管理部分。
咱这里只说服务器核心代码的部分。我尝试了一下直接跑他们的docker镜像,很简单就可以跑通了。唯独需要注意下docker的端口号问题。
然而,我的服务器也是windows版本的,如果在服务器那个配置上跑docker,服务器就啥都别服务了。
于是看了一下,这套小智核心代码既然都是python的,那么我就在本地直接跑python吧。
上面图是某网站代码的截图。
好了,下来看我本地的python版本。
py --version
本地显示的版本是
下来,我在本地文件夹使用了一种项目内的虚拟环境技术,这个技术挺好的啊,我也是第一次使用。
创建虚拟环境:
-
在 Windows 上:
-
python -m venv venv
然后就会创建一个目录myenv,这个就是python的虚拟环境技术。激活这个环境,就会在命令行下进入这个环境
-
激活虚拟环境:
根据你的操作系统,使用以下命令激活虚拟环境 -
.\myenv\Scripts\activate
命令行前缀多了一个绿色的myenv,表示已经在虚拟环境下了。
venv 是 Python 3.3 及更高版本自带的标准库模块,用于创建轻量级的虚拟环境。它允许你在 Python 项目中创建独立的环境,从而隔离项目的依赖项,避免全局安装的包之间的版本冲突。
关于 venv 的特点:
内置模块:从 Python 3.3 开始,venv 被引入为标准库的一部分。因此,如果你使用的是 Python 3.3 或更高版本,无需额外安装,直接使用即可。
轻量级:venv 提供了比 virtualenv 更简单、更轻量的虚拟环境创建方式。它不包含一些额外的功能,如对旧版本 Python 的支持,因此更适合现代 Python 项目。
隔离环境:使用 venv 创建的虚拟环境会复制 Python 解释器和标准库文件,并创建一个独立的目录来存储项目的依赖项。这确保了每个项目可以在独立的环境中运行,不会相互干扰。 -
停用虚拟环境:
-
deactivate
安装依赖
这里注意一定要保持网络的稳定,这肯定都懂的
pip install -r requirements.txt
依赖安装完成后,会提示安装成功。
好了,下来尝试运行小智代码。这里会碰到一些问题,还会缺失两样东西,我下来再讲。
py ./app.py
这是因为这两个东西都需要额外下载安装到操作系统中,而不是python,python只是在操作系统中调用。
其中一个是Opus 库,文件是opus.dll 这个是音频信号处理,理所当然要用到。
https://www.dllme.com/dll/files/opus/5d3631c47e09deac2b0a2d0563937369https://www.dllme.com/dll/files/opus/5d3631c47e09deac2b0a2d0563937369
Releases · ShiftMediaProject/opus · GitHubUnofficial Opus with added custom native Visual Studio project build tools. Opus: Opus is a totally open, royalty-free, highly versatile audio codec. - Releases · ShiftMediaProject/opushttps://github.com/ShiftMediaProject/opus/releases
下载 DLL 文件后,将其放置在 Python 虚拟环境的 Scripts 目录下,或者将其路径添加到系统的环境变量 PATH 中,以确保 Python 能够找到并加载该 DLL 文件。例如,可以将 DLL 文件放在 venv/Scripts 目录下。
然后这里在线再安装一个库
pip install opuslib_next
安装完成后用
python -c "import opuslib_next"
验证安装成功是否,如果验证成功,就不会报错,否组会报错
继续执行py app.py
跳过了前面的报错,一个新的ffmpeg的报错信息。
哈哈哈,这个就简单了。直接下载安装
Download FFmpeghttps://ffmpeg.org/download.html
记得安装gyan.dev版本。
安装到默认目录,然后把环境变量加进去就好了。
再次执行主程序,依赖就没有问题了,下来是配置项目
差不多了,然后按照教程配置好配置文件,就好了,测试没问题。