Kinect除了肢体动作捕捉的功能,还有语音识别功能,借助于语音识别,可以将识别后的语音转换为动作,这是一个很有想象力的功能,比如通过语音控制某些场景,实现人机交互。在这方面,2014年的7月到10月间的空闲时间里,我就曾利用开源的三维漫游程序QuakeBSP,综合Kinect的动作捕捉和语音识别,实现了三维场景的漫游功能,这个程序断断续续,边学边做前后历时三个月时间。
QuakeBsp开源代码可以在网上找到,这是使用OpenGL及DirectX开发的,基于该开源程序,我又扩展了2个窗口,整个程序界面共有如下3个窗口,
1.三维场景漫游窗口 | 2.Kinect体感显示窗口 |
3. 消息显示窗口 |
程序开始运行时显示3D场景窗口,该窗口是主窗口,使用OpenGL开发。
按F3可以显示/隐藏右侧Kinect窗口,该窗口用于捕捉并绘制人体骨骼,并可根据双手动作命令操纵主窗口实现漫游,使用DirectX开发。其双手动作命令如下:
a. 双手垂直向下,无命令。
b. 放下右手,向前伸左手向左划动,相机向左平移。
c. 放下左手,向前伸右手向右划动,相机向右平移。
d. 向前伸左右手,左手握拳,右手握拳,相机向前移动。
e. 向前伸左右手,左手握拳,右手张开,相机向后移动。
f. 向前伸左右手,左手张开,右手握拳,相机向左转动。
g. 向前伸左右手,左手张开,右手张开,相机向右转动。
h. 向前伸左右手,左右手合拢,相机向上跳跃;合拢后双手握拳再分开,可以登上台阶向前移动。
按F4可以显示/隐藏底侧消息显示窗口,该窗口用于显示操作信息,并可使用语音命令操纵主窗口实现漫游。由于Kinect语音识别功能对于中文的支持不是太友好,所以语音命令都是采用英文进行的,其语音命令如下:
a. “Forward”:相机向前移动。
b. “Back/Backward”:相机向后移动。
c. “Turn Left”:相机向左转动。
d. “Turn Right”:相机向右转动。
e. “Move Left”:相机向左平移。
f. “Move Right”:相机向右平移。
g. “Stop”:相机停止转动/移动。
在该程序中,对于一个动作,分别设置了肢体动作和语音命令,采用哪种方式可以由使用者自行决定,当然这只是一个个人爱好下的演示性程序,当程序开发完毕后,我还象征性的整理了一个技术文档,录制了视频并上传到优酷上,算是给这个程序画了一个完美的句号。
发表回复