【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第55课-芝麻开门(语音 识别 控制3D纪念馆开门 和 关门)

news2024/11/16 21:25:48

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第55课-芝麻开门(语音识别控制3D纪念馆开门和关门)

使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎(内嵌了three.js编辑器的定制版-支持以第一视角浏览3D场馆),可以在浏览器和node.js、deno、electron上运行,它是一个跨平台的软件,支持多个操作系统使用!并且支持使用内置的poplang智体编程语言实现3D组件的智能化编程——语法超简单,一句话语法,人人轻松上手!

下面分为几步介绍,如何基于dtns.network智体世界引擎实现语音识别控制3D纪念馆实现开门关门——亦可通过语音识别实现任何的3D场馆的交互(例如打开宝箱、移动至某某展厅等等)。这使得现实世界的现场交互感、3D场馆的参与感、多人演示时的画面感-音觉交互感大大增强。从而让3D数字世界,变成了真实世界的一部分。提升了沉浸感、减少了虚拟世界的边界感,提升氛围感。

为了实现机器人的语音识别控制3D场馆中的3D门组件,须通过浏览器使用artyom.js库实现语音识别并通过dtns-api的实时频道通知到3d轻应用中(onRobotEvent接收实时频道传递过来的消息)。从而使得语音识别到的3D交互运作指令,可以明确无误的在多个算力设备、智能设备之间流转,实现真正意义上的分布式编程——简单、可靠、高效、即时。

第一步:打开头榜页面,找到3D纪念馆xverse轻应用

1.png

注:找到标题为“3D纪念馆-芝麻开门”的xverse轻应用。

第二步:点击右上角…进入头榜编辑器

2.png

注:因为每一个xverse轻应用均是以xverse.json的方式进行源码级应用的分享的。故每一个社区用户均可通过编辑xverse轻应用源码来实现DIY和定制。

第三步:点击正面的“编辑xverse轻应用源码”,进入3D场馆编辑器

3.png

注:点击3D场景中间的内嵌blender展厅的3D对象,在右侧的属性面板中找到脚本-编辑。

第四步:编辑“门”的3D组件的poplang代码

4.png

注:首先使用了ib3.event.bus.on rtrobot-channel onRobotEvent实现了实时语音指令的接收,并在onRobotEvent中完成了语音指令的判断。如指令为open则调用openDoor的自定义函数实现开门,如指令为close则调用closeDoor的自定义函数实现关门。指令open和close本质上对应了语音识别agent(使用artyom.js库在浏览器中完成了中英文语音的识别,以便调用dtns-api发出open和close的3D纪念馆的开门关门指令——见后文的audio_cmd.html代码截图)。

第五步:点击顶部菜单“文件”推送头榜(作品),将此3D纪念馆以xverse轻应用方式分享给其他用户

5.png

第六步:将新的头榜标题设置为“3D纪念馆-芝麻开门”,点击右上角确认完成头榜发布

6.png

注:标题为xmsg,不能误删除“”双引号,否则会发布失败——仅修改xmsg属性的文字内容即可。

第七步:找到刚发布的xverse轻应用头榜,点击进入3D场景浏览器

7.png

注:轻轻一点击,即可进入体验刚发布好的xverse-3D轻应用(智体应用),我们相当于可以无限地分享和裂变这个开源的3D轻应用(智体应用)。这样大家便可以按自己的需求,轻松的修改和定制这些动画的源码模板了。可以形成自己的故事、自己的动画、自己的3D场馆、自己的3D互动剧情等等。随心所欲地发挥,所以智体世界、智体OS也相当于【元宇宙】【开放世界】!

第八步:进入3D轻应用后,我们看到了内嵌的blender展厅的门处理关闭状态(然后通过打开的audio_cmd.html进行实时的poplang语音编程控制——agent控制端——从而实现芝麻开门/关门的语音指令监听)

8.png

注:刚进入3D纪念馆,内嵌的blender展厅的门是关着的(如上图所示)

我们通过电脑麦克风输入“芝麻开门”,即3D门向右移动——完成开门指令(如下图所示)

9.png

继续输入语音指令:芝麻关门(如下图所示)

10.png

注:3D门自动完成了闭合(恢复至刚开始进来的未被打开的样子)

我们看一下audio_cmd.html的代码

11.png

注:从上图可看到,通过判断是否有“芝麻开门”或“芝麻关门”的提示语。通过dtna-pi:dtns://web3:avrdev/rtchannel/send给订阅的频道rtrobot-channel机器人指令通道发送实时的开门(指令为open)和关门(close)指令。前端3D轻应用接收到该语音指令事件,即完成相应的开门和关门动作。使用agent和3D轻应用的配合,完成了整个语音识别到3D纪念馆交互的全链路过程。

