您好, 访客   登录/注册

基于Leap Motion手语语音转换的设计与实现

来源:用户上传      作者:姜檬 郭仁春 李俊龙 王志淳

  摘   要:文章介绍了基于Leap Motion手语语音转换的原理以及在实际中如何实现应用,其能够将手语手势翻译成所需语言,并且以语音的形式传递消息,实现为聋哑人“发声”的目的。Leap Motion手语语音转换的硬件部分采用Leap Motion体感控制器,能够实时采集人手指的坐标、加速度、方向等动态手势的运动信息。软件采用Unity 3D三维引擎,提供了开发手势识别的SDK,并给出了一些基本手的模型,在Unity 3D中完成由手势到文字,再到语音的转换。
  关键词:动态手势识别;厉动;Unity 3D
  1    手势识别
  手势识别是手语语音转换的首要步骤,包括手势的采集与手势识别。手势的釆集广泛使用的方法有数据手套[1]、专业的视频釆集摄像机等[2]。而手势识别的研究方向有两个:一个是静态手势识别,另一个是动态手势识别。静态手势识别始于20世纪初,主要利用获取到的单个时间点的手势图像中手的形状、手指的姿态等信息进行手势表达含义的识别[3]。相比于静态手势识别,动态手势识别要稍晚一些,需要对连续一段时间的手势图像信息进行图像处理,通过获取处理后的连续时间内手、手指的位置、速度等数据信息来识别手势表达的意义[4]。
  本文提出的基于Leap Motion的手语语音转换是基于视觉(图像)的手势识别系统[5],采用的手势识别系统是Leap Motion体感控制器,是支持C#语言的三维引擎,且提供了手势开发的软件开发工具包(Software Development Kit,SDK),为手势定义成文字提供了便利条件。本文是使用C#语言对手语语音转换进行开发的。
  2    Leap Motion手语语音转换的原理
  2.1  Leap Motion功能介绍
  本文采用的Leap Motion是Leap公司最新研发的体感控制器,是一款微米级3D手动交互设备,十分小巧且应用广泛。当手在传感器上方活动时能够实现对手和手指的运动追踪。能够追踪到一个人10根手指的三维坐标信息且位置精度高达0.01 mm,具有150°的超宽幅空间视场,能够以高达每秒200帧以上的速度追踪一个人的手部移动。延迟比显示器的刷新率还要低,特别适合做手语翻译器。
  Leap Motion内置两个红外摄像头,从不同角度捕捉两张画面,重建出手掌在真实世界三维空间的运动信息。检测的范围大体在传感器上方25~600 mm之间,检测的空间大体是一个倒四棱锥体。
  Leap Motion的系统采用了右手笛卡尔坐标系,返回的数值都是以真实世界的毫米为单位。如图1所示,原点在Leap Motion 控制器的中心,X轴和Z轴在器件的水平面上,X轴和设备的长边平行,Z轴和短边平行。Y轴是垂直的,以正值增加形式朝上。
  Leap Motion能够实时监测信息。使用过程中,Leap Motion传感器会定期发送关于手的运动信息,每份信息称为“帧”,Leap Motion传感器会给所有手指手掌的列表和信息分配一个唯一标识(ID),在手掌、手指或手持的工具保持在视野范围内时,不会改变。一旦手从设备的视野中丢失,再次被发现时就会重新为视野中的手分配一个全新的ID号。
  2.2  Leap Motion手语语音转换设计原理
  本文对Leap Motion手语语音转换的研究分为5个部分,即真实世界的手势、手势识别、屏幕中的模型手、自定义手势代表的文字、文字转化成语音,如图2所示。
  以“耶”的手势为例,当Leap Motion设备安装完成并运行之后,在镜头视野范围之内做“耶”的手势,如图3(左)所示。手的姿态通过红外摄像头采集到电脑上,形成如图3(中)所示的红外图像,由于是双红外摄像头,会形成两张视角有一定偏差的图像,根据这两张图像,可以计算出手姿态的三维信息,包括手指、手掌的位置、速度、方向和加速度。将数据传给系统提供的三维手模型,屏幕上就会同步出现一个虚拟的三维手,如图3(右)所示,其动作与真实手基本一致。
  要自定义手势代表的文字,调用Unity 3D中提供的手势开发的SDK,编写程序对“耶”的手势定义成文字并在屏幕中展示该文字。最后将文字转化成语音,利用系统自带的语音库Speechlib方法将文字转化成语音,运行代码,就会有“耶”的声音发出。
  3    在Unity 3D中实现手语、文字和语音的转换
  3.1  手势实现的原理
  将a定义为右手拇指第三指节的长度,将此长度设置为参考长度。当手指指尖与手掌中心的距离大于3个参考长度规定为张开手指,当手指指尖与手掌中心的距离小于1个参考长度规定为握住手指。用参考长度作为判据,分别计算各个手指的指尖到手掌中心的距离,就可以识别手的某一姿态,如图4(左)所示。
  例如手势“耶”的定义是:食指、中指指尖与手掌中心的距离大于3个参考长度,即b>3a。拇指、无名指、小指指尖与手掌中心的距离小于1個参考长度,即c<a,如图4(右)所示。将这个手势利用代码规定为汉字“耶”。同理可以定义其他文字,如“你”“OK”“棒”等,如图5所示。
  3.2  手势转换成文字的实现过程
  下载并安装Leap Motion设备的SDK及驱动软件,之后插入Leap Motion设备,电脑右下角状态栏会显示“Leap Motion Controller is on”,此时硬件安装完毕。确保可以正常使用Leap Motion设备之后,在Unity 3D中定义各种手势所代表的文字。运行程序后将真实手势放在Leap Motion设备的识别范围内,屏幕中会出现与真实手相同手势的模型手,相应的文字同时显示在屏幕上。   3.3  文字到语音的转换
  Speechlib是Windows系统自带的语音库。将下载的Interop.SpeechLib.dll粘贴到unity中新建的Plugins文件夹下,即可将此语音库引入Unity中。在编译环境中输入‘using SpeechLib;’这段代码后,即可引入支持语音合成(Text to Speech,TTS)的核心类:SpVoice类。通过SpVoice对象调用TTS引擎。
  具体实现以“耶”的手势为例,当满足“耶”的手势之后,实例化一个SpVoice对象v,调用该对象的Speak函数v.Speak(“耶”),系统就可以发出该手势所对应的声音了。
  4    结语
  本文首先介绍了Leap Motion的基本功能,接下来给出了手语语音转换实现的基本步骤,即硬件应用Leap Motion在Unity 3D的环境下对手势进行编程、定义手势、转换成语音,基本实现了手势到语音的转换。
  [参考文献]
  [1]王鵬.动态手势识别研究[D].大连:大连理工大学,2013.
  [2]SHUKLA J,DWIVEDI A.A method for hand gesture recognition[C].Bangkok:Fourth International Conference on Communication Systems & Network Technologies IEEE,2014.
  [3]HASANUZZAMAN M D,ZHANG T,AMPORNARAMVETH V,et al.Adaptive visual gesture recognition for human-robot interaction using knowledge-based software platform[J].Robotics and Autonomous Systems,2007(1):643-657.
  [4]任磊.基于Leap Motion的动态手势识别研究[D].大连:大连理工大学,2015.
  [5]杨全,彭进业.基于深度图像信息的手语识别算法[J].计算机应用,2013(10):2882-2885.
  Design and implementation of voice conversion based on Leap Motion sign language
  Jiang Meng, Guo Renchun, Li Junlong, Wang Zhichun
  (Shenyang University of Chemical Technology, Shenyang 110142, China)
  Abstract:This paper introduces the principle of sign-language conversion based on Leap Motion and how to implement it in practice. It can translate gestures into the required language and transmit messages in the form of speech, so as to achieve the purpose of “voice” for deaf-mute people. The hardware part of sign-language speech conversion based on Leap Motion uses motion-sensing controller called Leap Motion, which can collect the motion information of the finger’s coordinate, acceleration, direction and other dynamic gestures in real time. The software uses Unity 3D engine,  provides an SDK for developing gesture recognition, as well as some basic hand models for converting gestures to text and then to speech in Unity 3D.
  Key words:dynamic gesture recognition; Leap Motion; Unity 3D
转载注明来源:https://www.xzbu.com/8/view-15197621.htm