【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第53课-语音指令跳舞

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第53课-语音指令跳舞

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

下面分为几步介绍,如何基于dtns.network智体世界引擎实现语音指令机器人跳舞。通过将现代的浏览器打造成接收语音指令的agent,将语音翻译成中文指令传递给3d轻应用,以便3D轻应用执行跳舞指令。从而实现了复杂的语音指令控制机器人的目标——更接近真实的场景对机器人的语音控制,后续拓展可以根据大语言模型,实时语音指令机器人实现包含跳舞的任意功能。从而将行者机器人底盘打造成真正具备场景应用能力的强大机器人底盘平台。

为了实现机器人的语音指令编程,通过浏览器使用artyom.js库实现语音识别并通过dtns-api的实时频道通知到3d轻应用中(onRobotEvent接收实时频道传递过来的消费)。从而根据指令判断是否是跳舞、还是执行旋风舞步。亦或是执行其它的机器人实时动作。

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

1.png

注:找到标题为“机器人控制-接收语音指令-跳舞”的xverse轻应用。

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

2.png

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

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

3.png

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

第四步:编辑墙体avatar玩家3D组件的poplang代码

4.png

注:首先使用了ib3.event.bus.on rtrobot-channel onRobotEvent实现了实时语音指令的接收(在onRobotEvent中完成了语音指令的判断,是dance跳舞还是dance_xf,亦或是其它机器人动作指令)。在使用该订阅事件总线指令之前,使用dtns-api:/rtchannel/create和/rtchannel/focus完成rtrobot-channel机器人实时信号频道的创建和订阅。并在3d_stop的3D轻应用退出事件中,进行unfocus和ib3.event.bus.remove删除事件订阅(避免退出后依然接收实时数据,浪费内存和cpu资源)。

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

5.png

第六步:将新的头榜标题设置为“机器人控制–接收语音指令-跳舞(2个舞步)”,点击右上角确认完成头榜发布

6.png

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

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

7.png

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

第八步:进入3D轻应用后,我们首先开始与机器人实现视频的实时连接(然后通过打开的audio_cmd.html进行实时的语音识别控制——agent)

8.png

下发语音指令:跳舞或旋风舞步(如下图所示),会发现机器人正在执行相应的舞步指令。

9.png

继续执行舞步指令(如下图)

10.png

我们回顾一下audio_cmd.html的代码

11.png

注:从上图可看到,有跳舞和旋风舞步的两个中文语音指令,通过调用dtns-api:dtns://web3:svrdev/rtchanne/send实现了对指令的实时派发。从而在3d轻应用中接收到指令之后,再执行相应的舞步指令。

通过上8步,我们成功完成了通过3D轻应用中实现了跳舞的语音指令控制,这大大增强了在真实场景下的复杂机器人控制功能。并有机会结合AGI通用人工智能和大语言模型,实现复杂多样的真实场景的人与机器人的配合工作。从而为人类增加上强大的智体agent助手!

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

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

附录(poplang智体代码——实现语音指令机器人跳舞):


pop.func.define 3d_move= event 3d_move_eventobject.get event.turn turnobject.get event.forward forward$.Math.abs turn= aturn $ret$.Math.abs forward= aforward $ret< aforward aturn turnflagpop.ifelse turnflag turnNow goNowpop.func.endpop.func.define turnNowset z 0> turn z leftFlagpop.ifelse leftFlag left rightpop.func.endpop.func.define goNowset z 0> forward z goFlagpop.ifelse goFlag move backpop.func.endpop.func.define left/rtphone/robot/action?action=leftset tips 左转#$.g_2d_voice_play tipspop.func.endpop.func.define right/rtphone/robot/action?action=rightset tips 右转#$.g_2d_voice_play tipspop.func.endpop.func.define move/rtphone/robot/action?action=moveset tips 前进#$.g_2d_voice_play tipspop.func.endpop.func.define back/rtphone/robot/action?action=backset tips 后退#$.g_2d_voice_play tipspop.func.endset chatid msg_chat02G7TLu59Tzs$.g_3d_show_rtcchat chatid#订阅capture事件pop.func.define onEvent= data $event_dataobject.get data.base64 base64$.g_2d_pose_find base64= cret $retobject.get cret.w wobject.get cret.h hobject.get cret.pose.keypoints pointsobject.get cret.pose.score scoreset i 0+ i i iset iw 9+ iw i iwarray.get points i nosearray.get points iw leftWristset leftr 0.33set rightr 0.66set scoreMin 0.2* w leftr leftw* w rightr rightw* h leftr tophobject.get nose.position.x npxobject.get nose.position.y npyobject.get leftWrist.position.y wpyobject.get leftWrist.score ws< wpy npy backok< npx leftw leftok> npx rightw rightok< npy h moveok> score scoreMin sok> ws scoreMin wsok&& backok wsok backok! backok notbackpop.ifelse backok back&& sok notback sok&& leftok sok leftok&& rightok sok rightok&& moveok sok moveokpop.ifelse leftok right donothingpop.ifelse rightok left donothing|| leftok rightok turnok! turnok notturn&& notturn moveok moveok&& moveok sok moveokpop.ifelse moveok move donothingpop.func.endib3.event.bus.on rtcchat_capture onEvent$.g_2d_rtcchat_capture_startpop.func.define 3d_stopib3.event.bus.remove rtcchat_capture$.g_2d_rtcchat_capture_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 dance== notify_type xtype xflagpop.ifelse xflag dance doNoset xtype dance_xf== notify_type xtype xflagpop.ifelse xflag dance_xf doNopop.func.endib3.event.bus.on rtrobot-channel onRobotEventpop.func.define danceset step 500movepop.sleep stepmovepop.sleep stepbackpop.sleep stepbackpop.sleep stepleftpop.sleep stepleftpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep stepleftpop.sleep stepleftpop.sleep stepmovepop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep stepleftpop.sleep stepmovepop.sleep stepmovepop.sleep stepbackpop.func.endpop.func.define dance_xfset stepmovepop.sleep stepmovepop.sleep stepbackpop.sleep stepbackpop.sleep stepleftpop.sleep stepleftpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep stepleftpop.sleep stepleftpop.sleep stepmovepop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep stepleftpop.sleep stepmovepop.sleep stepmovepop.sleep stepbackpop.func.end

poplang的人脸识别并认主的控制代码到此结束!

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

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

相关文章

面试题springboot面试

文章目录 Spring的依赖注入构造器注入stetter注入属性注入 springboot的优势第一开箱即用约定大于配置内嵌tomcat服务器 javaweb的三大组件springboot的自动配置原理SpringIoc的实现机制springmvcspring如何简化开发 Spring的依赖注入 构造器注入 stetter注入 属性注入 使用…

前端进阶:Vue.js

目录 框架&#xff1a; 助解&#xff1a; 框架&#xff1a; VUE 什么是Vue.js? Vue.js优点 Vue安装 方式一&#xff1a;直接用<script>引入 方式二&#xff1a;命令行工具 第一个Vue程序 代码 代码解释&#xff1a; 运行 Vue指令 v-text v-html v-tex…

Mysql和ES使用汇总

一、mysql和ES在业务上的配合使用 一般使用时使用ES 中存储全文检索的关键字与获取的商品详情的id&#xff0c;通过ES查询获取查询商品的列表中展示的数据&#xff0c;通过展示id 操作去获取展示商品的所有信息。mysql根据id去查询数据库数据是很快的&#xff1b; 为什么ES一般…

10 - Python文件编程和异常

文件和异常 在实际开发中&#xff0c;常常需要对程序中的数据进行持久化操作&#xff0c;而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词&#xff0c;可能需要先科普一下关于文件系统的知识&#xff0c;对于这个概念&#xff0c;维基百科上给出…

亚马逊云科技AWS免费大热AI应用开发证书(含题库、开卷)

亚马逊云科技AWS官方生成式AI免费证书来了&#xff01;内含免费AI基础课程&#xff01;快速掌握AWS的前沿AI技术&#xff0c;后端开发程序员也可以速成AI专家&#xff0c;了解当下最&#x1f525;的AWS AI架构解决方案&#xff01; 本证书内容包括AWS上的AI基础知识&#xff0c…

剖析DeFi交易产品之UniswapV4:Swap

文章首发于公众号&#xff1a;Keegan小钢 Swap 可分为两种场景&#xff1a;单池交易和跨池交易。在 PoolManager 合约里&#xff0c;要完成交易流程&#xff0c;会涉及到 lock()、swap()、settle()、take() 四个函数。单池交易时只需要调一次 swap() 函数&#xff0c;而跨池交易…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(七)-shell语法(5)

shell语法的一些知识和练习&#xff0c;可以当作笔记收藏一下&#xff01;&#xff01; 文章目录 前言 一、shell 二、shell语法 1.文件重定向 2.引入外部脚本 3.作业 总结 前言 shell语法的一些知识和练习&#xff0c;可以当作笔记收藏一下&#xff01;&#xff01; 提示&…

七种大模型微调方法:让你的Offer拿到爽

在当今的人工智能和机器学习领域&#xff0c;大型预训练模型&#xff08;如GPT、BERT等&#xff09;已成为解决自然语言处理&#xff08;NLP&#xff09;任务的强大工具。然而&#xff0c;要让这些模型更好地适应特定任务或领域&#xff0c;往往需要进行微调。本文将详细介绍七…

手把手教你:如何在51建模网免费下载3D模型?

作为国内领先的3D互动展示平台&#xff0c;51建模网不仅汇聚了庞大的3D模型资源库&#xff0c;供用户免费下载&#xff0c;更集成了在线编辑、格式转换、内嵌展示及互动体验等一站式功能&#xff0c;为3D创作者及爱好者搭建起梦想与现实的桥梁。 如何在51建模网免费下载3D模型…

鸿蒙认证值得考吗?

鸿蒙认证值得考吗&#xff1f; 鸿蒙认证&#xff08;HarmonyOS Certification&#xff09;是华为为了培养和认证开发者在鸿蒙操作系统&#xff08;HarmonyOS&#xff09;领域的专业技能而设立的一系列认证项目。这些认证旨在帮助开发者和企业工程师提升在鸿蒙生态中的专业技能…

linux——IPC 进程间通信

IPC 进程间通信 interprocess communicate IPC&#xff08;Inter-Process Communication&#xff09;&#xff0c;即进程间通信&#xff0c;其产生的原因主要可以归纳为以下几点&#xff1a; 进程空间的独立性 资源隔离&#xff1a;在现代操作系统中&#xff0c;每个进程都…

图解 Kafka 架构

写在前面 Kafka 是一个可横向扩展&#xff0c;高可靠的实时消息中间件&#xff0c;常用于服务解耦、流量削峰。 好像是 LinkedIn 团队开发的&#xff0c;后面捐赠给apache基金会了。 kafka 总体架构图 Producer&#xff1a;生产者&#xff0c;消息的产生者&#xff0c;是消息的…

怎么把录音转文字?推荐几个简单易操作的方法

在小暑这个节气里&#xff0c;炎热的天气让人分外渴望效率up&#xff01;Up&#xff01;Up&#xff01; 对于那些在会议或课堂中急需记录信息的朋友们&#xff0c;手写笔记的速度往往难以跟上讲话的节奏。此时&#xff0c;电脑录音转文字软件就像一阵及时雨&#xff0c;让记录…

PHP pwn 学习 (1)

文章目录 A. PHP extensions for C1. 运行环境与工作目录初始化2. 构建与加载3. 关键结构定义PHP_FUNCTIONINTERNAL_FUNCTION_PARAMETERSzend_execute_data等ZEND_PARSE_PARAMETERS_START等zend_parse_arg_stringzend_module_entryzend_function_entry等PHP类相关 原文链接&…

Python 作业题1 (猜数字)

题目 你要根据线索猜出一个三位数。游戏会根据你的猜测给出以下提示之一&#xff1a;如果你猜对一位数字但数字位置不对&#xff0c;则会提示“Pico”&#xff1b;如果你同时猜对了一位数字及其位置&#xff0c;则会提示“Fermi”&#xff1b;如果你猜测的数字及其位置都不对&…

Flower花所:稳定运营的数字货币交易所

Flower花所是一家稳定运营的数字货币交易所&#xff0c;致力于为全球用户提供安全、高效的数字资产交易服务。作为一家长期稳定运营的数字货币交易平台&#xff0c;Flower花所以其可靠的技术基础和优质的客户服务而闻名。 平台稳定性与可靠性&#xff1a; 持续运营&#xff1a;…

Vue前端练习

此练习项目只涉及前端&#xff0c;主要是vue和ElementUI框架的使用。&#xff08;ElementUI官网&#xff1a;Element - The worlds most popular Vue UI framework&#xff09; 一、环境准备 安装idea 安装Node.js 一键式安装(不需要做任何配置) npm -v&#xff08;也可用nod…

mysql-sql-第十五周

学习目标&#xff1a; sql 学习内容&#xff1a; 41.查询没有学全所有课程的同学的信息 select *from students where students.stunm not in (select score.stunm from score group by score.stunm having count(score.counm) (select count(counm) from course)) 42.查询…

数据结构_线性表

线性表的定义和特点 线性表是具有相同特性的数据元素的一个有限序列 :线性起点/起始节点 :的直接前驱 :的直接后继 :线性终点/终端节点 n:元素总个数,表长 下标:是元素的序号,表示元素在表中的位置 n0时称为空表 线性表 由n(n>0)个数据元素(结点),组成的有限序列 将…

安卓模拟器如何修改ip地址

最近很多老铁玩游戏的&#xff0c;想多开模拟器一个窗口一个IP&#xff0c;若模拟器窗口开多了&#xff0c;IP一样会受到限制&#xff0c;那么怎么更换自己电脑手机模拟器IP地址呢&#xff0c;今天就教大家一个修改模拟器IP地址的方法&#xff01;废话不多说&#xff0c;直接上…