Unity 中使用Windows语音识别功能

Unity 中使用Windows语音识别功能_第1张图片

怎么样在Unity中调用Windows的语音识别API呢?

语音识别逻辑:

(1)开始语音识别

(2)获得语音识别结果

(3)将语音识别结果显示在Unity的Text文本中

前置条件:

打开Windows的语音识别功能

Unity 中使用Windows语音识别功能_第2张图片

1,Unity中创建开始按钮和停止按钮,以及两个文本

Unity 中使用Windows语音识别功能_第3张图片

2,创建以下脚本,且进行挂载,添加实例。

//需要在windows的辅助功能中打开语音识别

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Windows.Speech;
 
public class DictationScript : MonoBehaviour
{
    public Text hypothesesText;//显示输入过程中猜想结果的
    public Text recognitionsText;//显示识别结果的
    public Button startBtn;
    public Button stopBtn;
 
    private DictationRecognizer dictationRecognizer;
 
    void Start()
    {
        dictationRecognizer = new DictationRecognizer();
 
        dictationRecognizer.DictationResult += OnDictationResult;
        dictationRecognizer.DictationHypothesis += OnDictationHypothesis;
        dictationRecognizer.DictationComplete += OnDictationComplete;
        dictationRecognizer.DictationError += OnDictationError;
 
        //dictationRecognizer.Start();
        startBtn.onClick.AddListener(DictationStart);
        stopBtn.onClick.AddListener(DictionStop);
    }
 
    private void OnDestroy()
    {
        dictationRecognizer.Stop();
        dictationRecognizer.Dispose();
    }
 
    /// 
    /// 语音识别结果
    /// 
    /// 识别结果
    /// 
    private void OnDictationResult(string text, ConfidenceLevel confidence)
    {
        Debug.LogFormat("识别结果: {0}", text);
        recognitionsText.text = text;
 
        DictionStop();//我是希望得到结果就自动停止输入
    }
 
    /// 
    /// 语音输入过程中对结果猜想时触发的事件。
    /// 
    /// 识别猜想
    private void OnDictationHypothesis(string text)
    {
        Debug.LogFormat("识别猜想: {0}", text);
        hypothesesText.text = text;
    }
 
    private void OnDictationComplete(DictationCompletionCause cause)
    {
        if (cause != DictationCompletionCause.Complete)
            Debug.LogErrorFormat("识别失败: {0}.", cause);
    }
 
    private void OnDictationError(string error, int hresult)
    {
        Debug.LogErrorFormat("识别错误: {0}; HResult = {1}.", error, hresult);
    }
 
    /// 
    /// 开启听写识别会话
    /// 
    public void DictationStart()
    {
        dictationRecognizer.Start();
        startBtn.gameObject.SetActive(false);
        stopBtn.gameObject.SetActive(true);
    }
 
    /// 
    /// 结束听写识别会话
    /// 
    public void DictionStop()
    {
        dictationRecognizer.Stop();
        startBtn.gameObject.SetActive(true);
        stopBtn.gameObject.SetActive(false);
    }
 
}

你可能感兴趣的:(GamePlay,语音识别,人工智能,unity,c#)