通过上8步,我们成功完成了通过3D轻应用中实现了popalng语音识别和3D纪念馆的开门关门交互功能,这大大增强了在虚实结合的交互场景下的复杂3D组件控制功能。并有机会结合AGI通用人工智能和大语言模型,实现复杂多样的虚实融合的交互工作。大大拓展了3D纪念馆和3D轻应用的适用范围,改进了3D场馆的纯虚拟世界构建物质,融入到了现实世界的真实实时的多主机交互过程中。从而构建了混合式的虚实融合应用。丰富poplang智体应用编程的适用范围。非常大程度地丰富了3D轻应用的交互体验感和沉浸感、互动效果。

我们也看到了poplang智体编程语言的强大能量,一两行简单的指令,即可完成复杂的3D互动的交互效果、音效效果的开发。并且通过xverse-json源文件(3D轻应用)的方式进行社区分享,使得开源开放、公开透明的3D场馆的设计,能被大家更多的学习和继承,达到互动学习、互动成长的目的。这也是智体OS、智体互动式教育-学习的目标。

注:dtns.network德塔世界(开源的智体世界引擎)是在github和gitee上开源的项目!

附录(poplang智体代码——实现poplang语音识别及3D场馆“门”的交互):


set notgo 1

ib3.file.go obj_filefileA8av9GEE notgo

 

pop.func.define move

set name door2

set x 249

set y 3

set d0 0.5

* near_distance d0 d

+ y d y

set z 72

set z0 0

+ x z0 x

+ y z0 y

+ z z0 z

$.g_object_move_pos name x y z

pop.func.end

 

pop.func.define near

ib3.toast 正在靠近门

move

pop.func.end

 

pop.func.define onclick

ib3.audio.play obj_filefileA8av9GEE

pop.func.end

 

pop.func.define 3d_stop

#机器人频道

/rtchannel/unfocus?channel=rtrobot-channel

ib3.event.bus.remove rtrobot-channel

pop.func.end

 

/rtchannel/create?channel=rtrobot-channel

/rtchannel/focus?channel=rtrobot-channel

 

pop.func.define onRobotEvent

= data $event_data

object.get data.notify_type notify_type

set xtype open

== notify_type xtype xflag

pop.ifelse xflag openDoor doNo

    set xtype close

== notify_type xtype xflag

pop.ifelse xflag closeDoor doNo

pop.func.end

 

pop.func.define openDoor

set x 253

set y 3

set z 72

set dname door2

$.g_object_move_pos dname x y z

set vtips 已开门

ib3.voice.play vtips

pop.func.end

 

pop.func.define closeDoor

set x 249

set y 3

set z 72

set dname door2

$.g_object_move_pos dname x y z

set vtips 已关闭

ib3.voice.play vtips

pop.func.end

 

ib3.event.bus.on rtrobot-channel onRobotEvent

poplang的语音识别编程代码到此结束。

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

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

相关文章

Vue 3 中集成 ECharts(附一些案例)

Vue 3 中集成 ECharts 的完全指南 引言 在现代Web开发中,Vue 3以其卓越的性能和灵活的Composition API赢得了广泛的关注。而ECharts,作为开源的一个使用JavaScript实现的强大可视化库,以其丰富的图表类型和高度可定制性成为了数据可视化的首…

基于Qwen2/Lllama3等大模型,部署团队私有化RAG知识库系统的详细教程(Docker+AnythingLLM)

自 ChatGPT 发布以来,大型语言模型(Large Language Model,LLM,大模型)得到了飞速发展,它在处理复杂任务、增强自然语言理解和生成类人文本等方面的能力让人惊叹,几乎各行各业均可从中获益。 然…

Vatee万腾平台:智慧生活的无限可能

在科技日新月异的今天,我们的生活正被各种智能技术悄然改变。从智能家居到智慧城市,从个人健康管理到企业数字化转型,科技的力量正以前所未有的速度渗透到我们生活的每一个角落。而在这场智能革命的浪潮中,Vatee万腾平台以其卓越的…

ctfshow-web入门-文件包含(web87)巧用 php://filter 流绕过死亡函数的三种方法

目录 方法1&#xff1a;php://filter 流的 base64-decode 方法 方法2&#xff1a;通过 rot13 编码实现绕过 方法3&#xff1a;通过 strip_tags 函数去除 XML 标签 除了替换&#xff0c;新增 file_put_contents 函数&#xff0c;将会往 $file 里写入 <?php die(大佬别秀了…

Drools开源业务规则引擎(三)- 事件模型(Event Model)

文章目录 Drools开源业务规则引擎&#xff08;三&#xff09;- 事件模型&#xff08;Event Model&#xff09;1.org.kie.api.event2.RuleRuntimeEventManager3.RuleRuntimeEventListener接口说明示例规则文件规则执行日志输出 4.AgentaEventListener接口说明示例监听器实现类My…

leetcode力扣_双指针问题

141. 环形链表 思路&#xff1a;判断链表中是否有环是经典的算法问题之一。常见的解决方案有多种&#xff0c;其中最经典、有效的一种方法是使用 快慢指针&#xff08;Floyd’s Cycle-Finding Algorithm&#xff09;。 初始化两个指针&#xff1a;一个快指针&#xff08;fast&…

文件加密软件谁好用丨2024文件加密软件TOP10推荐

