一、元音频谱图
1、理论知识
不同元音的频谱不同。其峰值位置称为共振峰。 不同元音的识别取决于共振峰区域的存在。对于不同频率的相同元音,共振峰非常相似,无论音高如何都能识别它。
2、实验结果
声音采样频率为8000Hz,FFT长度为65536。FFT变换后取0—4000Hz进行频谱观察。
Y=fft(y,nfft); %用FFT计算频谱
Y_abs=abs(Y(1:nfft2));
五元音频谱图如下所示:
纵轴幅度化为dB后的频谱图:
二、前三共振峰测试结果
2.1 利用倒谱法计算出共振峰
流程如下:
具体步骤:
1、对语音信号进行预加重,再进行加窗和分帧。预加重的滤波器常设为:
帧长wlen=256,帧移inc=256,这里将信号分帧后取其中的六帧进行平均后分析。窗函数为汉明窗,长度为帧长。
xx=enframe(x,256,256); %对x 256点分为一帧
%a1多帧求平均
x1=xx(1,:);x2=xx(3,:);x3=xx(5,:);x4=xx(7,:);x5=xx(9,:);x6=xx(11,:);
x2=(x1+x2+x3+x4+x5+x6)/6;
u=filter([1 -.99],1,x2); % 预加重
u2=u'.*hamming(wlen); % 信号加窗函数
2、做傅里叶变换
U=fft(u2);
3、取幅值后再取对数
U_abs=log(abs(U(1:wlen2))); % 对数幅值谱(实数部分)
4、进行逆傅里叶变换,得到倒谱序列
Cepst=ifft(U_abs); % 求取倒谱
5、在倒频率轴上设置一个低通的窗函数,一般设置为矩形窗
式中 是窗函数的宽度。与倒频率的分辨率有关,即和采样频率及FFT的长度有关。
6、傅里叶变换后取实部部分得到频谱包络线。
7、在包络线上寻找出极大值,就可以获得相应的共振峰参数。
% 寻找峰值
j=1;
for i=2:wlen2-1
if spect(i)>spect(i-1)&&spect(i)>spect(i+1)
Loc(j)=i;Val(j)=spect(i);
j=j+1;
end
end
2.2 测试结果
低通窗函数 。测试a1画出波形如图所示: