语音输入是HoloLens三大基本输入方式之一。Unity上有三种形式在应用上添加语音输入,分别是: 1.使用KeywordRecognizer(关键字识别) 2.使用GrammarRecognizer(语法识别) 3.使用DictationRecognizer(听写识别) 注意:只有听写或短语识别可以立即操作。这意味着如果一个 GrammarRecognizer 或KeywordRecognize在运行,DictationRecognizer则不能运行,反之亦然。 声音设置 麦克风必须设置支持语音输入 1. 在Unity Editor,通过导航至播放器设置设置"Edit > Project Settings > Player" 界面 2. 点击"Windows Store" 3. 在"Publishing Settings > Capabilities" ,检查麦克风设置 关键字识别 命名空间: UnityEngine.Windows.Speech 类型: KeywordRecognizer, PhraseRecognizedEventArgs, SpeechError, SpeechSystemStatus 通过注册<关键词>来初始化KeywordRecognizer实例,同时注册语音命令事件来做后续处理。 添加一些存储识别和关键词到action dictionary: 添加关键词至字典。我们以"activate" 为例 创建关键字识别 注册OnPhraseRecognized事件 示例代码 最后,开始识别 语法识别 命名空间: UnityEngine.Windows.Speech 类型: GrammarRecognizer, PhraseRecognizedEventArgs, SpeechError, SpeechSystemStatus 创建语法识别并把它传给你的SRGS文件 注册OnPhraseRecognized事件 最后,开始识别 听写识别 命名空间: UnityEngine.Windows.Speech 类型: DictationRecognizer, SpeechError, SpeechSystemStatus 听写特性用于将用户语音转为文字输入,同时支持内容推断和事件注册特性。Start()和Stop()方法用于启用和禁用听写功能,在听写结束后需要调用Dispose()方法来关闭听写页面。垃圾回收站会自动回收它的资源。 完整的使用方法如下: 创建如下DictationRecognizer,有以下四种 1. DictationResult 2. DictationComplete 3. DictationHypothesis 4. DictationError 听写结果(DictationResult) 用户暂停事件将被解除 首先订阅DictationHypothesis事件: 处理DictationHypothesis回调 听写假设(DictationHypothesis ) 首先订阅DictationHypothesis事件: 处理DictationHypothesis回调 听写完成(DictationComplete ) 当系统停止,事件将被解除,无论是stop()被启用,超时,或其他错误情况。 首先订阅DictationComplete事件: 处理 DictationComplete回调 听写错误(DictationError) 当出现错误时,事件将被解除 首先订阅 DictationError 事件: 处理DictationError回调 订阅和操作听写事件可以通过启用听写识别器接收事件。 如果你不需要听写识别,你需要在事件中注销听写识别。 提醒: 1.start()和stop()方法分别代表启用和禁用听写识别。 2.在听写结束后需要调用Dispose()方法来关闭听写页面 3.以下情况中,听写识别会自动触发超时行为: 1). 如果在听写开始后第一个5秒内没听到任何声音,将会超时 2). 如果识别到了一个结果但是之后20秒没听到任何声音,也会超时 同时使用以上识别 如果你想同时在应用程序上使用短语识别和听写识别,那么一定要在完全关闭当前语音识别行为后再开始另一个识别动作。如果有多个KeywordRecognizer在运行,你可以使用如下代码一次性关闭它们: 为了从先前状态恢复所有识别器,可以在听写识别完成后调用下面的代码: 你也可以重新开始一个 KeywordRecognizer,这将会重启PhraseRecognitionSystem以达到上面的效果。
|