当前位置:首页 > 音频信号的分类与分割
哈尔滨理工大学学士学位论文 第4章 语音信号的短时频阈分析
傅里叶频谱分析是语音信号频域分析中广泛采用的一种方法。语音波是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱”。进行频谱分析时,在时域数据进行短时FFT处理之前都要进行加窗处理。在FFT处理之后,普通频谱分析可以进行频域上的滤波处理,从而使频谱更加平滑。最后IFFT处理观察恢复后的时域信号图形,频谱分析过程(11)。傅里叶频谱分析的基础是傅里叶变换,用傅里叶变换及其反变换可以求得傅里叶谱、自相关函数、功率谱、倒谱。由于语音信号的特性是随着时间缓慢变化的,由此引出语音信号的短时分析。如同在时域特征分析中用到的一样,这里的傅里叶频谱分析也采用相同的短时分析技术。
信号x(n)的短时傅里叶变换定义为 Xn(e)?jwm????x(m)w(n?m)e???jwm (4-1)
jwX(e)的物理意义:可以从两个角度理解函数n第一种解释是,当n固定时,jwX(e)则是将窗函数的起点移至n0处截取信号x(n),nn=n 如再做傅里叶
0变换而得到的一个频谱函数。这是直接将频率轴方向来理解的。
另一种解释是从时间轴方向来理解,当频率固定时,例如w=wk,则
Xn(ejw)可以看作是信号经过一个中心频率为wk的带通滤波器产生的输出。
?jwme这是因为窗口函数W(n)通常具有低通频率响应,而指数对语音信号有
调制的作用,使频谱产生移位,即将频谱中对应于频率的分量平移到零频。
4.1 语音信号的快速傅里叶变换
傅里叶分析是分析线性系统和平稳信号稳态特性的强有力工具,它在
许多工程领域得到了广泛应用。它理论完善,具有快速算法,是语音信号处理的一个重要工具。语音信号本质上是非平稳信号,其非平稳特性是由发声器官的物理运动产生的。发声器官的运动由于存在惯性,所以可以假设语音信号在10-30ms这样短的时间段内是平稳的,这是短时分帧处理的基础,也是短时傅里叶分析的基础。短时傅里叶分析就是在基于短时平稳的
- 16 -
哈尔滨理工大学学士学位论文 假设下,用稳态分析方法处理非平稳信号的一种方法(12)。根据语音信号的二元激励模型,语音被看做一个受准周期脉冲或随机噪声源激励的线性系统的输出。输出频谱是声道系统的频率响应与激励源频谱的乘积,一般标准的傅里叶变换适用于周期及平稳随机信号的表示,但不能直接用于语音信号。因为语音信号可被看成短时平稳信号,所以可采用短时傅里叶分析。某一帧的短时傅里叶变化如下: Xn(e)=
jwm????x(m)w(n?m)e???jwm (4-2)
式中,w(n-m)是窗函数。不同的窗函数,可以得到不同的傅里叶变换结果。在式中,短时傅里叶变换有两个变量,即离散时间n及连续频率w,若令w=2πk/N,则可得到离散的短时傅里叶变换如下: Xn(e
j2πkN)=Xn(k)=
m?-??x(m)w(n-m)e??-j2πkmN,0<=k<=N-1 (4-3)
它实际上就是Xn(ejw)的频率的抽样。由上面两式可以看出:当n固定时,它们就是序列[w(n-m)x(m)]( ???m???)的傅里叶变换或离散傅里叶变
换;当w或k固定时,它们是一个卷积,这相当于滤波器的运算。因此,语音信号的短时频域分析可以解释为傅里叶变换或者滤波器。
MATLAB实现如下:
fid=fopen('D:/test.wav','rt'); %打开文件 y=fscanf(fid,'%f'); %读数据
e=fra(256,128,y); %对y分帧,帧长400,帧移200 ee=e(10,:); %选取第十帧 ee1=ee/max(ee); %幅值归一化 subplot(211);
plot(ee1); %画波形 xlabel('样点数'); %横坐标名称 ylabel('幅度'); %纵坐标名称 title('原始语音'); %文字标注 %矩形窗傅里叶变换
r=fft(ee,1024); %对信号ee进行1024点傅里叶变换 r1=abs(r); %对r取绝对值,r1表示频谱的幅度值 r1=r1/max(r1) %幅值归一化
yuanlai=20*log10(r1); %对归一化幅值取对数
- 17 -
哈尔滨理工大学学士学位论文 signal(1:256)=yuanlai(1:256); %取256个点,目的是画图的时候,维数一致
pinlv=(0:1:255)*8000/512 %点和频率的对应关系 subplot(212);
plot(pinlv,signal); %画幅值特性图 xlabel('频率/HZ'); ylabel('对数幅度/db'); title('加矩形窗时语音谱');
matlab仿真结果如下图:
图4-1 语音信号快速傅里叶变换谱分析
4.2 临界频带谱平坦测度函数计算
首先要对输入音频信号帧X进行时频分析,得到它的频域参数。目前音频编码算法通常采用MDCT对音频信号进行时频分析,得到MTCT变换系数(13)
。笔者所设计算法也是如此,并以MTCT变换系数为基础计算全局掩蔽门限,因为这样不需要像其他声学模型那样,必须计算FFT频域参数来求得声学模型的输出结果,在实际应用中也可以有效降低心理声学模型算法的复杂度。
谱平坦测度函数是用来确定音频信号某一频段音调特性的测度函数,它是该频段内频域参数几何平均与算术平均的比值,取值在0和1之间.当谱平坦测度函数的取值接近1时,表示该频段的频谱特性趋于平坦,反映了该频段的类噪声特性;当谱平坦测度函数的取值接近0时,表示该频段的频谱特性趋于尖锐, 反映了该频段的音调特性。
将输入音频信号帧X表示为x(i),0?i?L-1,其中L为帧长。用Y表示X的MDCT变换,那么在频域内就会有L个MDCT系数,用y(j)(0?j?L-1)表示,设在整个频段内共有M个临界频带,这M个临界频带的起始频点为Jk,0?k?M-1,则有J0=0,按照谱平坦测度函数的计算公式,临界频带的谱平坦测度函数可用下面公式计算:
- 18 -
哈尔滨理工大学学士学位论文 F(k)=(?y(j))j?JkJk?1?11/(Jk?1?Jk)Jk?1?11/[(?y(j))],0?k?M-1 (4-4) Jk?1?Jkj?Jk应用MATLAB测试wav文件的谱平坦度,仿真结果如下:
图4-2 测试文件的谱平坦测度曲线
谱平坦测度是分贝值,计算的是数据在频域谱上的平坦程度。分析谱平坦测度曲线可以发现,说话段的频域谱相对平坦,而音乐段和静音段则几乎是无穷大的值(因为无穷大,所以图上无法画出)。根据谱平坦测度曲线,可以非常准确地筛选出说话段。
4.3 基于短时能量比的语音端点检测算法的研究
由于在信号绝对幅度值变化的情况下,简单的能量检测将不再有效,而由于信号的能量集中在高频段,而噪声的能量主要集中在低频段,计算高频段和低频段信号的能量比值,该比值不会随着噪声绝对幅度的变化而线性地变化,所以可以用来检测语音和噪声。通过计算能量的高低频的比值,将计算得到的能量比值进行分析可以发现在语音段和噪声段有明显的差别。
图4-3 测试文件低频能量比(低频能量占总能量比值)曲线
从图中可以看到,大多数情况下,信号的低频能量占总能量的比例都保持在0.8以上,对音乐段来说尤其如此。而人说话的声音能量则主要集中在50~1000Hz的低频段。说话段与音乐段的区别在于,由于有清音的存在(音乐中也有清音,但是被音乐声淹没了),使得清音对应位置的低频能量比降低到0.2以下甚至接近0。因此,可在低频能量曲线的基础上,对其求方差,
- 19 -
共分享92篇相关文档