happy 发表于 2006-5-30 20:25

[分享]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;

snort 发表于 2006-7-17 13:42

为啥将3处用圆的图标遮住了

maoyaoyong 发表于 2006-11-5 14:34

帮帮忙!!

这两天在做一个问题,需要预处理,用的是加窗傅立叶变换,这方面我没学过,工作又催得紧,能否帮我编个程序,处理一下,以后我会慢慢学的。谢谢!下面是要处理的东西:
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 编辑 ]

suffer 发表于 2006-11-7 10:54

原帖由 maoyaoyong 于 2006-11-5 14:34 发表
这两天在做一个问题,需要预处理,用的是加窗傅立叶变换,这方面我没学过,工作又催得紧,能否帮我编个程序,处理一下,以后我会慢慢学的。谢谢!下面是要处理的东西:
clear;
load f.mat;
rand('state',8);
...

这个你可以参考 《MATLAB6.x信号处理》这本书,邹鲲写的
这本书你可以在本站ftp的/ebook/mathtools/Matlab/书籍及附盘/ 目录下找到

suffer 发表于 2006-11-7 10:54

原帖由 snort 于 2006-7-17 13:42 发表


不太懂你的意思
页: [1]
查看完整版本: [分享]MFCC,即倒谱系数,也是语音的一个特征之一