Unity Hololens2开发|(五)MRTK3子系统 KeywordRecognitionSubsystem(关键字识别)

这篇具有很好参考价值的文章主要介绍了Unity Hololens2开发|(五)MRTK3子系统 KeywordRecognitionSubsystem(关键字识别)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.前言

核心定义包附带有 KeywordRecognitionSubsystem,它是 MRTKSubsystemIKeywordRecognitionSubsystem 的基本实现,作为负责 MRTK3 中的关键字/短语识别的子系统的基础。 MRTK 附带的具体实现(例如 WindowsKeywordRecognitionSubsystem),以及你可能构建的其他潜在短语识别子系统,都应该基于此类。 继承自 KeywordRecognitionSubsystem 的子系统可以使用 SpeechInteractor 基于可交互对象的设置触发选择事件 StatefulInteractable’s 。 继承的子类还允许将任意UnityAction’s注册到所选关键字 (keyword) ,以便在说出此类字词时调用操作。文章来源地址https://www.toymoban.com/news/detail-756016.html

2.设置

2.1 启用语音子系统

  • 转到“project Setting”>“MRTK3”>“KeywordRecognitionSubsystem”,启用语音子系统,如下图:
    Unity Hololens2开发|(五)MRTK3子系统 KeywordRecognitionSubsystem(关键字识别),Hololens2开发系列,unity,游戏引擎,hololens

2.2 确保 MRTK Speech GameObject 处于活动状态

  • 确保“MRTK XR Rig”->“MRTK Speech”处于活动状态并且附加的脚本已启用。如下图:
    Unity Hololens2开发|(五)MRTK3子系统 KeywordRecognitionSubsystem(关键字识别),Hololens2开发系列,unity,游戏引擎,hololens

2.3 确保在“播放器设置”中设置适当的功能

  • 要在 UWP 平台上使用 WindowsKeywordRecognitionSubsystem,请转到“project Setting”>“Player”>“Capabilities”,并确保开启“Microphone”功能。如下图:
    Unity Hololens2开发|(五)MRTK3子系统 KeywordRecognitionSubsystem(关键字识别),Hololens2开发系列,unity,游戏引擎,hololens

3.使用关键字

3.1 KeywordRecognitionSubsystem 与 StatefulInteractable一起使用

  • 使用 KeywordRecognitionSubsystem 的最简单方法是将其与 StatefulInteractable 一起使用。 如果执行了设置部分下的步骤 2.2,则 SpeechInteractor 将在满足针对此类可交互对象指定的条件时触发 StatefulInteractable 上的选择事件(例如,听到指定的短语并且可交互对象被凝视悬停)
    Unity Hololens2开发|(五)MRTK3子系统 KeywordRecognitionSubsystem(关键字识别),Hololens2开发系列,unity,游戏引擎,hololens

3.2 手动使用 KeywordRecognitionSubsystem

  • KeywordRecognitionSubsystem另一种方法是手动注册关键字 (keyword) ,并在UnityAction子系统听到关键字 (keyword) 时调用。
var keywordRecognitionSubsystem = XRSubsystemHelpers.GetFirstRunningSubsystem<KeywordRecognitionSubsystem>();

if (keywordRecognitionSubsystem != null)
{
    keywordRecognitionSubsystem.CreateOrGetEventForKeyword("your keyword").AddListener(() => Debug.Log("Keyword recognized"));
}
  • 通过声明 Dictionary<string, UnityEvent> 来设定语音命令的关键字和对应行为,并由这个注册 Dictionary 来初始化 KeywordRecognizer ,编写行为动作函数。当用户说出关键词时,预设的动作就会被调用,从而实现语音命令的功能。
using System.Collections.Generic;
using System.Linq;
using UnityEngine.Events;
using UnityEngine.Windows.Speech;
using UnityEngine;
using MixedReality.Toolkit.Subsystems;
using MixedReality.Toolkit;

public class KeywordManager : MonoBehaviour
{
    //将此结构体暴露在Inspector面板中实现语音关键词和动作的添加
    [System.Serializable]
    public struct KeywordAndResponse
    {
        [Tooltip("关键字")]
        public string Keyword;
        [Tooltip("识别调用的UnityEvent")]
        public UnityEvent Response;
    }

    public KeywordAndResponse[] KeywordsAndResponses;
    private Dictionary<string, UnityEvent> responses;

    void Start()
    {
        if (KeywordsAndResponses.Length > 0)
        {
            //将struct数组转换为字典,将struct中的Keyword转换为字典的关键字,UnityEven转换为字典的方法
            responses = KeywordsAndResponses.ToDictionary(keywordAndResponse => keywordAndResponse.Keyword,
                                                          keywordAndResponse => keywordAndResponse.Response);

            var keywordRecognitionSubsystem = XRSubsystemHelpers.GetFirstRunningSubsystem<KeywordRecognitionSubsystem>();
            int Length = KeywordsAndResponses.Length;
            for (int i = 0; i < Length; i++)
            {
                if (keywordRecognitionSubsystem != null)
                {
                    //在子系统中注册一个关键字及其相关的操作
                    string Keyword = KeywordsAndResponses[i].Keyword;
                    keywordRecognitionSubsystem.CreateOrGetEventForKeyword(Keyword).AddListener
                        (() => { KeywordRecognizer_OnPhraseRecognized(Keyword); });
                }
            }
        }
        else
        {
            Debug.LogError("必须至少指定一个关键字 " + gameObject.name + ".");
        }
    }

    //识别关键字之后的回调
    private void KeywordRecognizer_OnPhraseRecognized(string Keyword)
    {
        // 如果识别到关键词就调用
        if (responses.TryGetValue(Keyword, out UnityEvent keywordResponse))
        {
            keywordResponse.Invoke();
        }
    }
}

到了这里,关于Unity Hololens2开发|(五)MRTK3子系统 KeywordRecognitionSubsystem(关键字识别)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【HoloLens2】【Unity】【MRTK】开发笔记(一):创建第一个项目

    前言 标题这三者的关系是:假如这里有一个电子厂,Unity是机床,MRTK是零件和螺丝刀,HoloLens2是超市货架。最后在机床上生产出的商品要摆到货架上售卖。机床官方建议用Unity,但Unreal也是很不错的选择,只是部分微软云服务暂时还不支持。 本电子厂女工将从零开始生产一个

    2024年02月10日
    浏览(33)
  • Unity之Hololens2开发 如何接入的MRTK OpenXR Plugin

    什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信息融入

    2024年02月08日
    浏览(31)
  • Unity MRTK Hololens2眼动交互

    在场景中新建一个物体,将EyeTrackingTest组件挂载到新建的物体上就可以了

    2024年02月08日
    浏览(32)
  • Hololens2 MRTK 关闭空间网格、性能面板

    在使用MRTK 创建Unity 工程时, 默认配置是带有空间网格、性能面板,但是有时候这些会干扰我们的全息幻影的视觉效果,因此需要进行屏蔽显示。 第一步,在“Hierarchy”面板选择“MixedReality Toolkit” 默认的MRTK配置是无法更改其内容的,这时候需要点击下图所显示的“Clone”字

    2023年04月08日
    浏览(27)
  • Unity Hololens2开发|(一)环境配置

    Windows10 SDK Microsoft Visual Studio2022 Windows 10/Windows11(专业版或者企业版操作系统 家庭版不行) Unity2021.3.29lts MixedRealityFeatureTool(用于配置MRTK3 Unity 的混合现实工具包) HoloLens 2 仿真器 :(有设备或者初学者不建议安装) 配置开发者模式 Holographic Remoting Player(全息远程处理播放) Visual

    2024年02月04日
    浏览(38)
  • Unity Hololens2开发|(四)实时画面电脑预览(2种方法)

    获取Hololens2 IP地址,打开Hololens2的Holographic Remoting Player 可以得到IP。 打开浏览器在搜索栏输入Hololens2 IP地址。如果出现安全问题拒绝访问,点开下面的更多信息然后进入,输入usrname、password。 -依次 查看-混合现实捕获-实时预览 点开即可看到Hololens画面。 如果不成功,请到

    2024年02月04日
    浏览(53)
  • Unity Hololens2开发|(三)工程发布及真机部署(3种方法)

    Unity 2021.3.27f1c2(Unity2018.4及以上版本) Visual Studio Community 2022 切换至UWP平台(如果没有该平台组件请先下载安装) HoloLens2的工程部署分为三种种方式:USB、WiFi和Web。 2.11 Unity 在Build Settings中将Build and Run on选择为USB Device,点击Build,如下图 2.12 Visual Studio 将当前工程右键设为启

    2024年02月05日
    浏览(41)
  • unity HoloLens2开发,使用Vuforia识别实体 触发交互(二)(有dome)

    提示:文章有错误的地方,还望诸位大神不吝指教! 我使用的utniy 版本:Unity 2021.3.6f1 第一章地址链接: link 第一章记录了一些 安装环境 需要的东西,这章主要章打包和一些BUG问题 以前记录的:链接: link 前提:需要在MRTK工具包中导入到项目。 本人经常使用的方法: 在holo

    2024年02月04日
    浏览(36)
  • Unity3D Pico VR 手势识别物体交互 适配 MRTK3

     当前Pico已经支持手势识别了,但是提供的PICO Unity Integration SDK 中是没有手势和物体交互的功能,Unity XR Interaction Toolkit提供的手势识别物体交互对 Quest适配的挺好的,Pico 当前只能用指尖点触还不能对物体进行抓握以及手势控制射线对物体进行交互。 如要项目想要使用Pico 手

    2024年01月21日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包