使用AI-01开发板和开源后端服务搭建整套小智服务系统

使用AI-01开发板和开源后端服务搭建整套小智服务系统

四博智联的AI-01开发板,基于乐鑫ESP32-C2 + 专属定制的离线语音模组,能够完美的接入小智AI服务平台,再使用开源后端服务,就能够搭建一个完整的小智AI服务系统了。

下面是具体的搭建过程。

硬件连接

AI-01开发板没有板载USB转串口功能,需要自己通过USB转串口工具来连接到电脑,以便下载固件和查看日志输出信息。
参考官方提供的接线指导:下载说明
在这里插入图片描述

具体连线如下:
在这里插入图片描述

在实际使用中,USB转串口工具仅需连接到AI-01开发板的TX、RX、GND即可。然后用Tyep-C数据线给AI-01开发板供电即可。
需要注意的是,因为AI-01开发板没有提供RESET按钮,所以后续需要通过插拔Tyep-C数据线来重新上电,实现AI-01开发板的重启运行。

按照接线指导连接好以后,将USB转串口工具连接到电脑,再打开电脑的设备管理器,确保正确识别到对应的串口,并显示在端口(COM和LPT)中:
在这里插入图片描述

可以拔掉USB转串口工具,对应的设备会消失。然后过几秒,再重新连接到电脑的USB口,会重新出现。

建立ESP-IDF开发环境

小智AI系统硬件设备的开源代码,可以在VSCode中安装ESP-IDF的扩展和编译工具,来进行编译和烧录。

安装ESP-IDF扩展

首先安装VSCode,可以从https://code.visualstudio.com/download下载。
安装后,打开VSCode,点击右则导航栏的3+1方块图标,进入扩展安装,然后搜索esp-idf安装即可:
在这里插入图片描述

安装ESP-IDF编译工具

安装完ESP-IDF扩展后,点击右边导航栏的乐鑫圆形图标,在Advanced中点击配置ESP-IDF扩展,然后选择EXPRESS进入安装配置:
在这里插入图片描述

在安装配置界面中,按照下图选择从中国服务器下载(for China),并选择v5.3.3版本,再点击Install安装:
在这里插入图片描述

然后,耐心等待安装完成:
在这里插入图片描述

设置ESP-IDF扩展

安装完成后,从ESP-IDF扩展的安装界面,先设置图标,在选择设置:
在这里插入图片描述

在设置界面中,先搜索flash,设置烧录的波特率为921600:
在这里插入图片描述

再搜索monitor,设置串口监视的波特率为74880:
在这里插入图片描述

编译运行示例程序

现在开发环境已经安装配置好了,为了确保能够正常使用,可以运行一个示例程序进行检验。

点击右边导航栏的乐鑫圆形图标,在Advanced中点击展示示例项目,在列出的项目中,选择hello_world,然后点击Select location for hello_world project
在这里插入图片描述

点击后,会提示示例项目保存目录,设置一个目录保存即可。
创建成功后,会自动打开新建的hello world的项目工作界面:
在这里插入图片描述

然后按照下图,点击选择之前在设备管理器中显示的USB转串口工具设备端口号,以及芯片类型esp32c2:
在这里插入图片描述

再点击构建图标,即可编译hello_world的源码:
在这里插入图片描述

编译成功后,会显示如下的内存占用情况:
在这里插入图片描述

在下一步操作之前,需要从电脑先断开AI-01开发板的Tyep-C数据线,再按住AI-01开发板上的按键不放,然后重新连接到电脑上,让AI-01开发板进入下载固件模式。连接完成后,可以松开按键。

操作完成后,再点击底部的ESP-IDF:构建、烧录和监视图标,并在顶部弹出列表中选择UART
在这里插入图片描述

随后,会自动完成编译源码,烧录固件到AI-01开发板,并启动串口监视:
在这里插入图片描述

当VSCode下部的窗口,显示上述信息后,重新插拔AI-01开发板的Tyep-C数据线,AI-01开发板将重新上电运行前面烧录的程序,并输出Hello World
在这里插入图片描述

在进行下一步操作之前,需要点击上述信息输出界面右则各任务输出窗口的回收站图标终止任务,否则后续操作中,烧录和监视串口会有问题。
在这里插入图片描述

成功完成以上各项操作后,ESP-IDF开发环境就准备好了,可以进行后续操作,编译小智AI系统硬件设备的开源代码了。

