语音信号的频域分析
姓名:刘俊良 班级:信号与信息处理 学号: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