​​聆思CSK6大模型语音视觉开发板接入AIUI技能实操(控制风扇开关)

news2024/11/21 11:00:52

前言

本文以大模型语音控制灯的开关为例,讲解如何通过LSPlatform的云端编排功能在大模型语音交互流程中加入AIUI技能,实现更丰富的产品功能。

大模型语音模板加入AIUI技能节点后的数据流程如下图所示:

大模型语音控制AIUI之风扇

硬件准备工作

  1. 聆思CSK6大模型开发板
  2. 风扇

注意事项:

  • 开发板引脚电压电流有限,风扇必须单独外接电池或电源进行供电
  • 使用续流二极管提供一条低阻抗路径,使电流能够继续流动并保护其他元器件和电路免受反向电压冲击和电感储能释放的影响。

连接方式:从续流二极管引出两根导线一根接GND(地线),一根接用于上下电的GPIO接口来模拟风扇的开关。本例中使用的GPIO接口为PA2(扩展GPIOA2)

聆思CSK6大模型开发板端侧新增风扇控制配置

准备工作

部署开发环境以及SDK工程拉取到本地目录,可以参考聆思文档中心环境搭建 | 聆思文档中心获取大模型套件SDK | 聆思文档中心。SDK下载完成后,通过VScode打开LLM-pic示例模板 (D:\LISTENAI\duomotai_ap\apps\LLM-pic)根据自己的SDK保存路径打开

然后打开LLM-pic目录下的src\app_chat\app_music_ctrl.c文件

代码修改

开发板使用的是zepher-RTOS系统,SDK已经包含了控制意图,因此代码只需要修改两个地方:

  • 新增用于控制风扇的gpio引脚,使用扩展IO芯片的pa2引脚,文件路径LLM-pic\boards\csk6_duomotai_devkit.overlay
  • 增加控制风扇意图的逻辑代码流程,文件路径: LLM-pic\src\app_chat\app_music_ctrl.c

 1.在设备树中新增用于控制风扇的gpio引脚(扩展IOa2)

点击LLM-pic\boards\csk6_duomotai_devkit.overlay

在图中对应位置分别增加

fan-ctrl = &fan_ctrl;

  fan_ctrl: fan_ctrl {
          gpios = <&exgpioa 2 GPIO_ACTIVE_HIGH>;
};

2.src\app_chat\app_music_ctrl.c目录下

在图中对应位置分别增加头文件与宏定义

#include <zephyr/drivers/gpio.h>
#define GPIOA_2_NODE  DT_ALIAS(fan_ctrl)
static const struct gpio_dt_spec gpioa2=GPIO_DT_SPEC_GET(GPIOA_2_NODE, gpios);

   3.在图中位置新增定义fan_ret函数

