新闻资讯

3DCAT实时渲染云平台

让任意设备随时随地访问您的3D应用

如何在Unity3d中使用语音识别功能

2021-02-26

如何在Unity3d中使用语音识别功能?随着社会的多元化发展,语音识别应用到各行各业。在Unity3d开发中,语音识别也是一个比较热门的一个功能。

如何在Unity3d中使用语音识别功能

在Unity中添加语音识别功能方法有多种,例如百度语音识别、科大讯飞语音识别等等。这些平台的SDK提供了完善的语音识别相关功能。但是在一些项目中,可能只需要一些简单的短语口令识别,这时百度语音、科大讯飞等语音识别SDK就显得有些大材小用。其实对于短语关键字识别Unity自身就有很好的支持。官方API参考链接如下:

https://docs.unity3d.com/ScriptReference/Windows.Speech.PhraseRecognizer.html

下面是具体的实现步骤:首先由先引用个命名空间

using UnityEngine.Windows.Speech;

然后定义一个string类型数组,这个数组就是存放那些我们要识别关键字。 // 关键字

public string[] keywords = { "小可爱小可爱", "結束", "预备", "开始" };

紧接着我们要在start方法中先创建一个语音识别器,这样才能够进行语音识别

//创建一个识别器

        m_PhraseRecognizer = new KeywordRecognizer(keywords, m_confidenceLevel);

        //通过注册监听的方法

        m_PhraseRecognizer.OnPhraseRecognized += M_PhraseRecognizer_OnPhraseRecognized;

        //开启识别器

        m_PhraseRecognizer.Start();

接着是一个方法,这个方法主要就是用于识别到关键字后要做的事情

/// <summary> 当识别到关键字时,会调用这个方法 </summary>

private void M_PhraseRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args)

{
    _SpeechRecognition(args.text);
    print(args.text);
}

这样基本上重要的部分就完成。下面是全部的代码。

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.Windows.Speech;

///

语音识别 public class SpeechRecognition : MonoBehaviour

{ public AudioClip[] clips;

public AudioSource audio;

// 短语识别器

private PhraseRecognizer m_PhraseRecognizer;

// 关键字

public string[] keywords = { "小可爱小可爱", "結束", "预备", "开始" };

// 可信度

public ConfidenceLevel m_confidenceLevel = ConfidenceLevel.Medium;

void Start()

{
    audio = gameObject.GetComponent<AudioSource>();

    if (m_PhraseRecognizer == null)

    {
        //创建一个识别器

        m_PhraseRecognizer = new KeywordRecognizer(keywords, m_confidenceLevel);

        //通过注册监听的方法

        m_PhraseRecognizer.OnPhraseRecognized += M_PhraseRecognizer_OnPhraseRecognized;

        //开启识别器

        m_PhraseRecognizer.Start();

    }

}

/// <summary> 当识别到关键字时,会调用这个方法 </summary>

private void M_PhraseRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args)

{
    _SpeechRecognition(args.text);

    print(args.text);

}

private void OnDestroy()

{

    //判断场景中是否存在语音识别器,如果有,释放

    if (m_PhraseRecognizer != null)

        m_PhraseRecognizer.Dispose();

}

/// <summary> 识别到语音的操作 </summary>

void _SpeechRecognition(string msg)

{

    switch (msg)

    {

        case "小可爱小可爱":

            audio.clip = clips[0];

            audio.Play();

            Debug.Log("我在,你说");

            break;

        case "预备":

            audio.clip = clips[1];

            audio.Play();

            break;

        case "結束":

            audio.clip = clips[2];

            audio.Play();      

            break;

        case "开始":

            audio.clip = clips[2];

            audio.Play();

            break;

        default:

            break;

    }

}

}

如何在Unity3d中使用语音识别功能?3DCAT实时渲染平台已经在上文给大家做出解答。3DCAT实时渲染云平台集实时渲染、实时3D可视化、像素流送、虚拟仿真等相关技术服务于一身。利用云端的海量GPU算力处理繁重的图像渲染计算并串流同步输出到终端设备,从而实现终端设备的轻量化,让高质量三维图形应用变得无处不在。

用户可以使用任何联网的普通设备,访问托管在3DCAT云中的三维应用程序,同时无需下载安装应用。3DCAT支持能在Windows平台运行的几乎所有渲染引擎,支持NVIDIA RTX实时光线追踪功能的开启。

3DCAT实时渲染云平台通过提供专业的技术服务,帮助用户实现相关产品及工艺降本增效。3DCAT实时渲染云平台已经和英伟达、平行云、Unity、Unreal Eengine等国内外知名企业达成合作伙伴关系。目前,3D实时渲染云平台已在工业仿真、智慧园区、医疗仿真、游戏试玩、汽车仿真、建筑工程等虚拟仿真和数字孪生相关应用领域提供专业的技术服务。

以上就是3DCAT实时渲染云平台整理发布的《如何在Unity3d中使用语音识别功能》一文。如需转载,请注明出处及链接:https://www.3dcat.live/news/unity3d

了解更多Unity3d真相关资讯,请关注3DCAT实时渲染云平台:https://www.3dcat.live/

QQ: 912428984
+86 18588403835