[分享]MFCC,即倒谱系数,也是语音的一个特征之一
% MFCC,即倒谱系数,也是语音的一个特征之一,能够充分利用人耳的特性% 具体的求法就是预处理,然后加窗,进行傅立叶变换,再求出功率普
% 然后得出其自然对数,最后进行dct变换
% 代码是用matlab写的,用到的一个语音工具箱,可以从网络上下载。
function mfcoef=mfcccoef(filename);
x=wavread(filename);
%归一化mel filter cof
bank=melbankm(24,256,8000,0,0.5,'m');
bank=full(bank);
bank=bank/max(bank(:));
% dct 系数
for k=1:12
n=0:23;
dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));
end
%归一化倒普窗口
w=1+6*sin(pi*./12);
w=w/max(w);
% 一阶高通滤波器 1-0.9375z(-1)
xx=double(x);
xx=filter(,1,xx);
% 分帧
y=enframe(xx,256,80);
=size(y);
for i=1:NumFrame
y=xx(i,:);
s=y'.*hamming(256); %hamming 窗
t=abs(fft(s)); %傅立叶变换
t=t.^2; %功率普
c1=dctcoef*log(bank*t(1:129)+eps);
%c1=dct(log(bank*t(1:129)+eps));
c2=c1.*w';
m(i,:)=c2';
end
NumFrame
mfcoef=m; 为啥将3处用圆的图标遮住了
帮帮忙!!
这两天在做一个问题,需要预处理,用的是加窗傅立叶变换,这方面我没学过,工作又催得紧,能否帮我编个程序,处理一下,以后我会慢慢学的。谢谢!下面是要处理的东西:clear;
load f.mat;
rand('state',8);
A = rand(2,3)-0.5;
X=A*;
for t=1:7000
nor=norm(X(:,t));
Y(:,t)=abs(X(:,t)/nor);
end
我解释一下,现在我要对Y进行分段傅立叶变换,每段长L=2048,每段乘上一个Hanning窗,连续短重叠的长度为d=614。
还要对Y竟进行相应的逆傅立叶变换,也帮我写出来吧!
谢谢!!!我9号就要用了,急求助!!!!
邮箱:maoyaoyong@163.com
谢谢!!!!!!
[ 本帖最后由 maoyaoyong 于 2006-11-5 14:39 编辑 ] 原帖由 maoyaoyong 于 2006-11-5 14:34 发表
这两天在做一个问题,需要预处理,用的是加窗傅立叶变换,这方面我没学过,工作又催得紧,能否帮我编个程序,处理一下,以后我会慢慢学的。谢谢!下面是要处理的东西:
clear;
load f.mat;
rand('state',8);
...
这个你可以参考 《MATLAB6.x信号处理》这本书,邹鲲写的
这本书你可以在本站ftp的/ebook/mathtools/Matlab/书籍及附盘/ 目录下找到 原帖由 snort 于 2006-7-17 13:42 发表
不太懂你的意思
页:
[1]