个人和企业都有隐私保护的需求&#xff0c;文件加密可以确保敏感信息不被未授权的人查看。在数据传输或存储过程中&#xff0c;加密可以防止数据被截获或非法访问。企业需要保护其商业机密&#xff0c;如专利、商业策略和客户信息等&#xff0c;防止竞争对手获取。加密可以保护…

腐蚀服务器如何设置管理员

可以设置服主与管理员 控制台中设置&#xff08;需游戏账号在线&#xff09; 服主 添加&#xff1a;在控制台中输入ownerid空格SteamID 删除&#xff1a;在控制台中输入removeowner空格SteamID 管理员 添加&#xff1a;在控制台中输入moderatorid空格SteamID 删除&#…

分布式事务get global lock fail Xid 获取全局锁失败

问题如下&#xff1a; 解决方法&#xff1a;在发生报错的方法上添加本地事务

C#中委托与事件

一、委托 1.1概念 委托是一种引用类型&#xff0c;它可以用于封装并传递方法作为参数。委托可以理解为是一个指向方法的**“指针”&#xff0c;它允许将方法作为参数传递给其他方法或存储在数据结构中&#xff0c;然后稍后调用这些方法。&#xff08;委托可以看作时函数的容器…

雨量监测站:守护大地的晴雨表

雨量监测站是一种专门用于测量和记录降雨量的设施。它通常由雨量计、数据采集器、传输装置和数据处理系统组成。雨量计负责感应雨滴的接触&#xff0c;通过一定的机制将降雨量转化为电信号或数字信号。数据采集器则负责收集这些信号&#xff0c;并将其传输至数据处理系统进行分…

【nvm管理nodejs版本,切换node指定版本】

nvm管理nodejs版本 nvm管理nodejs版本主要功能使用 nvm nvm管理nodejs版本 nvm&#xff08;Node Version Manager&#xff09;顾名思义node版本管理器&#xff0c;无须去node管网下载很多node安装程序;用于管理多个 Node.js 版本的工具。它允许你在同一台机器上同时安装和管理…

WPF自定义模板--RadioButton

默认格式 <Style x:Key"RadioButtonStyle" TargetType"{x:Type RadioButton}"><Setter Property"FocusVisualStyle" Value"{StaticResource FocusVisual}"/><Setter Property"Background" Value"{Stat…

Autosar MCAL-S32k324 Crypto配置-RandomNumber生成及使用

文章目录 前言CryptoPrimitivesCryptoPrimitiveAlgorithmFamilyCryptoPrimitiveAlgorithmModeCryptoPrimitiveAlgorithmSecondaryFamilyCryptoPrimitiveServiceCryptoDriverObject代码使用Random Generate执行流程配置job函数使用示例总结前言 之前介绍过AES-CMAC算法的配置,…

计算机专业怎么选择电脑

现在高考录取结果基本已经全部出来了&#xff0c;很多同学都如愿以偿的进入到了计算机类专业&#xff0c;现在大部分同学都在为自己的大学生活做准备了&#xff0c;其中第一件事就是买电脑&#xff0c;那计算机类专业该怎么选择电脑呢&#xff1f; 计算机专业是个一类学科&…

VBA初学:零件成本统计之四(汇总计算)

第四步&#xff0c;最后进行汇总计算 汇总统计的计算 Sub count() Dim rng As Range Dim i As Long, j As Long Dim arr_s, arr, brr, crr, drr Dim rowscount As Long Dim X As Variant Dim rg As Single, xb As Single, zj As SingleMsgBox "汇总计算时间较久&#xff…

实战某大型连锁企业域渗透

点击星标&#xff0c;即时接收最新推文 本文选自《内网安全攻防&#xff1a;红队之路》 扫描二维码五折购书 实战域渗透测试流程 对黑客来说&#xff0c;拿下域控制器是终极目标。然而攻击者空间是如何通过采取信息收集、权限提升、横向移动等一系列手段&#xff0c;从而一步步…

白嫖A100活动-入门篇-1.Linux+InterStudio

进入InterStudio 这节课是为了让大家熟悉使用InterStudio平台&#xff0c;以便后续开发 InterStudio平台是算力平台&#xff0c;可以通过平台使用A100,还可以使用“书生”团队集成好的环境、工具&#xff0c;快速部署LLMs. 进入平台&#xff1a; 记得报名&#xff0c;获得免…

vue2响应式原理+模拟实现v-model

效果 简述原理 配置对象传入vue实例 模板解析&#xff0c;遍历出所有文本节点&#xff0c;利用正则替换插值表达式为真实数据 data数据代理给vue实例&#xff0c;以后通过this.xxx访问 给每个dom节点增加观察者实例&#xff0c;由观察者群组管理&#xff0c;内部每一个键值…

集成学习(一)Bagging

前边学习了&#xff1a;十大集成学习模型&#xff08;简单版&#xff09;-CSDN博客 Bagging又称为“装袋法”&#xff0c;它是所有集成学习方法当中最为著名、最为简单、也最为有效的操作之一。 在Bagging集成当中&#xff0c;我们并行建立多个弱评估器&#xff08;通常是决策…