Unity3d软件中的语音识别,包含了关键字识别、语法识别和听写识别,本篇先介绍Win10平台下Unity3d关键字识别
从Unity 5.4.0开始,Unity引擎添加了windows语音识别API (UnityEngine.Windows.Speech)来识别语音输入。这些api支持所有类型的windows平台(windows editor、windows independent和windows Store),但只支持windows 10操作系统,支持中文语音识别。
关键点:

名称空间:UnityEngine.Windows.Speech
Unity3d支持:Unity 5.4.0或更高版本
操作系统支持:Windows 10
Unity3d软件中的语音识别
语音识别API可分为两大类:

短语识别
Keyword Recognizer(关键字识别)
Grammar Recognizer(语法识别)
听写识别
Dictation Recognizer(听写识别)
注意:不能同时使用短语识别和语音听写识别。在同一时间内间个实例中,应用程序中只有一个识别是激活的。

短语识别
短语识别用于识别用户所说的特定短语。

Windows Store构建的发布设置:
如果您想为windows store构建应用程序,那么可以启用麦克风功能来利用应用程序的语音输入。

在Unity编辑器中设置 (Edit -> Project Settings -> Player)
选择 “Windows Store”标签
检查麦克风(Publishing Settings -> Capabilities)
短语识别可以分为两种类型:关键词识别和语法识别

关键词识别
关键字识别用于监听给定字符串数组。让我们看看如何实现关键字识别器。

Step 1: 定义字符串数组
Step 2: 订阅和处理OnPhraseRecognized事件。当给定短语被识别时,将调用此事件。.
Step 3: 开始关键字识别

下面给出了实现关键字识别的完整脚本。将此脚本复制到项目中,可以挂在任何游戏物体上。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.Windows.Speech;

public class KeyWordRecognizerBehaviour : MonoBehaviour {

KeywordRecognizer keywordRecognizer;
// keyword array
public string[] Keywords_array;

// Use this for initialization
void Start () {
	// Change size of array for your requirement
	Keywords_array = new string[2];
	Keywords_array [0] = "hello";
	Keywords_array [1] = "how are you";

	// instantiate keyword recognizer, pass keyword array in the constructor
	keywordRecognizer = new KeywordRecognizer(Keywords_array);
	keywordRecognizer.OnPhraseRecognized += OnKeywordsRecognized;
	// start keyword recognizer
	keywordRecognizer.Start ();
}

void OnKeywordsRecognized(PhraseRecognizedEventArgs args)
{
	Debug.Log ("Keyword: " + args.text + "; Confidence: " + args.confidence + "; Start Time: " + args.phraseStartTime + "; Duration: "  + args.phraseDuration);
	// write your own logic
}

}

可以同时有多个关键字识别器,但它们不监听普通关键字

如果您在项目中使用多个关键字识别器,那么您可以使用PhraseRecognitionSystem类用一行代码停止并重新启动所有关键字识别。

// shut down phrase recognition system. All keyword recognizer will be stopped
PhraseRecognitionSystem.Shutdown();
// restore all recognizer in the previous state
PhraseRecognitionSystem.Restart();

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