Dictation Recognizer(听写识别)

听写识别是用来听任何单词/语音,用户将发音。您可以将语音文本显示给用户。它是对语音的连续识别。

Windows Store构建的发布设置:

如果您想为windows store构建应用程序,那么可以启用Internet和麦克风功能来利用听写识别。

在Unity编辑器player setting. (Edit -> Project Settings -> Player)
选择 “Windows Store” 标签
检查麦克风(Publishing Settings -> Capabilities)
听写识别

听写识别是用来将语音转换为文本的。在使用听写识别器前,请先联网,否则会出现网络故障错误。

让我们看看如何实现听写识别。

Step 1: 创建听写识别器对象

DictationRecognizer dictationRecognizer = new DictationRecognizer();
Step 2: 处理听写事件
听写识别提供了四种类型的注册事件

DictationResult
DictationComplete
DictationHypothesis
DictationError
DictationResult事件
该事件在用户说话时暂停时触发,通常是在句子的最后。将在这里返回完整的识别字符串。
您需要先订阅事件:

dictationRecognizer.DictationResult += onDictationResult;
然后处理事件:

void onDictationResult(string text, ConfidenceLevel confidence)
{
// write your logic here
}

DictationHypothesis事件
此事件在用户说话时连续触发。当识别器侦听时,它将为此提供文本。
您需要先订阅事件:

dictationRecognizer.DictationHypothesis += onDictationHypothesis;
然后处理事件:

void onDictationHypothesis(string text)
{
// write your logic here
}

DictationComplete事件
当听写识别器停止时触发此事件。识别程序可以通过调用stop()方法、超时或遇到任何错误来停止。

您需要先订阅事件:

dictationRecognizer.DictationComplete += onDictationComplete;
然后处理事件:

void onDictationComplete(DictationCompletionCause cause)
{
// write your logic here
}

超时条件:

如果识别器启动且5秒钟内没有侦听任何内容,它将超时。
如果识别器给出了结果,然后它在20秒内不监听任何内容,它将超时。
DictationError事件
当发生错误时将触发此事件。

您需要先订阅事件:

dictationRecognizer.DictationError += onDictationError;
然后处理事件:

void onDictationError(string error, int hresult)
{
// write your logic here
}

Step 3: 开始识别

dictationRecognizer.Start();
下面给出了实现听写识别器的完整脚本。将此脚本复制到项目中,并与任何游戏对象连接。

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

public class DictationRecognizerBehaviour : MonoBehaviour {

DictationRecognizer dictationRecognizer;


// Use this for initialization
void Start () {
	dictationRecognizer = new DictationRecognizer();

	dictationRecognizer.DictationResult += onDictationResult;
	dictationRecognizer.DictationHypothesis += onDictationHypothesis;
	dictationRecognizer.DictationComplete += onDictationComplete;
	dictationRecognizer.DictationError += onDictationError;

	dictationRecognizer.Start();
}

void onDictationResult(string text, ConfidenceLevel confidence)
{
	// write your logic here
	Debug.LogFormat("Dictation result: " + text);
}

void onDictationHypothesis(string text)
{
	// write your logic here
	Debug.LogFormat("Dictation hypothesis: {0}", text);
}

void onDictationComplete(DictationCompletionCause cause)
{
	// write your logic here
	if (cause != DictationCompletionCause.Complete)
		Debug.LogErrorFormat ("Dictation completed unsuccessfully: {0}.", cause);
}

void onDictationError(string error, int hresult)
{
	// write your logic here
	Debug.LogErrorFormat("Dictation error: {0}; HResult = {1}.", error, hresult);
}

}

当我运行上面的脚本时,我对着麦克风说“Hello”.

如何在同一个应用程序中同时使用短语和听写识别?
如文章开头所述,你不能同时使用听写和短语识别。因此,如果您希望这两个特性都出现在您的应用程序中,那么在启动另一个之前先停止一个。

Logo

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

更多推荐