语音信号的频域分析 下载本文

语音信号的频域分析

姓名:刘俊良 班级:信号与信息处理 学号:s101904009

首先利用windows系统自带的录音机录入‘Bsketball’,并保存为wav格式,然后应用MATLAB工具箱对其进行处理。

1.用MATLAB对所录入的语音信号进行分析和处理,画出它的时域波形和短时谱 程序如下: clear

a=wavread('asd'); subplot(2,1,1), plot(a);title('原始信号'); grid N=512; h=hamming(N); for m=1:N b(m)=a(m)*h(m) end

y=20*log(abs(fft(b))) subplot(2,1,2) plot(y);title('短时谱'); grid

原始信号0.40.20-0.2-0.400.511.52短时谱0-50-100-150-20001002003004005006002.533.5x 1044

由于语音信号是短时平稳的随机信号,某一语音信号帧的短时傅立叶变换的定义为:

?Xn(e)?

jwm????x(m)w(n?m)e?jwm

由短时谱的定义可知,它实际上就是窗选语音信号的的标准傅里叶变换,这里窗是一个滑动的窗,它随n的变化而沿着序列x(m)滑动。窗的长度和形状对短时谱有影响,矩形窗不适合用于频谱成分很宽的语音分析中。汉明窗在频率范围中的分辨率较高,而且旁瓣的衰减大,具有频谱泄露少的优点,所以在求短时谱时一般采用具有较小上下冲的汉明窗。窗长N必须是2的整数倍。 2.应用MATLAB相关函数画出录入的语音的语谱图

人们致力于研究语音的视频分析特性,把和时序相关的傅里叶分析的显示图形称为语谱图(Sonogram or Spectrogram),它是一种三维频谱,表示语音频谱随时间变化的图形。水平方向是时间轴,垂直方向是频率轴,图上的灰度条纹代表各个时刻的语音短时谱。宽带语谱图能给出语音的共振峰频率及清辅音的能量汇集区,在语谱图里共振峰呈现为黑色的条文。

宽带语谱图可以获得较高的时间分辨率,反映频谱的快速时变过程;窄带语谱图可以获得较高的频率分辨率,反映频谱的精细结构。两者相结合,可以提供带两与语音特性相关的信息。语谱图上因其不同的灰度,形成不同的纹路,称之为“声纹”。声纹因人而异,因此可以在司法、安全等场合得到应用。程序如下:

[x,fs,nbits]=wavread('asd'); specgram(x,512,fs,100); xlabel('时间(s)'); ylabel('频率(Hz)'); title('语谱图');

语谱图100008000频率(Hz)600040002000000.20.40.60.8时间(s)11.21.41.6

3.应用MATLAB求所录入语音的倒谱和复倒谱

复倒谱x(n)是x(n)的Z变换取对数后的逆Z变换,其表达式如下:

倒谱c(n)定义为x(n)取Z变换后的幅度对数的逆Z变换,即

?1?Z[lnZ[x(n)]]x^^c(n)?z?1[ln|X(z)|]

浊音信号的倒谱中存在着峰值,它的出现位置等于该语音段的基音周期,而清音的倒谱中则不存在峰值。利用这个特点我们可以进行清浊音的判断,并且可以估计浊音的基音周期。

在倒谱基音检测中 ,语音加窗的选择是很重要的,窗口函数应选择缓变窗,如果选择矩形窗,在许多情况下,倒谱中的基音峰将变得不清晰甚至消失,一般来讲窗函数选择汉明窗较为合理。

分别对信号加矩形窗和汉明窗求其倒谱和复倒谱,程序如下:

clear

a=wavread('asd',[4000,4350]); N=300;

h=linspace(1,1,N); for m=1:N b(m)=a(m)*h(m); end

c=cceps(b); c=fftshift(c); d=rceps(b); d=fftshift(d); subplot(2,1,1)

plot(d);title('加矩形窗时的倒谱') subplot(2,1,2)

plot(c);title('加矩形窗时的复倒谱')

加矩形窗时的倒谱20-2-4-6050100150200250300加矩形窗时的复倒谱1050-5-10050100150200250300