Unity技术VR/AR分享

语音识别的引入

2019-06-25  本文已影响11人  风烟流

使用百度的SDK来进行语音识别,链接:

洪流学堂公众号二次开发的SDK

(非利益相关)

导入进Unity3d中,下面我们分析如何通过结果分支控制交互反馈。

这个包封装了百度的语音识别和语音合成,在此不作结构分析,打开AsrDemo.cs脚本,找到OnClickStopButton()并修改成如下所示:

public void OnClickStopButton()

    {

        StartButton.gameObject.SetActive(false);

        StopButton.gameObject.SetActive(false);

        DescriptionText.text = "处理中";

        Microphone.End(null);

        Debug.Log(Message);

        var data = Asr.ConvertAudioClipToPCM16(_clipRecord);

        StartCoroutine(_asr.Recognize(data, s =>

        {

            logic(s);

            StartButton.gameObject.SetActive(true);

        }));

    }

我们在协程中添加一个方法logic(s);这个方法如下图:

名称随意

实际上,s.result[0]在协程中记录了从云端拿到的识别结果,我们只要对这个结果做逻辑判断即可分情况调用不同方法。

提示:这里的判断条件可以引入ExcelReader,用一个Similarity变量记录字符串比对方法的相似度,当识别到的结果与预设结果相似程度超过阈值,就判定为该指令,做出对应反馈,这种方式能够应对使用者不受控制的语音指令,比如预设是“你好。”,而使用者说的是“你好啊。”的情况,这个思路和方法引用自CSDN

下图是Start部分:

在此,考虑到脚本中的交互触发都是以Button为基础的,因此为了减少修改量,我们应该在场景中使用UGUI来交互,这里是另一个大坑,主要在下一篇文章中阐述。

上一篇下一篇

猜你喜欢

热点阅读