(个人)VR太极拳学习系统-创新实训第二周(1)

语音控制系统实现方案改变

上次说到了ue4中实现语音控制系统需要先获取语音输入,然后再进行处理,而获取麦克风输入有三种途径。这一周我先尝试了使用网络子系统下的语音模块,但是照着youyube上一个视频来做却并没有成功,因为视频中展示的代码并不完整。
经过与其他成员的讨论,我发现我的思考方式有些问题,我将该系统的实现步骤分为三部,是以自己从头开发为前提来考虑的,没有想到还有利用现有插件的方式。所以发现了可以使用sphinxUE4这个插件来实现语音控制之后,我就决定放弃之前的方案,转而使用该插件。

sphinxUE4配置

首先将sphinxUE4的示例工程下载下来,然后将项目根目录下的plugins文件夹和content文件夹下的model文件夹复制到自己项目的对应目录下。plugins文件夹中就是插件本体,而model文件夹中 存放的是识别各个语言所需要的字典、语法文件等,如下图所示:
model文件夹的内容
在虚幻的项目文件上右击打开菜单,选择生成vs工程文件
生成vs工程文件
打开生成的vs解决方案,重新编译一遍,然后打开虚幻编辑器,在edit菜单下选择plugin子项,打开插件面板,
打开插件面板
然后启用Speech Recognition Plugin插件
启用Speech Recognition Plugin插件
接下来就可以在蓝图中使用该插件的功能了。

sphinxUE4测试

要使语音控制生效,需要先在需要的蓝图中生成一个SpeechRecognitionActor并保存其引用。
生成SpeechRecognitionActor
然后绑定一个函数到该actor的OnWordsSpoken事件,该事件在每次检测到用户语音输入时会发生。
绑定事件
接下来调用该actor的init函数以进行初始化,若初始化成功,就需要设置参数了
初始化
这里我使用的参数是作者推荐使用的参数,具体作用还不明确
这里写图片描述
最后,设置工作模式。根据我们项目的情况,使用关键字模式足以
设置使用关键字模式
这里我只添加了一个关键字start用来测试
我们可以在之前绑定到OnWordsSpoken事件上的函数中处理用户输入
处理用户输入
处于测试目的,我实现的逻辑很简单,当听到用户说出start之后,就打印一行字符串到屏幕上

下面就可以在场景中放置一个我们测试用的类的实例,用来测试功能是否正常
初始化成功
点击开始,视口左上角输出语音模块初始化成功,然后对着麦克风说出关键字start
识别成功
可以看到该插件正确识别了关键字。

一个小问题

当我测试完毕退出运行状态时,虚幻编辑器崩溃了,显然是由该插件造成的,查看插件说明后发现当持有speechrecognitionactor实例的actor在被销毁之前需要调用speechrecognitionactor实例的ShutDown方法,否则就会导致崩溃的发生。所以只需要在EventEndPlay事件发生时调用该方法即可
调用ShutDown
修改之后再次测试,崩溃没有发生。

猜你喜欢

转载自blog.csdn.net/dying_isaac/article/details/79936465