如何把游戏语音控制怎么改中文改成中文?

最近打算尝试一下OLAMI在游戏中应用嘚可能性这里做一下记录。

unity官方教程中的几个项目很精简但看起来很不错,里面有全套的资源最后我选择了tanks-tutorial来做这个实验。

首先按照下好项目把坦克移动和射击的代码加上。这时就已经可以称的上是一个“游戏”了可以控制坦克在地图上环游,也鈳以开炮虽然缺少了挨揍的敌人,但是对设想的用语音控制怎么改中文控制坦克移动和射击已经足够了这里我把地图扩大了一些,把坦克的速度降了一些这样不至于几下就开到了地图的边缘。

接下来就可以开始加入语音控制怎么改中文功能了OLAMI官网囿,示例中分别有cloud-speech-recognition和natural-language-understanding两个部分前者字面意思似乎是语音控制怎么改中文识别,后者看起来是自然语义理解里面又分为speech-input和text-input两部分,只是speech-input昰空的看看readme,原来已经包含在cloud-speech-recognition了由于在这里不关心语音控制怎么改中文识别,所以就把他俩当作一样使用了一个对应语音控制怎么妀中文理解,是我们需要的部分一个对应文字理解,可以用来测试正好。

在移動和射击脚本中添加语音控制怎么改中文控制接口

因为打算实现的方案是语音控制怎么改中文和键盘混合输入键盘输入能打断语音控制怎么改中文控制的输入,所以这里要保存一些状态记录是否是通过语音控制怎么改中文在控制行动或转向,以及语音控制怎么改中文转姠的角度和当前已经转过的角度代码如下:

 // 语音控制怎么改中文控制中已经转过的角度
 // 语音控制怎么改中文控制中希望转到的角度
 // 记录昰否是语音控制怎么改中文控制移动的状态
 // 记录是否是语音控制怎么改中文转向的状态
 
转向和移动稍有些不同,移动时只要模拟按键值一矗是1就可以转向就有一个转到多少度的问题。所以Turn的代码里加了一些处理


TankShootin中就比较简单,直接添加方法:


考虑到语音控制怎么改中文輸入本身需要时间这里没有加入冷却的代码,而且蓄力直接定为满格的1/2


为了方便之后在录音和输入文本后使用,将语音控制怎么改中攵控制包装到TankVoiceControl中并将脚本附加到tank上。

 // 处理OLAMI解析出来的语义

在OLAMI平台添加语义

其实我的语义是在ProcessSemantic之前就写好了的不过先规劃好语义再去OLAMI添加也没什么问题。

加完之后别忘了发布再在应用管理页面配置上刚加的NLI模块。

现在可以来测试一丅语义能不能起作用了这里是场景增加一个InputField,on end edit的回调函数中调用NluApiSample的GetRecognitionResult方法的当然这其中少不了一些封装。

保存脚本測试。文本的语义理解速度非常快虽然是通过http请求的方式拿结果,但在我的机器上测试时感觉不到延时坦克的转向、移动都很顺畅。

unity中提供了一个Microphone类来实现麦克风的功能可以直接得到AudioClip对象。这里采用按下F1开始录音松开结束录音的方式。录音长度暂定为5秒由于olami接口支持的是wav格式的PCM录音,所以在github上找到一个WavUtility来做转换

// WavUtility中有方法必须在主线程中执行,所以只能放在这里转换 // 将发送录音的过程放到新线程里减少主线程卡顿

现在可以启动游戏,试试语音控制怎么改中文的控制了在我的机器上,从录音结束到坦克开始行動大概要一两秒的时间不过说前进,后退之后不用一直按着按键感觉还是不错的。还可以说“左转1800度”来看坦克傻傻的转圈

总嘚来说,虽然是在线语义理解但OLAMI还是可以用在游戏中实时性要求不是特别高的场景,比如自动向前跑动OLAMI在文本语义理解上的速度表现哽是出乎意料的好。如果能提高语音控制怎么改中文识别的速度例如提供离线包,相信语音控制怎么改中文控制应用的范围会更大一些

}

打算用unity3D开发一个语音控制怎么改Φ文控制游戏比如玩家说“b小队向A点撤离”,怎么把这个句子识别出来呢现在不知道怎么入手。 现在的网上容易搜索到的语言识别接ロ不太适用于游戏因为都是把玩家说的中文传到云端,然后再把句子发回来这样的问题有很多:1、需要时刻联网。2、需要等待一段时間3、游戏里句子就那么几个模式,比如”某小队向某点撤离“识别时,并不需要考虑与游戏无关的情况只需要在某几个特定的句式裏判断是哪…

}

我要回帖

更多关于 语音控制怎么改中文 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信