3、Windows10平台下Unity3d的语音识别——听写识别
Dictation Recognizer(听写识别)听写识别是用来听任何单词/语音,用户将发音。您可以将语音文本显示给用户。它是对语音的连续识别。Windows Store构建的发布设置:如果您想为windows store构建应用程序,那么可以启用Internet和麦克风功能来利用听写识别。在Unity编辑器player setting. (Edit -> Project Sett...
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”.
如何在同一个应用程序中同时使用短语和听写识别?
如文章开头所述,你不能同时使用听写和短语识别。因此,如果您希望这两个特性都出现在您的应用程序中,那么在启动另一个之前先停止一个。
更多推荐
所有评论(0)