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

本文主要是介绍聆思CSK6大模型语音视觉开发板接入AIUI技能实操(语音控制灯的开关),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

大模型语音控灯

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

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

一.创建应用

登录LSplatform,创建新应用

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

示例工程文件下载地址:大模型语音灯控.json

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

二.示例工程讲解

流程分为主要两个部分,第一部分为进行语音交互,将用户的语音输入识别为文字后利用第一个提示词节点(分类提示词),将用户的语音命令进行意图分类。

第二部分是根据前面的意图识别结果进行多分支处理。画图(第一个分支)的分支是调用星火大模型的文生图功能生成图片。灯控(第二个分支)的分支是再次利用提示词(灯控提示词)调用星火大模型从用户的语音内容中提取关键的控制信息,如“打开/关闭灯光”控制GPIO高低电平来实现控制rgb灯的状态,最后一个分支是闲聊分支是用于完成语音的基本问答功能。

三.关键节点讲解

第一部分

第一部分主要讲解提示词语义改写落域结果判断部分

提示词(分类提示词)

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

语义改写

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

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

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

落域结果判断

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

第二部分

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

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

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

第二部分我们只看第二条分支(灯控分支),前置处理与”闲聊”的前置处理相同,直接照抄即可。这里关键讲解“提示词”与“后置处理”节点

灯控提示词

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

灯控后置处理节点

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

聆思CSK6大模型开发板端侧新增灯控意图配置

准备工作

部署开发环境以及SDK工程拉取到本地目录,可以参考聆思文档中心环境搭建 | 聆思文档中心获取大模型套件SDK | 聆思文档中心

SDK下载完成后,通过VScode打开LLM-pic示例模板 D:\LISTENAI\duomotai_ap\apps\LLM-pic)根据自己的SDK保存路径打开

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

代码修改

我们需要修改的有三个部分

  1. 新增头文件
    #include <zephyr/drivers/gpio.h>

          新增宏定义

#define LED_G_NODE DT_ALIAS(led_rgb_green)static const struct gpio_dt_spec led_g = GPIO_DT_SPEC_GET(LED_G_NODE, gpios);

  1. 定义led_ret变量

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

  1. 新增灯控的控制意图
    } else if (!strcmp(aiui_ctrl_strings, "1")) { // 开灯LOG_INF("Open LED!");led_ret = gpio_pin_set_dt(&led_g,1);} else if (!strcmp(aiui_ctrl_strings, "0")) { // 关灯LOG_INF("Close LED!");  led_ret = gpio_pin_set_dt(&led_g,0);

至此,端侧部分配置完成

编译与烧录

  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

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

一.创建产品

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

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

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

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

读取设备id

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

读取方式:

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

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

2.点击获取信息

3.得到设备ID

加入设备列表

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

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

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

写入方式:

使用数据线连接开发板 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 信息。

至此,所有配置均以完成。本文使用的聆思CSK6大模型开发板,详细信息可参考线上文档套件简介 | 聆思文档中心

这篇关于聆思CSK6大模型语音视觉开发板接入AIUI技能实操(语音控制灯的开关)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093647

相关文章

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、