基于MATLAB的皮肤听声器系统的研究
为了使皮肤听声器能够辨析语音,设计了基于MATLAB的皮肤听声器系统。该系统以MATLAB软件为平台,在此基础上实现了语音信号的录制、播放、预处理、分段滤波、特征提取等功能,并利用特征参数辨析语音。本系统达到了辨析简单语音的要求,但仍有需改进的地方,如:能否构造更合适的特征参数,能否辨析比较复杂的语音。
关键词:皮肤听声;采集;处理;语音辨析;MATLAB
目前,世界上有许多的耳聋患者,他们要么是皋天性耳聋,要么是后天造成的耳聋。当前解决耳聋问题主要通过传统助听器和电子耳蜗,但两者都有明显的缺陷,前者只使用于轻度耳聋患者,而后者造价太高,不适于推广。为彻底解决耳聋问题,李建文教授针对全聋人的听觉问题发明了变压式皮肤听声器,其实质是利用声-电转换让皮肤获得对电流信号的感觉,使全聋人通过皮肤获得一定的听觉,从根本上解决了聋哑人士的听力问题。
但是,变压式皮肤听声器仅仅使用户感受到电刺激,而不能辨析语音。为解决此问题,本文提出了一种基于MATLAB的皮肤听声器系统。该系统能够实现语音信号的录制、播放、预处理、分段滤波、特征提取等功能,并能够辨析简单的语音。
1 皮肤听声技术与皮肤听声器
皮肤听声技术是一门比较前沿的技术,其目韵是利用皮肤解决耳聋患者的听声问题。而皮肤听声器就是通过皮肤听声技术解决耳聋患者听觉问题的电子工具,其特点类似于助听器并涉及医学、电子学、声学和生理学,进一步的发展将依赖于数学和计算机等学科,属于典型的多学科高科技领域。它通过皮肤传递声音信号且不依赖于人的任何残余听力,实用效果明显,容易佩戴,几乎无副作用,任何听力损失的人均可使用。
由李建文教授发明并研制的第一代皮肤听声器已经达到听声的效果,接下来皮肤听声器要达到能够辨析语音的要求。这需要将原来的模拟电路转换为数字电路,在此基础上进行语音辨析。而本文就设计了一个基于MATLAB的皮肤听声器系统,该系统以MATLAB软件为平台,依次实现语音信号的录制、播放、预处理、分段滤波、特征提取和最后的辨析语音等功能。
2 系统功能介绍
2.1 主要功能
皮肤听声器的作用就是解决耳聋患者的听声问题,因此是皮肤听声器能量辨析语音是一个十分重要的技术环节。本文设计了一个皮肤听声器系统,基本能够辨析简单的语音。该系统以MATLAB软件为平台,主要功能有录制语音、播放语音、预处理、分段滤波、特征提取和最后的辨析语音。平台功能划分如图1所示。
2.2 核心模块
根据本文皮肤听声器系统的各个功能,将其分成三大核心模块,分别是采集模块、处理模块和辨析模块。
2.2.1 采集模块
系统采集模块的功能包括:录制语音,播放语音。
1)录制语音:通过麦克风录入声音,并保存为.wav的格式,以备后用。
在MATLAB中,用函数wavrecord录制语音。得到的是数字化的语音数据串,可直接作为Matlab变量参与各种运算。然后用函数wavwrite(y,filename)将变量y中储存的数据写入名为filename的WAVE文件中。
2)播放语音:播放已录制的语音WAVE文件,并输出其波形图和语谱图。
在此,用wavread和sound函数分别读取、播放语音。求取波形图和语谱图时,要用到length函数和FFT变换。
2.2.2 处理模块
该模块的功能有预处理、分段滤波和特征提取。
1)预处理:对前面录制的语音信号进行去除噪声、预加重和端点检测处理,为后续工作提供更加清晰有效的信号。
2)分段滤波:对经预处理后语音信号进行分段滤波,将不同的频率的语音信号分离开,使得皮肤能够更好地感应语音信号。
3)特征提取:语音的特征参数能有效地体现说话人语音所包含的与其他说话人不同的特点,它在整个辨析过程中起着至关重要的作用。本文在语音滤波后,从每个频率段内提取一个能够表征该段语音的参数,在把所有参数结合在一起构造一个特征向量,将其作为表征该语音信号的特征参数,为后面的辨析工作提供一个较为可靠的参考数据。
2.2.3 辨析模块
该模块的功能包括:模板建库、模式匹配和输出结果。
1)模板建库:讲话者多次重复语音单元,从原始语音样本中去除冗余信息,保留关键数据,获得表示识别基本单元共性特点的标准数据,以此构成参考模板,将所有能识别的基本单元的参考模板结合在一起,建立参考模板库。
2)模式匹配:新录入的语音经特征提取后,与库中模板按某种原则进行比较,找出相似度最高的参考模板所对应的发音,即为辨析的结果。
3)输出结果:输出前面的辨析结果,以使用户能够更好的通过皮肤听声器辨析语音。
3 系统设计
在MATLAB主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示图形用户界面的设计模板。本文系统主要包含3个功能:语音采集、语音处理和和语音辨析。
3.1 采集模块
系统将通过电脑麦克风进行录音。MATLAB中用y=wavrecord(n,fs,ch,dtype)来完成录音,式中n为采样的点数。决定了录音长度;fs为采样频率,默认值为11 025 Hz,还可根据要求自己选择合适的采样率;ch为声道数,默认值为1,表示单声道,如果指定为2,则采样为双声道立体声数据;dtype为采样数据的存储格式,用字符串指定,可以是‘double’、‘single’、‘int16’、‘int8’,指定存储格式的同时也就规定了每个采样值量化的精度,int8对应8位精度采样,其他都是16位采样精度。
录音完成后,系统将把上面录制的语音信号保存成WAVE文件。在此用函数wavwrite来完成。
最后将播放前面的语音WAVE文件,并生成其波形图和语谱图,为后续处理提高依据。
3.2 处理模块
系统将对前面录制的语音信号进行预处理工作,包括:对语音信号去噪、预加重和端点检测处理。去除噪声就是尽量去除语音信号中无用信息(噪声),而保留其中的有用信息(语音)。预加重的目的是提升高频部分,使信号的频谱变得平坦,以便于进行频谱分析或声道参数分析。语音的端点检测就是确定语音的起点和终点,从语音信号中排除无声段,为后续处理工作提供操作对象。
然后,对信号进行滤波处理。滤波器是对输入信号的频率具有选择性的一个二端口网络,它允许某些频率次(通常是某个频率范围)的信号通过,而其他频率的信号幅值均要受到衰减,从而将不同的频率的语音信号分离开,使得皮肤能够更好的感应语音信号。小波包变换将频带进行多层次划分,并能够根据被分析信号的特征自适应地选择相应的频带,使之与信号频谱相匹配,从而提高了时一频分辨率。利用小波包的此特点,本文将语音信号用滤波器分成16个频率段,每个频率段为一个语音通道,每个通道连接一个电极片分别与皮肤接触。语音频率范围划分如表1所示。
最后,点击"特征提取"按钮提取语音信号的特征参数。计算上面每个频率段的信号能量值,再将16个能量值作为分向量结合在一起构成一个特征向量,将其作为语音信号的特征参数。能量值反映每个频率段内语音信号所携带的语音能量,能够表征该段语音,因此可以作为特征参数。并且,每个语音信号的特征参数将在最下面的窗口中输出来。
3.3 辨析模块
首先,建立一个数据库。该数据库存储语音信号的特征参数,以SOL Server2003来建库。
然后,进行模式匹配。建好数据库后,对新的语音信号提取特征参数后,将其特征参数与库中数据进行匹配,如果找到相似度最接近的模板,则该模板就是待辨析的语音,并在下面窗口中输出语音信号;否则,将新信号的特征参数存入数据库,以丰富库中数据,并输出"库中无此语音!"。
最后,输出辨析结果。
- 基于Hilbert变换的电压凹陷检测方法(06-20)
- 牛奶微生物检测仪的设计 (06-13)
- 线性预测及其Matlab实现(04-22)
- 在WaveMaster中创建自定义运算函数(06-17)
- 实时与非实时综合应用在多个信号的测量(06-25)
- 线性光耦HCNR201在模拟电压测量中的应用(08-19)