编译运行DOIT小智AI开源代码

因为AI-01开发板使用的是乐鑫ESP32-C2 + 专属定制的离线语音模组,在小智AI官方的开源代码中没有适配,所以四博智联基于小智AI官方的开源代码,提供了对应的分支版本DOIT_AI,和官方版本的功能没有差异。

下载源码

DOIT_AI的源码,可以从https://github.com/SmartArduino/DOIT_AI下载最新版本:
在这里插入图片描述

在上述界面中,可以使用git工具clone源码,也可以直接下载源码的压缩包。

设置编译参数

使用VSCode打开下载的源码,参考前面hello world,设置串口端口号和芯片类型esp32c2。
另外,还需要通过SDK配置编辑器(menuconfig),开设置Xiaozhi的Board TypeDoit-AI-01-Kit
在这里插入图片描述

保存设置后,点击底部的构建来编译源码:
在这里插入图片描述

编译成功后,显示如下信息:
在这里插入图片描述

烧录运行

在下一步操作之前,需要从电脑先断开AI-01开发板的Tyep-C数据线,再按住AI-01开发板上的按键不放,然后重新连接到电脑上,让AI-01开发板进入下载固件模式。连接完成后,可以松开按键。

操作完成后,再点击底部的ESP-IDF:构建、烧录和监视图标,并在顶部弹出列表中选择UART
在这里插入图片描述

界面会显示如下信息,表示正在烧录固件:
在这里插入图片描述

如果执行后,出现下面的错误,说明串口被占用,或者连接不正确:
在这里插入图片描述

烧录完成后,显示信息如下:
在这里插入图片描述

当VSCode下部的窗口,显示上述信息后,重新插拔AI-01开发板的Tyep-C数据线,AI-01开发板将重新上电运行前面烧录的程序,并输出小智AI运行的信息:
在这里插入图片描述

配网运行

首次烧录运行后,会输出上述配网信息,并语音播报进入配网模式
此时,使用手机连接Xiaozhi开头的热点:
在这里插入图片描述

就能进入配网界面,设置当前环境所使用的WiFi名称和密码:
在这里插入图片描述

配置成功后,AI-01开发板运行的小智AI系统会自动重启,并输出如下的信息:
在这里插入图片描述

激活设备

首次配置网络后,会提示需要激活设备,并语音播报激活信息。
访问小智AI服务平台官网https://xiaozhi.me/,进入控制台注册账号并登录:
在这里插入图片描述

然后,添加新的智能体:
在这里插入图片描述

添加后,点击添加设备:
在这里插入图片描述

然后输入播报或者显示的数字:
在这里插入图片描述

激活成功后,系统会自动重新启动,启动完成,会听到嘟的一声响:
在这里插入图片描述

现在,就可以使用你好小智唤醒小智AI,然后进行对话了。也可以使用按键进行唤醒,然后进行对话。
在这里插入图片描述

搭建开源后端服务

AI-01开发板运行的小智系统,默认会连接到小智AI官方的服务平台。
我们可以使用开源后端服务的源码,来运行自己的小智AI后端服务,让AI-01开发板连接到自己的后端服务。

下载后端服务源码

从https://github.com/xinnan-tech/xiaozhi-esp32-server/releases 可以下载最新发布的开源后端服务的源码:
在这里插入图片描述

下载后解压源码,找到如下的目录,准备后续的操作:
在这里插入图片描述

下载语音识别模型文件

开源后端服务可以在本地运行语音识别服务(ASR),但需要下载对应的模型文件:https://modelscope.cn/models/iic/SenseVoiceSmall/resolve/master/model.pt

下载后,将该文件放置到main/xiaozhi-server/models/目录中:
在这里插入图片描述

安装 Anaconda

要运行开源后端服务,还需要Anaconda来安装python环境运行。
从 https://www.anaconda.com/download/success 下载Windows对应的Anaconda安装包 Anaconda3-2024.10-1-Windows-x86_64.exe
在这里插入图片描述

下载完成后,打开安装包安装,并在配置时,全部打钩:
在这里插入图片描述

安装完成后,搜索Anaconda,打开Anaconda Prompt
在这里插入图片描述

打开后,进入xiaozhi-server对应的目录,并执行下面的命令以查看conda版本,检测是否安装成功:

conda -V

在这里插入图片描述

创建Python运行环境

然后,执行下面的命令,创建需要的Python运行环境:

conda create -n xiaozhi-esp32-server python=3.10 -y

执行成功后,会输出如下的信息:
在这里插入图片描述

再依次执行下面的每一条命令,使用创建的环境,并安装需要的支持包:

conda activate xiaozhi-esp32-serverconda 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-forgeconda install libopus -y
conda install ffmpeg -y

在这里插入图片描述

安装完成后,执行下面命令,检验是否安装正确:

python -V
conda list opus
conda list ffmpeg

在这里插入图片描述

最后,执行下面的命令,安装开源后端服务所依赖的包:

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements.txt

在这里插入图片描述

安装成功后,会输出如下信息:
在这里插入图片描述

获取大模型apikey

开源后端服务运行时,需要调用LLM(大语言模型)接口,完成AI对话工作。

默认的LLM使用的是ChatGLM,去ChatGLM的官网https://bigmodel.cn/注册登录,然后添加新的Api Key,就可以免费使用:
在这里插入图片描述

配置后端服务

要运行小智后端服务,还需要做一些基础的配置。

首先,如果电脑上有多块网卡,或者运行了VMWare等虚拟机服务的话,上面显示的IP地址不一定是实际联网使用的,可以查看网络连接的属性,来获取当前使用的IP地址:
在这里插入图片描述

然后,执行下面的命令生成默认的配置文件:

mkdir data
copy config.yaml data\.config.yaml

在这里插入图片描述

再用VSCode打开后端服务源码目录xiaozhi-server,并打开data目录中的.config.yaml修改配置:
在这里插入图片描述

根据配置中的提示,修改如下位置:

  • websocket地址:
    在这里插入图片描述

修改websocket的地址,使用前面查看网络属性得到的IPv4地址,端口使用8000即可。

  • ChatGLMLLM的api key:
    在这里插入图片描述

将ChatGLMLLM的api_key,设置为前面获取的ChatGLM的apikey即可。

运行后端服务

上述操作都成功完成后,执行下面的命令,运行后端服务:

python app.py

运行成功后,将会出现如下的信息:
在这里插入图片描述

如果出现下面的提示,一定要点击允许:
在这里插入图片描述

根据前面获取的IPv4地址,最终的服务地址如下:

  • OTA接口地址:http://192.168.1.182:8002/xiaozhi/ota/
  • WebSocket接口地址:ws://192.168.1.182:8000/xiaozhi/v1/

测试后端服务

打开如下目录中的test.html,可以通过网页测试后端服务是否正常:
在这里插入图片描述

在测试界面中,填入上一步最终得到的OTA接口地址和WebSocket接口地址,就可以连接测试:
在这里插入图片描述

配置说明

开源后端服务配置文件中,有很多方面参数可以配置。
例如可以设置AI的人设,以及调用的LLM和TTS配置:
在这里插入图片描述

开源后端服务默认使用的LLM是ChatGLM,免费且速度快,但智能的能力并不是最好的,而使用的语音合成(TTS)服务是EdgeTTS,免费但是速度不快。
如果要想使用更好的效果,可以详细查看开源后端服务配置文件的说明,去开通相应平台的账号,获取对应的连接参数填入:
在这里插入图片描述

在这里插入图片描述

并启用对应的配置:
在这里插入图片描述

设置好对应的配置以后,重新启动后端服务即可生效。

另外,上面搭建的是简化版本的开源后端服务,让大家快速体验自己搭建整套小智服务系统。
如果参考开源后端服务的文档,搭建完整版的后端服务,还包括管理界面,功能非常的强大:
在这里插入图片描述

设置AI-01开发板OTA地址

现在开源后端服务已经成功运行了,只需要将AI-01开发板OTA地址,设置为上一节中最后获取的OTA接口地址,就可以连接到自己的后端服务了。

配置OTA地址

使用VSCode打开设备端DOIT_AI源码,参考之前设置编译参数,通过SDK配置编辑器(menuconfig),设置OTA地址:
在这里插入图片描述

重新编译源码

设置了OTA参数后,点击底部的构建项目图标,重新编译源码:
在这里插入图片描述

构建成功后,会输出如下信息:

在这里插入图片描述

烧录运行

在烧录运行之前,需要把之前打开的监视窗口关闭,否则串口无法重复连接。
在这里插入图片描述

在下一步操作之前,需要从电脑先断开AI-01开发板的Tyep-C数据线,再按住AI-01开发板上的按键不放,然后重新连接到电脑上,让AI-01开发板进入下载固件模式。连接完成后,可以松开按键。

操作完成后,再点击底部的ESP-IDF:构建、烧录和监视图标,自动完成编译、烧录、监视操作:
在这里插入图片描述

烧录完成后,会输出如下的信息:
在这里插入图片描述

待输出上面信息后,重新插拔AI-01开发板的Tyep-C数据线,AI-01开发板将重新上电运行前面烧录的程序,并输出小智AI运行的信息,并听到嘟的一声响:
在这里插入图片描述

现在,说你好小智唤醒小智AI,或者使用按键唤醒小智AI,开始对话:
在这里插入图片描述

从上面的输出信息可以看到,现在使用的是自己的后台服务地址了。

查看后端服务的输出日志,可以看到请求和返回的过程:
在这里插入图片描述

演示效果

下面的演示中,服务端配置中,使用了DoubaoLLM和DoubaoTTS:

在这里插入图片描述

具体演示效果如下:

全开源:使用四博AI-01开发板搭建自已的AI小智服务系统

从上面的演示中可以看到,使用AI-01开发板和开源后端服务搭建环境,可以顺利的运行提供服务,让我们能够拥有自己的小智服务系统了。
另外,演示环境是在本地电脑搭建的,如果是在服务器上搭建的,反馈的速度会更快。如果有充足的显卡资源,还可以自建LLM服务和TTS服务。

鸣谢

  • 感谢虾哥开源小智AI设备端源码:xiaozhi-esp32
  • 感谢开源团队开发后端服务:xiaozhi-esp32-server
  • 感谢四博智联提供AI-01源码:DOIT_AI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/79458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字节跳动在GitHub上有哪些开源项目

字节跳动(ByteDance)在GitHub上开源了许多项目,涵盖前端、后端、云原生、AI、数据库等多个领域。以下是一些典型项目及其简介: 1. 前端 & 跨平台开发 Hippy 仓库: Tencent/Hippy(注:Hippy 最初由腾讯开…

超长8分钟Suno V4.5 – 支持一首歌多风格转换啦~~~

f历史文章 Suno AI API接入 - 将AI音乐接入到自己的产品中,支持120并发任务 AI音乐支持中文,实测效果,大家自己听听看喽 2025年新年快乐,Viggle AI打开新年快乐 让照片舞动起来,只要3分钟就可以搞定了,…

vue3+ts项目 配置vue-router

安装vue-router pnpm install vue-router配置 1.src/router/index.ts文件下的内容 import type { App } from vue import type { RouteRecordRaw } from vue-router import { createRouter, createWebHistory } from vue-router import remainingRouter from ./modules/remai…

如何利用dify 生成Fine‑tune 需要的Alpaca 格式数据

如果你选择llamafactory 格式进行微调,它只是格式是Alpaca格式,dify 的agent dsl 如下,你可以导入本地的dify 或者导入cloud 版本的;测试版本是0.1.5 app:description: 上传文件,基于文件内容,使用 Silico…

C++开发指南

一、C++ 是什么? C++ 是一种强大、灵活、高性能的系统级编程语言,由 Bjarne Stroustrup 在 20 世纪 80 年代初开发,是 C 语言的超集。它既支持面向过程编程,也支持面向对象、泛型、函数式等现代范式。 C++ 被广泛应用于: 系统软件(如操作系统、编译器)游戏开发(如 Un…

重测序关系矩阵构建方式汇总

样本间亲缘关系矩阵(kinship matrix)和同源性矩阵(IBS matrix)构建的方式 1. 可以使用plink的–make-rel计算个体之间的亲缘关系(强调个体之间的遗传相似性) /opt/software/plink --bfile vcf_bfile--mak…

docker 部署前、后端分离项目详细步骤(从打包到部署)

在平常的开发工作中,一个项目经历需求、开发、测试、上线等步骤。在开发测试完成后,我们需要部署测试环境、生产环境等,那么我们用 docker 方式应该怎么部署呢?前后端分离的项目又该如何部署呢?那么,今天我…

大语言模型理解一般需求到在专业领域中最大限度地发挥其效能的演变轨迹

在人工智能技术飞速发展的当下,大语言模型(LLM)凭借其强大的语言处理能力和广泛的应用潜力,成为了各行业关注的焦点。从最初的文本生成、简单问答,到如今在专业领域的深度应用,大语言模型与用户的交互模式正…

mindyolo填坑

1、按照gitee上的文档跑预测代码,跑不通 更改: 将predict.py复制到跟目录。如果是cpu(本地测试比较常见),那么正确的命令行是: python predict.py --device_targetCPU --config ./configs/yolov7/yolov7.…

Python集合全解析:从基础到高阶应用实战

一、集合核心特性与创建方法 1.1 集合的本质特征 Python集合(Set)是一种​​无序且元素唯一​​的容器类型,基于哈希表实现,具有以下核心特性: ​​唯一性​​:自动过滤重复元素​​无序性​​&#xff…

【javascript】竞速游戏前端优化:高频操作与并发请求的解决方案

文章目录 前言一、性能痛点分析二、核心技术方案1.Web Worker2.Promise高级控制3.智能队列系统4.游戏化节流设计 三、最佳实践选择 前言 在竞速类网页游戏中,玩家高频点击与服务器实时交互会引发两大核心挑战: 客户端性能瓶颈:频繁操作导致…

Linux操作系统系统编程:x86-64架构下的系统调用

在Linux操作系统里,系统编程如同精密仪器的核心部件,掌控着系统运行的关键。而 x86-64 架构下的系统调用,更是连接用户空间程序与内核的关键桥梁。你可以把用户空间的程序想象成一个个 “工匠”,它们有着各式各样的需求&#xff0…

理解数据湖

目录 一、数据湖的定义与相关概念 二、数据湖出现的背景 三、数据湖关键技术 (一)存储技术

前端应用开发技术历程的简要概览

前端应用开发技术详解 一、萌芽期&#xff08;1990s - 2004&#xff09; 技术特征 HTML 3.2 / HTML 4.01 是主流版本。 样式用 CSS1/CSS2&#xff0c;但大部分样式写在 <style> 标签甚至行内。 动态效果主要通过 JavaScript 控制 DOM&#xff0c;兼容性极差。 代表事…

交换机配置DHCP

交换机配置DHCP 背景先关闭路由器的DHCPconsole口连接到交换机配置交换机 背景 路由器的dhcp分配IP地址变慢&#xff0c;怎么处理 先关闭路由器的DHCP 查看路由器中DHCP地址池范围; 关闭路由器的DHCP console口连接到交换机 协议Serial端口COMX波特率9600流控无 配置交换机…

解决Flutter项目中Gradle构建Running Gradle task ‘assembleDebug‘卡顿问题的终极指南

解决Flutter项目中Gradle构建Running Gradle task ‘assembleDebug‘卡顿问题的终极指南 前言 在开发Flutter应用时,经常会遇到Gradle构建卡在Running Gradle task assembleDebug阶段的问题。本文将分享如何通过配置华为云镜像和使用自定义脚本下载依赖的方法解决这些问题。…

AI驱动文字冒险游戏

github地址&#xff1a;https://github.com/thornbsj/ImmenseSimGame 虽然游戏比较简陋&#xff0c;但是由于笔者不想对游戏做过多的“剧透”&#xff0c;因此本文只粗略讲一下大致逻辑以及部分代码&#xff0c;有兴趣的朋友可以看上面的仓库获得更详细的部分。 一、状态机改…

springboot中有关数据库信息转换的处理

现代项目一般都是前后端分离的&#xff0c;前端只负责展示数据&#xff0c;不负责对数据处理&#xff0c;所以所有数据处理工作都由后端进行 比如在仿京东中的status&#xff0c;审核信息展示&#xff0c;数据库中是以0/1显示&#xff0c;但是前端需要以"审核/未审核&quo…

提示词版本化管理:AI开发中被忽视的关键环节

当我的提示词"消失"在团队协作中 上周五下午&#xff0c;我经历了一场小型"灾难"。作为一名AI产品经理&#xff0c;我花了整整三天精心打磨的客服机器人提示词&#xff0c;在周末更新后突然"失效"了。机器人不再能够准确识别用户意图&#xff0…

Centos Ubuntu RedOS系统类型下查看系统信息

文章目录 一、项目背景二、页面三、说明四、代码1.SysInfo2.EmsSysConfig3.HostInformationController4.HostInfo 一、项目背景 公司项目想展示当前部署系统的&#xff1a;操作系统&#xff0c;软件版本、IP、主机名。 二、页面 三、说明 说明点1&#xff1a;查询系统类型及…