集成步骤

  1. 导入vosk-untiy-asr至项目
    在Github上下载vosk-unity-asr,解压后将下图三个文件夹复制到自己的项目中
    在这里插入图片描述
  2. 下载语言模型
    有两个语言模型可供下载,以轻量级语言模型vosk-model-small-cn-0.22.zip为例,下载后放入Assets\StreamingAssets文件夹下
    在这里插入图片描述
  3. 新建空对象,挂载相关脚本,设置如下
    在这里插入图片描述
    VoiceProcessor:输入音频处理脚本
    VoskSpeechToText:语音转文字脚本
    VoskResultText:根据识别结果执行对应逻辑脚本

问题及解决

  1. 改为中文的模型包之后运行闪退

    原因:值填写不正确导致

    解决:值填写为:vosk-model-small-cn-0.22.zip

  2. 找不到指定文件
    解决:将VoskDialogText.cs的Say方法中的代码注释掉
    在这里插入图片描述

功能模块

根据识别结果执行对应逻辑

  1. 注册当获得识别结果时的回调

    此回调提供了语音识别结果字符串

    voskSpeechToText.OnTranscriptionResult += OnTranscriptionResult;
    
  2. 正则表达式匹配

    导入包

    using System.Text.RegularExpressions;
    

    实例化

    Regex hi_regex = new Regex(@"你好");
    
  3. OnTranscriptionResult 对应的注册事件中实现根据识别结果执行对应逻辑

    private void OnTranscriptionResult(string obj)
    {
    		// 打印识别结果
        Debug.Log(obj);
        var result = new RecognitionResult(obj);
        foreach (RecognizedPhrase p in result.Phrases)
        {
    				// 去除空格
            var asrText = p.Text.Replace(" ", "");
            if (hi_regex.IsMatch(asrText))
            {
                Debug.Log("你好,我是小智");
                break;
            }
    		// 在此处添加其他正则表达式匹配情况
    	}
    }
    
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