一个计算Cepstrum的matlab源代码!
源代码在线查看: matlab求倒谱问题.m
matlab求倒谱问题
读入一个语音文件wav
加窗,窗长256,对窗内的信号进行倒谱计算
使用matlab带的cceps,求出的图像在附件里所示
但是我在书上看到,“由周期激励信号在复倒谱中形成的分量只出现在各冲激之间间隔的整数倍各点上,则可以预期在基本周期的整数倍各点上,复倒谱中能够发现冲激”
为何在我的图像上看不到周期激励信号产生的周期分量呢,只看到间隔为窗信号长度的峰值?
以下是matlab程序
y= readwav('d:\1.wav');
length_y = length(y);
plot([1:length(y)],y);
title('语音信号');
%加窗
ceps_frame_len =500;
window = (hamming(ceps_frame_len)); % Window type
n_frame = round(length_y/ceps_frame_len);
y_result_m =zeros(n_frame*ceps_frame_len,1);
for ifrm=1:n_frame %n_frame为帧数,frame_shift为每次滑动的点数
n1 = ceps_frame_len*(ifrm-1)+1;
n2 = ceps_frame_len*(ifrm-1)+ceps_frame_len;
y(n1:n2) = window.*y(n1:n2);
y_result_m(n1:n2) = cceps(y(n1:n2));
end
figure;
plot([1:length(y)],y);
title('加窗');
figure;
plot([1:length(y_result_m)],y_result_m);
title('倒谱);