int fan_ret;
	app_chat_evt_msg_t msg;
		if (!gpio_is_ready_dt(&gpioa2)) {
		return 0;
	}
	fan_ret = gpio_pin_configure_dt(&gpioa2, GPIO_OUTPUT_ACTIVE);
	if (fan_ret < 0) {
		return 0;
	}
	LOG_INF("Mumu------app_player_ctrl_thread");

 4.在图中AIUI意图控制下新增风扇控制的指令意图

 } else if (!strcmp(aiui_ctrl_strings, "1")) {//打开风扇
				LOG_INF("-----------------------------Open fan!");
				fan_ret=gpio_pin_set_dt(&gpioa2, 1);
			
} else if (!strcmp(aiui_ctrl_strings, "0")) { //关闭风扇
			   LOG_INF("-----------------------------Close fan!");
             fan_ret=gpio_pin_set_dt(&gpioa2, 0);

5.(可选)我们如果想要从日志判断云端是否下发到端侧,可以在duomotai_ap\.sdk\modules\lschat\sessions\session_core.c

图中所示位置新增日志打印解析到云端cjson的数据模板函数

	LISA_NLOGI("--- %s", cJSON_Print(intent));

新增日志打印之后的效果:

与云端对应,说明端侧成功解析到云端cjson。

AIUI.control的cjson拆包逻辑可以看这部分

至此,端侧配置完成。

编译与烧录

  1. 打开 windows powershell/cmd

2、在LISTENAI\duomotai_ap路径下输入,开始编译固件

lisa zep build -b csk6_duomotai_devkit apps\LLM-pic -p

3、固件编译成功之后,输入进行烧录

lisa zep exec cskburn -s \\.\COM串口号 -C 6 -b 1500000 0x000000 --verify-all .\build\zephyr\zephyr.bin

大模型语音接入AIUI实现风扇控制功能的云端配置

创建应用

登录LSplatform,创建新应用

创建成功后在弹出的界面进入应用编排服务

示例工程文件下载地址:大模型语音控制风扇

点击之后选择”导入节点文件”,导入下载的”大模型语音控制风扇.json“示例工程文件

示例工程讲解

本示例用的模板为“大模型语音交互与识图示例

该流程实现了图生文、文生图、风扇控制、知识库问答、兜底闲聊等功能。

具体流程如下

流程解析如下:

  1. 首先根据最近3轮历史对话判断用户在图生文对话中,若存在则继续图生文对话,调用大模型进行图片理解并下发流式TTS和流式文本。
  2. 若最近3轮对话没有包含图生文对话内容,则走大模型意图落域,判断用户是否想要进行“画画”,若落域结果为“画画”,则走文生图的逻辑,包括生成用户期望的图片以及TTS合成等
  3. 我们新增了一条意图,为风扇控制,若用户意图为风扇控制,则走AIUI控制的逻辑,端侧增加nlp帧,若命中AIUI技能,则成功下发指令,反之则失败。
  4. 若用户的意图不是画画,也不是风扇控制。则调用知识点检索,若存在知识点,则调用大模型进行知识点的回复,包括流式TTS和流式文本下发。
  5. 若用户的意图不是画画,也不是风扇控制,且调用知识点检索也没有结果,则调用大模型进行兜底闲聊回复,包括流式TTS和流式文本下发

关键节点讲解

  1. 在大模型意图落域部分,主要讲解语义改写分类提示词落域结果判断

语义改写

语义改写可以帮我们改写用户的问题,当有多轮提问的时候,使用语义改写可以将用户的多个问题改写成一个完整的问题,提高流程的处理效果。

当判断到有历史对话时,语义改写节点会整合用户的多个问题为一个完整问题,再传到提示词节点进行分类。

当判断到没有历史对话时,直接会传到提示词节点进行分类。

提示词(分类提示词)

按照提示词的一般设计原则,首先要对大模型进行角色设定(“你是一个分类专家”)。然后对其进行任务设定(“你需要将用户的句子归为“风扇控制”、“画画”、“闲聊”中的一类”)。接下来就是给大模型一些例子进行学习理解以提高分类的准确性。

落域结果判断

这里有三个落域,分别是画画风扇控制闲聊三个落域,它会通过前面的分类提示词来判断是哪个落域,每个落域对应不同的分支,如要再增添落域,点击左下角”添加“即可

  1. 意图部分我们主要看第二条链路,风扇控制链路,依次以前置处理、提示词、星火大模型、后置处理连接

前置处理函数、后置处理函数都是使用function节点来编写javascript代码,其主要作用

前置处理:主要用来提取上一个节点的输出参数转换或组装成下一个节点的输入参数

后置处理:主要用来提取上一个节点的输出参数生成语音播放内容以及NLP结果推送给端侧,会比前置处理单纯提取参数复杂一些。

这里关键讲解提示词后置处理节点

提示词(风扇控制)

风扇控制的提示词的作用是从用户的命令中提取关键信息(打开/关闭)来调整开关状态,打开即为“1”,关闭即为“0”,采用自然语言处理(NLP)比采用通配符匹配有更好的识别效果

后置处理

它的作用是接收和解析用户的自然语言指令,根据解析结果构建一个意图模板,如果成功匹配指令,则生成成功的语音提示和控制指令消息发送给端侧设备;如果未匹配到指令,则生成失败或异常的语音提示消息,仅发送语音播报而没有控制指令。

开发板对接LSPlatform云端应用绑定

一.创建产品

产品管理模块点击新建产品按钮,并按要求填写你的产品名称。

二.云端应用和云端产品信息绑定

配置刚才创建的应用,完成配置后,用户即可体验大模型语音控制风扇。在此我们仅需在配置应用勾对文章第一步创建的应用即可。

三.云端应用设备列表加入硬件设备ID

读取设备id

设备ID是一个产品下的唯一设备标识,我们需要获取当前设备ID方便后续在云端配置,才能让设备鉴权通过实现端云交互。

读取方式:

cskburn desktop是一款聆思推出的桌面烧录工具,下载地址(cskburn桌面烧录工具 | 聆思文档中心)打开软件后

1.点击串口下拉框,选择连接开发套件后识别到的串口编号;

2.点击获取信息

3.得到设备ID

加入设备列表

聆思平台只会对列表中的设备鉴权提供交互服务,因此需要将前面读取到的设备ID在设备管理页面进行导入才能实现设备正常交互。

四.CSK6开发板设备端写入云端产品服务配置

云端配置设备id后,还需将产品ID写入开发板固件中,才能让设备在运行时找到正确的云端产品服务完进行鉴权,鉴权完成就可以进行大模型语音交互了。这里有两种方式:

1.串口写入方式

使用数据线连接开发板 DAP_USB 接口后,打开聆思在线串口终端,选择对应的串口设 备进行连接,波特率默认115200,完成配置后点击连接按钮。

通过 set product_id set secret_id指令可以分别配置开发板接入的大模型应用 product ID 及其密钥,示例如下:

set product_id 71cd1721-xxx-xxx-xxx-1000055c8b2f

set secret_id cb09013f-xxx-xxx-xxx-e212b32f9218

product_idproduct_secret 可在对应产品的产品信息中获取,请将指令中的参数替换为产品信息中的 id 与 secret 信息。

  1. 二维码写入方式

开发板直接通过扫描产品二维码接入云端应用,扫描完成之后按RST,即可连接成功

至此,所有配置均以完成。

本文使用的聆思CSK6大模型开发板,详细信息可参考线上文档https://docs2.listenai.com/x/nTn9kMMCU

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

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

相关文章

使用 FinalShell 链接 Centos

1. 安装 FinalShell 下载地址&#xff1a;https://www.hostbuf.com/t/988.html 2. 查看 IP地址。 2.1 通过命令查询IP 输入 ip addr show 查询&#xff0c;输出效果如下截图&#xff0c;其中的 192.168.1.5 就是 IP 地址。 2.2 通过可视化界面查询IP 点击右上角的网络图标…

LLM自对齐技术最新研究分享(二):对齐 Pipeline 数据合成(下)

LLM 自对齐技术最新研究进展分享 系列文章继续更新啦&#xff01;本系列文章将基于下图的架构&#xff0c;对当前 Self-alignment 相关工作进行全面梳理&#xff0c;厘清技术路线并分析潜在问题。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 在上一篇…

MySQL数据库——概念与安装

目录 一、数据库的概述 1、数据库的基本概念 2、数据库管理系统&#xff08;DBMS&#xff09; 2.1、数据库管理系统概述 2.2、DBMS的工作模式 3、数据库系统&#xff08;DBS&#xff09; 3.1、数据库系统概述 3.2、数据库系统发展史 3.3、当今主流数据库介绍 4、关系…

VS2022离线安装包 - 下载安装教程

总目录 前言 一般情况下我们都是通过网络下载并安装VS2022&#xff0c;但是有些情况下&#xff0c;由于公司内部网络管理比较严格&#xff0c;可能会需要安装离线安装包这样的操作。 一、下载Visual Studio bootstrapper 进入Visual Studio bootstrapper下载界面按照如下图示…

angular xlsx-style,复杂表头样式导出

导出效果如下图所示&#xff1a; 下载xlsx npm install xlsx angular.json中引入&#xff1a; "node_modules/xlsx/dist/xlsx.full.min.js","src/assets/js/jszip.js","src/assets/js/xlsx.js" 两个插件地址&#xff1a; 上传中&#xff0c;等…

Android U WMShell动画调用堆栈

本文主要简单介绍WMShell动画调用堆栈 代码环境&#xff1a;repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r7 Systemserver侧 TAG: at com.android.server.wm.Transition.onTransactionReady(Transition.java:1575) TA…

Centos 设置成中国时区

原因是初始安装的 Centos 系统&#xff0c;时区是UTC&#xff0c;跟中国时间不一样&#xff0c;这样会导致一些问题&#xff0c;例如后面安装一些软件&#xff0c;证书认证失败等问题。 修改时间命令如下 1.首先&#xff0c;使用以下命令安装 tzdata 软件包&#xff08;如果尚…

喜羊羊做Python二级(模拟考试--易错点)

今天距离Python二级考试&#xff0c;还有28天左右。坚持每天做几套试卷&#xff0c;保持记忆和手感。 个人在做题的过程中是先不断练习选择题。当你选择题不达标的时候&#xff0c;系统不会看大题&#xff08;大概是觉得选择题都做的那么差&#xff0c;大题也不会那么好&#…

数据执行保护讲解

数据执行保护&#xff08;Data Execution Prevention&#xff0c;简称DEP&#xff09;操作系统中的一项安全功能&#xff0c;旨在防止恶意代码利用缓冲区溢出漏洞执行。它通过将内存的某些区域标记为不可执行&#xff0c;从而防止从这些区域执行代码。这适用于所有程序&#xf…

05:【江科大stm32】:定时器输出比较功能(PWM)

定时器输出比较功能&#xff08;PWM&#xff09; 1、LED呼吸灯2、PWM驱动舵机3、PWM驱动电机 1、LED呼吸灯 ①PWM.c文件的代码如下&#xff1a; #include "stm32f10x.h" // Device header/*使用定时器TIM2&#xff0c;通过通道CH1(PA0)输出PWM波 …

模型 PMI思考法

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。全面评估&#xff0c;三思而后行。 1 PMI思考法的应用 1.1 个人职业发展中的PMI思考法应用 张华是一位有志于提升自己职业竞争力的职场人士。他正在考虑报名参加一个专业认证课程&#xff0c;以期提…

Windows安装Ora2Pg(迁移表结构,表数据)

版本&#xff1a; windows server 2012 R2 oracle 12 说明&#xff1a; 目前该操作是在安装了oracle的机子上做的。 1、安装perl Strawberry Perl下载地址&#xff1a; Strawberry Perl for Windows - Releases 选择一个合适的版本&#xff0c;下载下来之后只需要选择…

百度广告联盟:抢占流量蓝海,精准营销新引擎

百度广告联盟&#xff1a;抢占流量蓝海&#xff0c;精准营销新引擎 在数字营销时代&#xff0c;争夺消费者的注意力与流量成为品牌竞争的关键。百度广告联盟&#xff0c;作为互联网营销领域的佼佼者&#xff0c;凭借其广泛的平台覆盖、精准的受众定位以及丰厚的合作回报…

水稻病害-目标检测数据集(包括VOC格式、YOLO格式)

水稻病害-目标检测数据集&#xff08;包括VOC格式、YOLO格式 数据集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1eiygobnVJklOdgyCwb2RVg?pwdvsoc 提取码&#xff1a;vsoc 数据集信息介绍&#xff1a; 共有 2148 张图像和一一对应的标注文件 标注文件格式提供了…

《深入浅出WPF》读书笔记.8路由事件

《深入浅出WPF》读书笔记.8路由事件 背景 路由事件是直接响应事件的变种。直接响应事件&#xff0c;事件触发者和事件响应者必须显示订阅。而路由事件的触发者和事件响应者之间的没有显示订阅&#xff0c;事件触发后&#xff0c;事件响应者安装事件监听器&#xff0c;当事件传…

MySQL EXPLAIN 完全解读

MySQL EXPLAIN 完全解读 一、一个EXPLAIN简单执行二、简单了解2.1. id&#xff1a;查询的标识符。2.2. select_type&#xff1a;查询的类型。2.3. table&#xff1a;输出结果集的表。2.4. type&#xff1a;连接类型&#xff0c;这是MySQL决定如何查找表中行的方法。2.5. possib…

学习之数据库相关概念

数据库相关概念 主流的关系型数据库管理系统&#xff1a;

HIVE 数据仓库工具之第一部分(讲解部署)

HIVE 数据仓库工具 一、Hive 概述1.1 Hive 是什么1.2 Hive 产生的背景1.3 Hive 优缺点1.3.1 Hive的优点1.3.2 Hive 的缺点 1.4 Hive在Hadoop生态系统中的位置1.5 Hive 和 Hadoop的关心 二、Hive 原理及架构2.1 Hive 的设计原理2.2 Hive 特点2.3 Hive的体现结构2.4 Hive的运行机…

数据集的使用

一、 Transform与dataset数据集的使用 import torchvisionfrom torch.utils.tensorboard import SummaryWriterdataset_transform torchvision.transforms.Compose([torchvision.transforms.ToTensor()])train_set torchvision.datasets.CIFAR10(root "./dataset"…

《中文Python穿云箭量化平台二次开发技术03》利用Tkinter高级模块设计自己策略代码编辑器及策略运行窗口

《中文Python穿云箭量化平台》是纯Python开发的量化平台&#xff0c;因此其中很多Python模块&#xff0c;我们可以自己设计新的量化工具&#xff0c;例如自己新的行情软件、新的量化平台、以及各种量化研究工具。 穿云箭自带指标公式源码运行模块&#xff0c;可以为其他量化平台…