Hololens入门之语音识别(语音听写)
Hololens入门之语音识别(语音听写)听写即语音转文字,此前我们称之为Speech to Text,同样是Windows Store应用特性之一。在HoloLens上,发挥了比其他平台更大的作用。因为HoloLens的操作特性,使用键盘操作起来十分不方便,语音则无此问题,能大大提高输入效率听写特性用于将用户语音转为文字输入,同时支持内容推断和事件注册特性。Start()和Stop(
Hololens入门之语音识别(语音听写)
听写即语音转文字,此前我们称之为Speech to Text,同样是Windows Store应用特性之一。在HoloLens上,发挥了比其他平台更大的作用。因为HoloLens的操作特性,使用键盘操作起来十分不方便,语音则无此问题,能大大提高输入效率
听写特性用于将用户语音转为文字输入,同时支持内容推断和事件注册特性。Start()和Stop()方法用于启用和禁用听写功能,在听写结束后需要调用Dispose()方法来关闭听写页面。GC会自动回收它的资源,如果不Dispose会带来额外的性能开销
本文示例在 Hololens入门之空间锚与场景保持 示例的基础上进行修改开发,实现语音听写的功能,并用Text显示识别结果。
1、新建UI Text,用于显示识别结果
2、在Manager上新增脚本组件DictionManager.cs
新增脚本并将 Text 拖拽到Dictation Display上
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.Windows.Speech;
using System;
using System.Text;
public class DictionManager : MonoBehaviour {
[Tooltip("A text area for the recognizer to display the recognized strings.")]
public Text DictationDisplay;
private DictationRecognizer dictationRecognizer;
// Use this for initialization
void Start () {
dictationRecognizer = new DictationRecognizer();
//订阅事件
dictationRecognizer.DictationHypothesis += DictationRecognizer_DictationHypothesis;
dictationRecognizer.DictationResult += DictationRecognizer_DictationResult;
dictationRecognizer.DictationComplete += DictationRecognizer_DictationComplete;
dictationRecognizer.DictationError += DictationRecognizer_DictationError;
dictationRecognizer.Start();
}
private void DictationRecognizer_DictationError(string error, int hresult)
{
DictationDisplay.text = "error";
}
private void DictationRecognizer_DictationComplete(DictationCompletionCause cause)
{
DictationDisplay.text = "complete:";
//如果在听写开始后第一个5秒内没听到任何声音,将会超时
//如果识别到了一个结果但是之后20秒没听到任何声音,也会超时
if (cause == DictationCompletionCause.TimeoutExceeded)
{
//超时后本例重新启动听写识别器
DictationDisplay.text += "Dictation has timed out.";
dictationRecognizer.Stop();
DictationDisplay.text += "Dictation restart.";
dictationRecognizer.Start();
}
}
private void DictationRecognizer_DictationResult(string text, ConfidenceLevel confidence)
{
DictationDisplay.text = "result:";
DictationDisplay.text += text;
}
private void DictationRecognizer_DictationHypothesis(string text)
{
DictationDisplay.text = "Hypothesis:";
DictationDisplay.text += text;
}
// Update is called once per frame
void Update () {
}
void OnDestroy()
{
dictationRecognizer.Stop();
dictationRecognizer.DictationHypothesis -= DictationRecognizer_DictationHypothesis;
dictationRecognizer.DictationResult -= DictationRecognizer_DictationResult;
dictationRecognizer.DictationComplete -= DictationRecognizer_DictationComplete;
dictationRecognizer.DictationError -= DictationRecognizer_DictationError;
dictationRecognizer.Dispose();
}
}
3、编译设置
由于语音听写功能需要用到microphone和网络,所以编译生成工程时添加microphone和网络选项
4、运行测试
当说出"what can i do for you"时,在屏幕上打印相应的文字信息
如果在听写开始后第一个5秒内没听到任何声音,将会超时
如果识别到了一个结果但是之后20秒没听到任何声音,也会超时
本文中超时后立马再次启动听写功能
5、遗留问题
未找到语言设置,不知道是不是还不支持听写中文,如果有读者发现可以进行语言设置,希望能够给出答复
更多推荐
所有评论(0)