admin管理员组文章数量:1631605
一、Windows10平台下Unity3d的语音识别——关键字识别
二、Windows10平台下Unity3d的语音识别——语法识别
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”.
可能出现的错误: 当我运行上述代码时,我得到了错误——“ERROR: StartAsync on the continuous recognition session failed unexpectedly! [Operation has failed with error 0x80045509: (null)] "
如果您得到相同的错误,那么要修复这个问题,您需要更改机器中语音系统的策略设置。
- 要更改策略设置,请导航到System settings -> Privacy
- 从左侧面板选择speech, ink and typing,点击Get to Know me按钮,更改语音听写的策略选项。
如何在同一个应用程序中同时使用短语和听写识别?
如文章开头所述,你不能同时使用听写和短语识别。因此,如果您希望这两个特性都出现在您的应用程序中,那么在启动另一个之前先停止一个。
希望你对如何在unity3d软件中实现语音识别有所了解。请张贴您的意见,查询和反馈。感谢你的阅读。
版权声明:本文标题:三、Windows10平台下Unity3d的语音识别——听写识别 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729088852a1185915.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论