林海音吧 关注:1,075贴子:2,820
  • 1回复贴,共1

手势识别和语音识别在人机交互方面的研究与应用

只看楼主收藏回复

[摘要]随着AI产业的迅猛发展,世界各国研究人员都在重点研究新型的人机交互技术。本文重点介绍手势识别与语音识别在人机交互方面的结合应用。系统采用stm32f103zet6作为总处理器。在手势识别方面,利用微软公司推出的Kinect设备进行手势信息的收集和处理,然后通过数据库的匹配,让手势信息转换为预定的语音信息进行对外输出;在语音识别方面,采用LD3320非特定人语音识别芯片,STC11L08XE作为语音接收端分处理器暂存、处理来自LD3320语音芯片的数据,系统将语音信息进行处理,转换为数据库里的图片信息进行对外展示。这样,以实现简单的人机交互。
[关键字]人机交互 手势识别 语音识别 Kinect深度开发
引言
人机交互是集电子技术、数据处理、视觉分析、语音识别、手势识别、大数据、数据库匹配、心理学、语言学、材料学等研究领域与学科为一体的综合系统。从计算机开始的鼠标键盘,到后来智能手机、平板电脑的电阻、电容式触摸屏,再到如今前沿的手势识别、语音识别、VR技术。随着人机交互领域的技术革新,人类的生活、生产方式也发生这重大的改变,凸显出人机交互的过程中机器服务于人类的思想[1]。在现代人机交互发展的过程中,如何让系统准确的进行人类手势的识别和语音的识别,成为了目前急需解决的问题。所以,手势识别方面,本文采用到微软Natal计划中的Xbox360游戏控制器Kinect,其利用深度信息对手势进行准确的识别,增加了视觉手势识别系统的灵活性和实时性[2];语音识别方面,本文采用ICRoute推出LD3320非特定人语音识别芯片作为主要语音识别芯片,并加以语音校验起始程序,以减少环境杂音的干扰,提高语音识别的准确率。
1. 手势识别1.1 手势识别基本原理简述
人手是一个自由度很高的非刚性物体,不同手势及相异个体间存在差异较大。目前基于视觉的手势识别系统主要分为两种:第一种系统的主要识别依据为手部区域的几何特征,如手指的轮廓;第二种系统则根据非几何特征来实现识别,如手指运动轨迹。第一种系统属于静态手势图像识别,通过识别手势中特征点在图像中的相对位置来实现手势识别;第二种系统属于动态手势识别,通过识别手势特征点在时间段内的运动轨迹来完成手势的识别。动态手势识别的难点主要是动态手势“滤波”以及在该有效段内手特征点运动轨迹的合理选择和选择轨迹的时间、空间域内的测算、识别。动态手势“滤波”的意义在于将有意义的动作过滤保留滤除无意义的中间过渡动作,有利于提高手势识别的速度[3]。
为了从复杂背景下分离出有效的手势动作,提高Kinect手势三维信息录入的精确性。本文设计基于Kinect深度开发的虚拟装配交互技术实现在OpenCV环境下自然方便的人机交互系统[4]。
1.2 程序基本流程
(1)首先通过Kinect每0.25s提取一次二维图像以及图像深度特征信息,通过算法对二维图像信息进行手形提取、计算特征点(如指尖,关节)到掌心的距离并与图像深度特征结合,得到三维空间上各个特征点的位置信息,用于后期识别手势信息。
(2)然后将时间段内各个点的三维空间位置信息组合,得到点的四维信息即时间轴上的三维空间上点的移动轨迹。
(3)最后将得到的数据,即n个手势状态信息带入隐马尔可夫统计模型[5]来对轨迹进行分类,识别出手势。
1.3设计优化
由于图形数据量大、计算复杂,因此不能达到很好的准确性及实时性。所以我们采用给予特定几个点较高的权重作为主要识别点的方法,以此增加计算过程中较高权重点的影响力,选择性的忽略权重较低点的影响,简化计算难度。并结合Kalman滤波来尽可能实现屏蔽干扰,再进行判别、计算特殊点的轨迹以求达到预期目的[6]。手指权重点指定如图1.1所示
图1.1 手指权重点指定图
1.4实现效果及分析
在静态手势识别实验中,如果外界环境干扰较小,对于常用的手势表达(如:数字一、二、三等)在不同人和不同距离(有效范围内)下的识别成功率基本可以保持在89%。但是在动态识别试验中识别成功率却大大减小,例如在半空中画图的测试中识别画方形的成功率只有识别画圆形成功率的24%左右。在查看分析数据后发现在动态识别试验中提取的点的有效性明显不足,一些关键位置出现在两个提取时间点之间,导致无法得到特征点的可靠数据,使得计算的轨迹不够连贯甚至是错误最终导致识别错误。而且不同光线亮度、不同背景也给实验结果带来了一定的影响。
由于kinect识别的局限性,目前该设备只针对一些简单的手势以及手臂主要关节的动作语言加以识别、处理。通过对简单手势的配合以及关节间的相对位置、角度进行实时捕捉,将所识别的信息数字化处理,即针对每个不同的肢体语都会在不同的对应参数上有所反应,将处理后的参数同语言参数库数据进行一一
对比,最终找到参数允许误差范围内的文本意义并传值暂存。由于设备识别的限制以及大数据检索不可避免的时间延时,目前该设备的手语识别部分只能对少数有明显特征的动作进行精准识别,对于特定的动作识别正确率可保持在70%到80%之间。该部分以Visual Studio 2017为开发工具,设计手势操控相关功能块的编辑后集成于OpenCV环境中,实现手势在虚拟装配中的交互控制[7]。
Kinect颜色数据显示图如图1.2所示,Kinect深度数据显示图如图1.3所示
图1.2 Kinect颜色数据显示图 1.3 Kinect深度数据显示图
利用Kinect提供二维图像和深度信息,简化目标检测内容,通过RRT法和梯度投影法相结合提取用户图像的颜色、深度、骨骼数据并加以处理,拆分出复杂环境下的手势动作[8],并通过OpenCV显示。实验图像如图1.3所示
图1.3 Kinect骨骼数据显示图
2.语音识别 2.1 语音识别基本原理简述
语音识别是目前信息技术领域研究的热点、难点问题,它的目的就是实现人与机器的自然语言交互,从而摆脱键盘和鼠标等设备的束缚,使机器人实现直接和人类进行语言的交流。它减少计算机的输入输出终端,比如显示器、键盘、鼠标。嵌入式的语音识别系统将使设备进一步的小型化和隐蔽化,这符合未来智能机器的要求。小型化和便于移植的性能将使得嵌入式系统能够应用于诸多领域[9]。
语音识别过程主要包括两个阶段:特定语音保真录入和语音特征参数识别。
在特定语音录入阶段所做的任务是能够尽可能的屏蔽外界干扰,定向的提取目的语音信息并做适当的补偿和信息完善。语音参数识别阶段是将录入的语音信息同特征参数数据库进行对比,在此之前还要建立用于与特征参数对比的数据库。即经过预处理和特征提取后得到特征参数,最后通过特征参数建模建立训练语音的参考模型库。通过参数的对比来实现语音信息的精准识别,并转换为相应的文字信息用于实现其他功能。
目前,语音识别技术按照识别对象的类型大体可以分为特定人和非特定人语音识别。特定人语音识别是指识别对象为专门的人,多用于语音密码锁等特殊情况下,非特定人是指识别对象是针对大多数用户,一般需要采集多个人的语音进行录音和训练,经过学习,从而达到较高的识别率。
2.2设计思想
在嵌入式应用领域,具有代表性的有凌阳的SPCE061A、I-CRoute的LD332X。本文的语音识别方案是以嵌入式微处理器为核心,外围加入非特定人语音识别芯片LD3320及相关电路构成。由于LD3320内部集成了快速稳定的优化算法,因此不需外接Flash和RAM等存储设备,同时LD3320也不需要用户事先训练和录音来完成非特定人的语音识别,因此LD3320的语音识别率比较稳定,准确率也比较高。LD3320实物图如图2.1所示
图2.1 LD3320实物图
本系统采用stm32f103zet6作为总处理器,用STC11L08XE作为语音接收端分处理器用于暂存、处理来自LD3320语音芯片的数据。stm32f103zet6系统实物图如图2.2所示
图2.2 stm32f103zet6实物图
将经过LD3320处理输出的信息经过STC11L08XE转换成中文拼音的形式存入单片机当中,通过简单的switch函数语句将特定的语音编码通过串口发送至STM32中用于后续控制等操作,这样既提高了信息的传输速率又大大减少了信息在传输过程中产生的偏差。系统实现方框图如图2.3
通过咪头读入 通过引脚输 串口通讯
出电平信息
图2.3 系统实现方框图
2.3整体程序设计
本系统采用中断方式工作,其工作流程分为整体初始化、语音识别初始化、等待语音录入、开始识别和响应中断等。
(1)整体初始化和语音识别用初始化:在初始化程序里,主要完成软复位、模式设定、时钟频率设定和FIFO设定。芯片复位是对芯片的第47脚(RSTB)发送低电平,然后需要对片选CS做一次拉低至拉高的操作,以激活内部数据处理模块。
(2)等待语音录入:在内部识别模块处于空闲状态时默认为等待外界语音信息输入状态,一旦有可用于识别的信息输入时便开始进行信息收入用于识别
(3)开始识别:设置若干个相关的寄存器,即可开始语音识别。ADC通道即为麦克风输入通道,ADC增益亦即麦克风音量,可设定 值00H-7FH,建议设置值为40H-6FH,值越大代表MIC音量越大,识别启动越敏感,但可能带来更多误识别;值越小代表MIC音量越小,需要近距离说话才能启动识别功能,其好处是对远处的干扰语音没有反应。
(4)响应中断:如果麦克风采集到声音,不管是否识别出正常结果,都会产生一个中断信号。而中断程序要根据寄存器的值分析结果。读取BA寄存器的值,可以知道有几个候选答案,而C5寄存器里的答案是得分最高、最可能正确的答案。
2.4优化设计
为了解决在噪音较大的场合语音无法做出准确识别的问题,我们特意为机器人内部的语音识别程序加入了语音校验起始程序,无论在任何地点,只要通过正常的语音验证程序,系统将会进行自动矫正音频以适应周围环境,并对后期的语
音输入进行修饰、补偿使其能够被快速准确的识别出来。语音识别实验现象如图2.4所示
图2.4 语音识别实时效果图
3.手势识别与语音识别的中央交互处理
手语、语音和文字都有一个共同的特点:皆是信息的载体,记录和传递信息。所以计算机对手语、语音的翻译与计算机对自然语言的翻译有相通之处。早期语言翻译是基于语法规则的文法分析,在文法分析中过于依赖对下文的理解,此方式的语言翻译较为复杂,并且当自然语言语法概括全面、句子容量较大时,可能导致一些文法规则编写到后期出现自相矛盾的现象[10]。
为了解决基于语法规则分析语句困难的问题。运用统计学的方法来描述语言规律的思路是简单有效的——即一个句子是否合理就看它出现的可能性大小。假设S表示某一有意义的句子,有一系列特定顺序的词w1,w2,w3,...,wn组成,则S的概率P(S)表示为:
利用条件概率公式可得:
为了简化计算,采用三元的马尔科夫假设计算的概率:
首先在数据库中计算出这对词出现的次数,以及这个词出现的次数,用两个数分别除以数据库的大小,得到三元组的相对频度。
根据大数定理,当统计量足够大时,相对频度等于平率。
所以可求得:
通过这种数学模型计算出所得信息的概率,能够解决复杂的语音识别、机器翻译的问题[11]。本文采用这种方法来进行手语识别与语音识别的交互处理,并且利用大数据来供给数据库进行计算分析,通过计算机模拟仿真,反馈出交互的准确率和问题所在处,及时的修正识别方面存在的严重错误并加入正确的回应数据。同时对于不同的应用场所可以针对性的加入大量常用数据来提高识别和回应的合理化。
结论:
本文研究设计基于kinect深度开发的手势识别、语音识别的人机交互系统,通过基于kinect图像处理技术收集和预处理手势信息,再通过隐马尔可夫统计模型得到较为准确的手势识别信息,经过中央处理器的信息处理,翻译出数据库里对应的语言并播放;通过语音识别算法识别自然语言,通过数据模型进行数据库的匹配,显示出相应手势画面,进而实现实时的人机交互。实验现象证明该人机交互系统可以实现特定环境下的实时交流,达到了最初设计预想。本人机交互系统可基本满足聋哑人与正常人的简单交流需求,增加特殊人群与正常人交流的可能性。将来我们会对该人机交互系统继续改进,加强Kinect的深度开发,提高手势识别的准确率和抗干扰率;采用更优的算法,实现更高的转换率;继续完善数据库,细化动作的种类,并且增加机器深度学习功能,使该人机交互系统可运用到节目双语播放、虚拟人研究、电影制作中的特技处理、动画制作、医疗研究、游戏娱乐等诸多方面。
参考文献:
[1]刘阳.基于Kinect的手势识别技术研究.重庆大学.2014.
[2]石曼银.Kinect技术与工作原理的研究.哈尔滨师范大学自然科学学报,2013.
[3]唐向阳,张勇,李江有等.机器视觉关键技术的现状及应用展望[J].昆明理工大学大学学报(理工版),2004.
[4]张诗潮.基于Kinect的手语教学系统设计研究.华东师范大,2014.
[5]黄文静,马力.基于Kinect手势识别的研究与应用.电子设计工程,2017.12.
[6] 郑斌珏.基于Kinect深度信息的手势识别.杭州电子科技大学,2014.03
[7]段峰,王耀南,雷晓峰等.机器视觉技术及其应用综述[J],自动化博览,2002(3):59-62.
[8]刘焕军,王耀南.机器视觉中的图像采集技术[J].电脑与信息技术,2003(1):18-21.
[9]吴广玉,姜复兴编.《机器人工程导论》哈尔滨工业大学出版社1988,TP242/17
[10]夏德深,傅德胜.现代图像处理技术与应用[M].南京:东南大学出版社,2001:80-100.
[11]卢官明,区域生长型分水岭算法及其在图像序列分割中的应用[J],南京邮电学院学报(自然科学版),2000,20(3):5-54.


1楼2018-03-30 15:28回复
    楼主 图呢


    来自Android客户端2楼2020-03-17 21:42
    回复