PDA

查看完整版本 : [MATLAB信号处理] 语谱图分析!!!!


gda1990
2012-03-19, 21:47
请问语谱图是如何看出共振峰和基频,谐波分量的?请好心人举例说明(看了半天“横条竖条”都没看懂T_T)
窄带与宽带语谱图是如何设置呢(如下面的程序部分该改哪个参数才能改为宽带语谱图)
若有一段8khz的语音信号,维持时间约6s,那么窗长应当设置为多少?(分别对应于宽窄带)
给出程序(Beijing.wav是语音“北京我来了”)的窄带语谱图
clear all;
[x,sr]=wavread('Beijing.wav'); %sr为采样频率
if (size(x,1)>size(x,2)) %size(x,1)为x的行数,size(x,2)为x的列数
x=x';
end
s=length(x);
w=round(44*sr/1000); %窗长,取离44*sr/100最近的整数
n=w; %fft的点数
ov=w/2; %50%的重叠
h=w-ov;
specgram('Beijing.wav',n,sr,w,w/2);
% win=hanning(n)'; %哈宁窗

gda1990
2012-03-19, 21:48
win=hamming(n)'; %哈宁窗
c=1;
ncols=1+fix((s-n)/h); %fix函数是将(s-n)/h的小数舎去
d=zeros((1+n/2),ncols);
for b=0:h:(s-n)
u=win.*x((b+1):(b+n));
t=fft(u);
d(:,c)=t(1:(1+n/2))';
c=c+1;
end

gda1990
2012-03-19, 21:49
tt=[0:h:(s-n)]/sr;
ff=[0:(n/2)]*sr/n;
imagesc(tt/1000,ff/1000,20*log10(abs(d)));

axis xy
xlabel('时间/s');
ylabel('频率/kHz');

gda1990
2012-03-19, 21:51
被系统弄成表情的是: (