您好, 访客   登录/注册

基于安卓的无声语音识别App的设计与开发

来源:用户上传      作者:乔波 王鑫 张恒玮 李泽恩 杨梦

  摘要:无声语音接口(silent speech Interface,SSI)是一种基于非声学信号的语音通信的系统,使得说话可以在不具备发声条件或背景嘈杂的环境下实现,在现代康复医疗和强噪声下语音交互等领域中被广泛研究和应用。该研究实现了基于表面肌电信号进行无声语音识别,并基于Android设计与开发了无声语音识别APP,实现了对简单文字的无声识别,能提供安全、私密、可靠的语音通信。
  关键词:表面肌电信号;无声语音识别;移动终端;Android;信号处理
  中图分类号:TP311.52 文献标识码:A
  文章编号:1009-3044(2020)06-0213-04
  1背景
  作为智能计算机研究的主导方向和人机语音通信的关键技术,语音识别技术一直受到各国科学界的广泛关注。随着语音识别技术日益成熟,应用产品相继被开发,然而语音识别技术本身仍存在一些固有问题。1)背景噪音。实际应用中,噪音是无法避免的,早期即使在实验室环境下,敲击键盘、挪动麦克风都会成为背景噪音。它将破坏原始语音的频谱,或者把原始语音部分或全部掩盖掉,造成识别率下降。2)没有隐秘性问题。传统的语音识别主要通过声音来进行,但是发出声音的同时不可避免地失去了隐秘性,这是无法避免的。研究将要解决的问题就是改变传递信息的方式,使系统的隐秘性提高。
  无声语音接口(Silent Speech Interface,SSI)是一种基于非声学信号捕获的,在安静或嘈杂环境中提供安全可靠语音通信的系统。它通过从人体语言产生过程的元素获取传感器数据,这些数据可以来自发音器,神经通路,或者大脑本身。依靠SSI可以通过非声学信号来获取说话者想表达的内容,使得交流可以在没有发出声音的情况下发生。表面肌电信号(Surfaceelectro-myogram,sEMG)是通过粘贴于人体皮肤表面的表面电极记录的生物电信号。由于该信号能够反映神经和肌肉系统的功能和生理状态,并且从人体皮肤表面获取,不会对人体造成损伤,因此在多个领域获得深入研究和广泛应用,例如疾病诊断、假肢控制、远程操作机器人、康复治疗等。早在1985年肌电信号就被用于无声语音识别的研究,但直到2001年才有突破性进展,chan等人使用肌电信号实现10个英文数字的识别正确率高达97%。之后大词汇量以及连续识别成了重点的研究对象,被实验证明肌电信号可以为识别提供足够的信息。基于肌肉信号的无声语音识别技术目前已趋入成熟和稳定,单国内外还未有推出市场应用。
  本文采用基于面部放置的传感器获取肌肉电信号(SEMG)的无声语音接口(SSI),实现了一个面部肌电信号采集及动作识别系统,该系统能够采集到微弱的表面肌电信号,经由安卓端的实现信号处理和识别应用。
  2基于安卓的无声语音识别系统设计
  该文基于Android应用开发技术,提出了无声语音识别系统的框架,开发了一款无声指令识别系统。本系统由硬件系统和软件系统两部分组成,如图1所示,硬件系统为信号采集设备,包括电源、驱动电路、放大电路和通信模块;软件系统为Android应用程序。本系统主要论述手机移动终端软件的设计,通过本软件用户可以进行无声指令识别,手机终端的程序主要包括三个功能:1)控制设备采集;2)接收设备采集数据并作数据处理;3)信号识别和结果显示。
  本系统包括四层架构,分别是用户访问层、应用层、服务层和数据层,如图2所示。数据层为用户管理,肌电信号识别和结果输出提供数据支持。服务层提供系统各项功能所需要的服务支持。应用层包括系统的四大功能,分别是:1)用户管理功能:用户管理模块用来提供与用户个人相关的信息和服务,包含注册、登录、个人信息等功能。登录,用户输入正确的用户个人注册信息,才可登录,否则,登录失败。用户登录后可进行用户识别模型管理,用户信号数据管理,用户指令文本编辑;2)信号录入功能。用户可以设定训练数据录入次数;点击录入开始新建记录:录入可以取消,取消后可继续录人,重新录人的数据将覆盖已有数据;3)信号处理和识别功能。在训练时,对录入数据进行信号处理,调用随机森林算法建立模型,在应用时,对实时输入的信号处理之后调用模型进行识别;(4)结果显示功能。在Android系统识别此次的信号识别后,输出对应指令。用户访问层是指用户通过访问系统的各个功能和数据,实现无声语音识别功能。
  系统的业务流程如图3所示。初次使用本系统的用户首先要注册账号,将用户名和密码写入数据库,然后通过硬件接收肌电信号,用户需要将0-9每个数字重复多遍录入,并将对应信号写入数据库,录入次数可由用户自定义,系统调用信号处理算法进行信号与处理后提取特征,调用识别算法进行训练生成识别模型。用户登录后可以查看、编辑编号0-9所对应的文本,在识别过程中首先接收测试肌电信号,调用信号处理算法得到特征后利用识别模型进行分类识别得到结果,输出结果对应文本内容。
  3关键技术研究及实现
  3.1数据库的设计与实现
  在本系统中,需要存储用户信息数据和肌电信号数据,其中用户信息数据通过数据库存储,肌电信号數据通过文件方式存储。数据库采用Android自带的轻量级小型的sOLite数据库,数据库中包含每个用户的账号密码信息和0-9对应的用户自定文本。每增加一个用户,就新建一张用户信息表,表名即为用户名,如表1所示。肌电信号数据传输时,数据以字节流从信号采集装置传输至手机端,之后再进一步向文件流转换,将转换结果以文件形式保存在本地。
  3.2数据传输模块
  设备通过5通道电极采集肌电信号数据,电极位置图如图4所示,其中信道1,3,4是单端信号,信道2和信道5是两对差分信号。电极使用了标准Ag/AgCl电极。实验前,用酒精清洗皮肤,然后将电极贴在皮肤表面。设备与手机之间使用Wi-Fi通信进行交互。Socket就是为网络服务提供的一种机制。Socket和ServerSocket建立客户端和服务器端建立连接后,通过Socket中的10流进行数据的传输关闭socket;同样,客户端与服务器端是两个独立的应用程序。本系统中,设备采集器即是服务端,App即是客户端;客户端明确服务器的ip地址以及端口(Socket s=new Socket(“192.168.4.1”,4321).),建立连接。连接成功后,先向设备发送访问码‘DDAA34’,然后再读取数据,通过Socket对象提供的输入流和输出流对象gctInputStream(),getOut-putSlxeam(1实现。读取结束后断开连接关闭Socket。   3.3肌电信号处理模块
  肌电信号的分析和处理是识别的重要前提和基础。本系统对sEMG信号的处理步骤如图5所示,包括信号预处理、有效信号段分割、信号插值处理、特征提取及优化、分类识别。在识别过程中,需要先对肌电信号进行预处理,去除信号中干扰以及冗余的信息成分,然后再提取信号的特征参数。预处理过程和特征参数的提取方法,会影响到语音识别率的准确度,如果无法提取出语音信号的特征,将会影响后续的训练过程,大大增加了识别的难度。语音信号的处理在整个信号识别的过程中具有重要的地位。
  3.3.1信号预处理
  由于表面肌电信号相对较弱,电力线干扰很可能造成严重的影响,掩盖了表面肌电信号本身的特性。本研究使用自适应陷波滤波器来恢复干扰,然后将其从被测信号中消除。sEMG的主要信息集中在20Hz-120Hz范围内,可利用带通滤波消除电力线信号的高次谐波和其他环境噪声保持20Hz-120Hz的信号。
  3.3.2有效信号段分割以及插值处理
  对于训练信号,本系统采用连续录入的方式,即用户输入训练数据录入次数N后设备开始采集信号,对0-9的每一个数字,用户将重复说N次,每次间隔1秒,所以一个记录将包含N段有效信号,需要将这些有效信号分割出来。本系统采用[Geof-frey S.Mehzner,Glen Colby,Yunbin Deng,and James T.Heaton]提出的算法,该算法整合了不同通道的状态信息判定是语音开始和结束。检测到肌肉处于活动状态后获得相应信号数据,由于用户说话的快慢不同,有效信号的长度也不一,一般有效信号的长度在200ms-400ms之间。为了规范化信号的长度,本研究使用线性插值将信号调整为每个通道400维的长度,使得数据可以利用机器学习分类算法进行识别和判断。
  3.3.3特征提取及优化
  肌电信号是具有短时平稳性的非平稳信号可以对信号进行短时分析,本系统采用的特征为时间特征。首先对信號进行分帧,帧长为30ms,帧移为15ms。对每一个移动窗,提取四个特征值,分别为短时平均幅度、短时能量、短时平均过零率、短时平均幅值差:
  考虑到一个肌肉蔟的活动会影响周围肌透蔟粗的活动,特征从本质上就存在相关性,并且从少量且有效的特征可以提高算法效率,本系统利用线性判别分析方法(LDA)将特征优化至50维,用少量的特征维度保证高纬度的信息,获得相似甚至同样效果的分类结果。
  3.3.4分类识别
  在得到特征数据集后,可以利用常用的分类识别算法进行模式识别。本研究首先实现了利用神经网络,支持向量机和随机森林进行分类识别,然后对比了三种算法的识别结果,最终系统采用随机森林树进行识别,采用信息增益率作为分裂准则。
  3.4界面设计及实现
  1)登录(如图6所示):为了便于对用户信息进行安全管理,点击“注册”按钮进入注册界面(如图7所示),设置登录所需账号密码以及录入肌电信号数据,注册成功后,即可通过账号和密码登录平台。
  2)注册流程(如图7-9所示):先输入用户名,后确定密码(如图7所示)。随后进入肌电信号选择录入界面(如图8所示),选择相应数字开始进行信号录入。进人数字录入界面后,可以先对存储文件和内容进行查看。进行正式录入时,用户可选择5次10次或20次录入,点击相应按钮,就可通过每秒增加1的“录入次数”的提示进行数据录入(如图9所示),“录人次数”达到选择次数后会自动停止增加。单个数字录入完成后点击“生成模板”按钮生成算法所需模板。10个数字相应数据全部录入完成后可以点击图8的完成按钮跳转到登录界面进行登录。
  3)应用流程(如图10-14所示):信息操作界面(主页)显示了此App的功能(女口图10所示)。点击“设置文本”进入文本设置界面(女口图11所示),在此界面可以录入0-9数字及自定义文本。点击“工作”按钮,可以进入功能界面(如图12)。在功能界面点击“按下后说话”按钮开始接收并处理用户肌电信息。单次信息收集默认为两秒钟,两秒过后在数据显示界面(如图13所示湿示用户输入的数据所对应的自定义文本。同时系统将生成临时肌电数据。点击“查看文本”进入文本查看界面(女口图14所示),在此界面可以查看用户信息,自定义的数字对应的文本以及各个肌电数据文件存储路径。其中还未录入的数据显示为null。
  4结束语
  本系统初步实现了一个肌电信号采集及动作识别系统,该系统能够采集到微弱的表面肌电信号并根据肌电信号识别面部动作,进而通过安卓端的信号处理实现无声识别和应用,使得交互过程不会被外界噪声干扰,并具有良好的安全性、保密性。在后续工作中可进一步提升系统的功能性,提供动态的趣味的方式展示App界面以及简化设备佩戴方式。
转载注明来源:https://www.xzbu.com/8/view-15177053.htm