语音识别的引入

作者: 风烟流 | 来源:发表于2019-06-25 23:06 被阅读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来交互,这里是另一个大坑,主要在下一篇文章中阐述。

    相关文章

      网友评论

        本文标题:语音识别的引入

        本文链接:https://www.haomeiwen.com/subject/ckhfcctx.html