在Unity中使用Vosk实现语音识别
在Unity中使用Vosk实现语音识别
·
集成步骤
- 导入vosk-untiy-asr至项目
在Github上下载vosk-unity-asr,解压后将下图三个文件夹复制到自己的项目中

- 下载语言模型
有两个语言模型可供下载,以轻量级语言模型vosk-model-small-cn-0.22.zip为例,下载后放入Assets\StreamingAssets文件夹下

- 新建空对象,挂载相关脚本,设置如下

VoiceProcessor:输入音频处理脚本
VoskSpeechToText:语音转文字脚本
VoskResultText:根据识别结果执行对应逻辑脚本
问题及解决
-
改为中文的模型包之后运行闪退
原因:值填写不正确导致
解决:值填写为:
vosk-model-small-cn-0.22.zip -
找不到指定文件
解决:将VoskDialogText.cs的Say方法中的代码注释掉

功能模块
根据识别结果执行对应逻辑
-
注册当获得识别结果时的回调
此回调提供了语音识别结果字符串
voskSpeechToText.OnTranscriptionResult += OnTranscriptionResult; -
正则表达式匹配
导入包
using System.Text.RegularExpressions;实例化
Regex hi_regex = new Regex(@"你好"); -
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; } // 在此处添加其他正则表达式匹配情况 } }
更多推荐
所有评论(0)