2.2 预处理
实验中录音得到的情感语音信号s(t)为模拟信号,因此在进行语音处理之前,要将其采样处理,采样周期要合理选取,以避免信号的频域混叠失真。情感语音信号的预处理,即进行一下的三个步骤:分帧加窗、预加重滤波和端点检测。
2.2.1 加窗分帧处理
人的情感语音属于非平稳信号,为了便于研究,通常认为,在10~30ms之内,语音信号为平稳信号。分帧的目的就是将采集到的语音信息分成10~30ms的时间段。分帧一般采取交叠分段的方法,从而使帧与帧之间平滑过渡。分帧是用可移动的有限长度窗口进行加权的方法实现的。窗函数用 表示,原始信号用 表示,加窗分帧后的信号用sw表示。则用公式表示为:
(1)
目前,在语音信号处理过程中,经常采用的窗函数有汉明窗(Hamming Window)和矩形窗(Rectangular Window)。汉明窗的窗函数为: (2)
矩形窗的窗函数为: (3)
用MATLAB绘制汉明窗和矩形窗时域波形和幅度特性如下图4所示。
图4 汉明窗和矩形窗的时域波形及幅度特性图
对图4汉明窗和矩形窗的时域波形和幅度特性进行分析比较发现,与矩形窗相比,虽然汉明窗的主瓣宽度比较宽,但旁瓣衰减比较大,对于实验中的短时情感语音信号来说,汉明窗能很好地反映其频率特性,低通特性也更好。所以本文采用汉明窗对情感语音进行处理。
本文在对语音信号的分帧时,使用的是voicebox工具箱里的enframe函数。其语法是:
r=enframe(x,len,inc);
其中,x为输入的语音信号,len是指帧长,inc指的是帧移[6]。
2.2.2 预加重滤波
预加重(Pre-emphasis),目的是针对高频部分进行加重,即提升高频部分。因为在高频端,大约800Hz以上,语音信号的平均功率谱按6dB/倍频程跌落,所以在绘制信号频谱时,会造成高频端比低频端难绘制。经过对高频部分的加重,使得高频部分也即主要研究的部分得以较为准确地绘制,以便于进行频谱分析或声道参数分析。本文采用的是1-0.9375z-1的一阶高通滤波器。用MATLAB实现预加重滤波的命令语句是:
amp=sum(abs(enframe(filter([1-0.9375],1,x),FrameLen,FrameInc)),2)
高通滤波器的幅频、相频特性图如下图5所示。
图5 高通滤波器的幅频、相频特性图
将一段原始语言信号输入,则原始信号与经高通滤波器后的语音信号对比如图6所示。如图,原始信号幅度较大,波动较为明显,经高通滤波器后,语音信号幅度变小且变得平缓,方便了后文中的语音信号的处理。
图6 原始语言信号与经高通滤波器后的语音信号对比图
在大约800Hz以上的高频端,语音信号的平均功率谱跌落明显,这就造成了在绘制信号频谱时,高频端比低频端难绘制的情况。经高通滤波器后,高频端的语音信号幅度被明显增大,为高频端信号频谱的绘制提供了便利条件。
预加重前和预加重后的一段浊音信号的频谱对比如图7所示。
图7 预加重前和预加重后的一段浊音信号频谱对比图
2.2.3 短时平均能量和过零率
通过对语音信号波形的观察,可以直观地看到,我们可以根据信号幅度来区分语音部分和静音部分。可以设定一个具体的门限值,当信号幅度在门限值一下,则认为无语音信号或是噪音。当信号幅度超过该门限,则认为是语音信号的开始。因为录入的语音信号是非稳定信号,其能量随时间变化,为了描述语音信号的幅度,我们引入短时能量的概念。对于输入的语音信号 ,其第 帧语音信号的短时能量有以下几种算法: (6) MATLAB语音情感智能识别的建模与仿真(4):http://www.751com.cn/zidonghua/lunwen_1386.html