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

【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 1ib3.file.go obj_filefileA8av9GEE notgopop.func.define moveset name door2set x 249set y 3set d0 0.5* near_distance d0 d+ y d yset z 72set z0 0+ x z0 x+ y z0 y+ z z0 z$.g_object_move_pos name x y zpop.func.endpop.func.define nearib3.toast 正在靠近门movepop.func.endpop.func.define onclickib3.audio.play obj_filefileA8av9GEEpop.func.endpop.func.define 3d_stop#机器人频道/rtchannel/unfocus?channel=rtrobot-channelib3.event.bus.remove rtrobot-channelpop.func.end/rtchannel/create?channel=rtrobot-channel/rtchannel/focus?channel=rtrobot-channelpop.func.define onRobotEvent= data $event_dataobject.get data.notify_type notify_typeset xtype open== notify_type xtype xflagpop.ifelse xflag openDoor doNoset xtype close== notify_type xtype xflagpop.ifelse xflag closeDoor doNopop.func.endpop.func.define openDoorset x 253set y 3set z 72set dname door2$.g_object_move_pos dname x y zset vtips 已开门ib3.voice.play vtipspop.func.endpop.func.define closeDoorset x 249set y 3set z 72set dname door2$.g_object_move_pos dname x y zset vtips 已关闭ib3.voice.play vtipspop.func.endib3.event.bus.on rtrobot-channel onRobotEvent

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

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

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

相关文章

2.pwn的linux基础(计算机内部数据结构存储形式)

linux基础 保护层级: 分为四个ring0-ring3 一般来说就两个,0和3 0为内核 3为用户 权限: 用户分为多个组 文件和目录等等的权限一般都是三个,即可读可写可执行。 读:R,写:W,执行:X 赋予一个可执行文件执行权限就是chmod x file…

qt 如何添加子项目

首先我们正常流程创建一个项目文件: 这是我已经创建好的,请无视红线 然后找到该项目的文件夹,在文件夹下创建一个文件夹,再到创建好的文件夹下面创建一个 .pri 文件: (创建文件夹) &#xff08…

字节跳动与南开联合开源 StoryDiffusion:一键生成漫画和视频故事的神器!完全免费!

大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年,也一名 AIGC 爱好者,持续分享更多前沿的「AI 工具」和「AI副业玩法」,欢迎一起交流~ 漫画,是多少人童年的回忆啊! 记得小学…

#数据结构 链式栈

1. 概念 链式栈LinkStack 逻辑结构:线性结构物理结构:链式存储栈的特点:后进先出 栈具有后进先出的特点,我们使用链表来实现栈,即链式栈。那么栈顶是入栈和出栈的地方,单向链表有头有尾,那我…

Http中get与post的区别,99%的人都理解错了吧

Get和Post是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别 就是Get把参数包含在URL中,Post通过request body传递参数。 你可能自己写过无数个Get和Post请求,或者已经看过很多权威网站总…

容器:stack

以下是关于stack容器的一些总结: stack容器比较简单,主要包括: 1、构造函数:stack [staName] 2、添加、删除元素: push() 、pop() 3、获取栈顶元素:top() 4、获取栈的大小:size() 5、判断栈是否为空&#x…

Linux运维之管道符、重定向与环境变量

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录 一、输入输出重定向 二、管道命令符 三、命令行的通配符 四、常用的转义字符 五、重要的环境变量 致谢 一、输入输出重定向 输入重定向是…

Python统计实战:时间序列分析之一元线性回归预测和指数曲线预测

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。 (以下练习题来源于《统计学—基于Python》。请在Q群455547227下载原始数据。) 练习题 下表是某只股票…

Mysql数据库基础操作

Mysql数据库 基本概念 内核的作用:调用硬件资源 数据库的作用 使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便的管理数据。 数据、表、数据库 数据 描述事物的符号记录,包括数字,文字,图形&…

nginx的正向代理和反向代理以及tomcat

nginx的正向代理和反向代理: 正向代理以及缓存配置: 代理:客户端不再是直接访问服务端,通过代理服务器访问服务端。 正向代理:面向客户端,我们通过代理服务器的IP地址访问目标范围端。 服务端只知道代理…

如何利用算法优化广告效果

效果广告以超过67%的占比,成为了中国互联网广告预算的大头。在BAT、字节等大的媒体平台上,效果广告以CPC实时竞价广告为主。在这种广告产品的投放中,广告主或其代理公司通过针对每个广告点击出价,系统自动把这些点击出价换算成eCP…

Java + MySQL 实现存储完整 Json

Java MySQL 实现存储完整 Json 一、应用场景二、数据库配置三、后端代码配置1、maven 依赖2、实体类3、Service 实现类4、xml 文件 四、测试1、新增接口2、查询接口3、数据表内容 一、应用场景 将前端传过来的 Json 完整存储到 MySQL 中,涉及技术栈为 Java、MyBat…

从资金管理的角度 谈谈伦敦金投资技巧

刚进入伦敦金市场的时候,笔者认为技术分析是很重要的,所以将学习伦敦金投资技巧的精力全部投入到技术分析的学习中。经过一系列交易的亏损,笔者才发现,其实交易管理才是最重要的。如果管理得好,30%的胜率,投…

嵌入式C语言面试相关知识——关键字(不定期更新)

嵌入式C语言面试相关知识——关键字 一、博客声明二、C语言关键字1、sizeof关键字2、static关键字3、const关键字4、volatile关键字5、extern关键字 一、博客声明 又是一年一度的秋招,怎么能只刷笔试题目呢,面试题目也得看,想当好厂的牛马其实…

Charles拦截发送数据包-cnblog

Charles拦截发送数据包 打开允许断点 右键要打断点的数据包,打断点 重新发请求进入断点模式 修改完毕后发送

C++实现简化版Qt的QObject(3):增加父子关系、属性系统

前几天写了文章: C实现一个简单的Qt信号槽机制 C实现简化版Qt信号槽机制(2):增加内存安全保障 之后感觉还不够过瘾,Qt中的QObject体系里还有不少功能特性没有实现。为了提高QObject的还原度,今天我们将父子…

vscode远程连接linux(配置免密)

远程连接 1.首先保证物理机和虚拟机网络可以ping通 2.查看ubuntu得ip地址 ifconfig IP为:192.168.52.133 3.连接远程主机 配置免密 1.打开cmd运行ssh-keygen -t rsa 一路回车就行 2.打开window文件夹C:\Users\xbj\.ssh 3.用记事本打开id_rsa.pub文件复制公…

LeetCode刷题之搜索二维矩阵

2024 7/5 一如既往的晴天,分享几张拍的照片嘿嘿,好几天没做题了,在徘徊、踌躇、踱步。蝉鸣的有些聒噪了,栀子花花苞也都掉落啦,今天给他剪了枝,接回一楼来了。ok,做题啦! 图1、宿舍…

数据结构之“栈”(全方位认识)

🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 前言 栈是一种数据结构,具有" 后进先出 "的特点 或者也可见说是 ” 先进后出 “。大家一起加油吧冲冲冲!! …

解决vscode配置C++编译带有中文名称报错问题

在新电脑上安装vscode运行带有中文路径和中文名称的C代码时遇到报错 根据别人的教程将laugh.json文件中"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",改成了"program": "${fileDirname}\\output\\test.exe",&#x…