何圣康,赵治栋
(1.杭州电子科技大学通信工程学院,浙江 杭州310018;2.杭州电子科技大学电子信息学院,浙江 杭州310018)
常见的生物特征识别技术有指纹、虹膜、视网膜、人脸、声纹、步态等[1-2]。不同于传统的生物识别技术,心音身份识别技术采用心音信号进行身份识别。不同的人的心音信号有着完全不同的特征且具有极高的稳定性,可以作为生物识别技术的识别特征[3]。近年来,国内外一些研究人员对心音身份识别进行了研究,证明了采用心音信号进行个人身份识别的可能性,并取得了一定的进展[4]。本文开发的基于Android的心音身份识别系统,能够方便地完成对用户心音信号的采集,完成用户的注册以及识别。
利用心音信号进行身份识别主要包括两个过程:训练过程和识别过程。
在训练的过程中,本文提取MFCC 作为特征参数。MFCC 指的是MEL 频率倒谱系数,常用于提取语音信号的特征参数。考虑到心音信号和语音信号同属于音频信号,心音信号同样可以提取MFCC 作为特征参数。
MFCC参数提取流程如图1所示。
图1 MFCC参数提取流程
在对语音信号提取MFCC 特征参数时,帧长范围是20 25 ms。不同于语音信号,心音信号具备准周期性,标准语音帧长的20 25 ms 并不适用于心音信号,而是应该大于20 25 ms[4]。本文选取的心音信号的帧长为256 ms,帧移为64 ms。由于心音信号的频率范围为30 500 Hz,所以MEL 滤波器组的截止频率选取500 Hz[5]。
在模式匹配的过程中,采用矢量量化VQ模型匹配算法。通过LBG算法从所有特征矢量中训练出可以表征一个人身份的码本。LBG 初始码本的生成采用分裂法,通过不断地寻找与质心的畸变最大的矢量,并以该矢量作为质心进行下一次分裂的分裂方法。
在识别的过程中,提取待测试心音信号的特征矢量序列,计算特征矢量序列对应每一个码本的平均量化误差,平均量化误差最小的码本对应的人便是系统的识别结果。
系统由上位机和下位机组成,下位机完成心音信号的采集、AD 转换,通过HC-06 蓝牙模块将AD 转换后的数据通过蓝牙传输技术发送至Android 智能手机。Android 智能手机作为上位机,完成心音信号的接收、显示及处理,系统的硬件框图如图2所示。
图2 硬件系统框图
心音信号通过自制心音拾音头采集,由驻极体话筒、听诊头改装而成,可以将声音信号转换为电压信号。通过30 500 Hz 有源滤波器获取有效频率范围内的心音信号。音频放大电路选用LM4811,通过dsPIC 主控电路完成对增益大小的控制。经过主放大电路后,通过耳机收听实时的心音。此外,dsPIC 主控单元的作用还包括AD 转换、电源管理。心音信号的采样频率为2 000 Hz,波特率为57 600 bps。经过12位AD 转换后的数字信号通过dsPIC 芯片的串口发送至HC-06 蓝牙模块。通过蓝牙发送数据至上位机。
Android 智能手机和心音采集设备的蓝牙配对及传输过程如图3所示。
经过AD 转换后的数据,通过HC-06 蓝牙模块发送,每一个HC-06 蓝牙模块具备一个固有的MAC地址。接收方Android 手机打开蓝牙,并向系统注册程序UUID。搜索蓝牙设备,找到HC-06 蓝牙模块,获取其MAC 地址。通过该MAC 地址得到BluetoothDevice 对象。该BluetoothDevice 对象使用上述UUID 获得BluetoothSocket 对象。通过BluetoothSocket 对象的connect()方法完成BluetoothSocket的连接。若Android 手机在此之前并未与HC-06 配对,便需要输入配对密码完成与HC-06 模块的配对,该配对密码由HC-06 模块设定,可人为修改。完成上述步骤后,便完成了手机同蓝牙模块的连接,可以完成蓝牙数据的接收。
图3 使用传统方式蓝牙配对完成数据传输
本文设计的心音身份识别系统基于Android 操作系统开发,可以完成心音数据的蓝牙接收、波形显示、注册及识别。
1)数据蓝牙接收处理。AD 转换后的心音数据为12位AD数据,数据按照字节传送,先传低8位,后发高4位,一个AD 转换结果为2 byte。Android 智能手机在接收蓝牙模块发送而来的数据的过程中,通过BluetoothSocket 对象的getInputStream()方法获得InputStream输入流对象。按照字节接收通过蓝牙模组发送到手机的数据。
2)波形显示。在自定义的SurfaceView 显示控件中显示心音信号波形。在应用的主Activity 中接收AD 转换后的心音数据,接受到的数据不断更新,在自定义SurfaceView 显示控件中不断处理更新后的数据,并显示到屏幕中。
3)注册模块。心音信号的注册模块包括基本信息的注册和心音信号的采集。基本信息的注册包括姓名、年龄、联系方式。将个人信息保存到SQLite数据库中,然后采集一段心音信号,由蓝牙传输至Android 手机。完成采集后,提取MFCC 特征参数,利用LBG算法生成码本,以txt 文档格式保存。在SQLite数据库中保存对应码本文件的文件路径,方便辨识操作的调用。
4)辨识模块。在用户辨识模块,首先采集一段待识别心音信号,提取其MFCC 特征参数,分别与系统中的每一个码本计算平均量化误差。平均量化误差最小的便是识别结果。
试验采集了40 人的心音信号,用于进行系统识别性能的测试。本次心音数据均采集于心脏的P区。主要从两个方面进行试验分析。
1)心音采集时间对系统识别性能的影响。不同的心音采集时间对系统识别性能有较大影响,不同采集时间对于本系统性能的影响如表1所示。选取FFT点数为512,Mel 滤波器的个数为64,横排表示注册时间,竖排表示辨识时间。
由表1可知,当辨识心音信号和注册心音信号的采集时间分别6 s和40 s时,系统的正确识别率不会随着采集时间的增加发生明显的变化,此时的正确识别率为95%。
表1 不同心音信号采集时间对应的正确识别率
2)Mel 滤波器个数对识别性能的影响。Mel 频率滤波器个数的增加会增加心音频域的个性特征,但个数过多会导致算法的复杂度增加。本系统在注册信号采集时间为40 s,辨识信号采集时间为6 s,FFT点数为512时,不同的Mel 滤波器个数对应的系统正确识别率CRR 如表2所示。
表2 不同Mel 滤波器个数对应的正确识别率
由表2可知,当滤波器个数达到一定值时,识别率固定在一定的值,不再发生变化,并不会随着滤波器个数的增加而不断上升。根据实验结果,本文可以取48 64的滤波器个数。
本文基于Android 操作系统开发了心音身份识别系统,利用MFCC 提取特征参数,并基于VQ 实现了身份匹配。数据采集系统和数据传输系统自行研发,可完成心音信号的高质量采集。实验表明,本文设计的心音身份识别系统可以准确高效地实现用户的身份识别。
[1]陈洪京.几种生物识别方法的比较研究[J].河北省科学院学报,2007,24(4):33-37.
[2]Jain A K,Ross A,Prabhakar S.An introduction to biometric recognition[J].IEEE Transactions on Circuits and Systems for Video Technology,2004,14(1):4-20.
[3]刘娟,赵治栋.基于心音信号谱分析的身份特征提取算法[J].杭州电子科技大学学报,2010,30(4):181-185.
[4]Phua K,Chen J,Dat T H,et al.Heart sound as a biometric[J].Pattern Recognition,2008,41(3):906-919.
[5]赵力.语音信号处理[M].北京:机械工业出版社,2009∶51-55.