📄 cepframe.m
字号:
clear all;
load vowels;
x=vowels.a_1;
len=length(x);
fs=zeros(1,len);
fss=enframe(x,256,128);
k=33;当前正在检测基音周期的帧的编号
f1=zeros(1,256);%用来存储当前正在检测基音周期的帧
for n=1:256
f1(1,n)=fss(k,n);
end
A1=lpc(f1,18);
E1=abs(filter(A1,1,f1));
figure,plot(E1);title('逆滤波后余量信号');
% LPC系数 逆滤波
e1=abs(fftshift(fft(E1)));
figure,plot(e1);title('FFT');
% FFT
if e1~=0
e1=log(e1);
end
figure,plot(e1);title('ln|*|');
% 绝对值取对数
for n=1:128
e1(n)=0;
end
for n=139:256
e1(n)=0;
end
figure,plot(e1);title('高频分量置零后的ln|*|');
%高频分量置零 500/5000*128+128=140
EE1=abs(ifft(e1));
% IDFT
for n=1:79
EE1(n)=0;
end
for n=181:256
EE1(n)=0;
end
figure,plot(EE1),axis([80 180 0 0.5]);title('IDFT后');
%噪音尖峰置零
N=max(EE1);
for n=1:128
if abs(EE1(n)-N)<0.0001
n1=n;
end
end
T=n1
%根据峰值,检出基音周期
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -