?? mfcc.txt
字號:
function [ccc] = mfcc(x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% function ccc=mfcc(x);
%對輸入的語音序列x進行MFCC參數的提取,返回MFCC參數和一階
%差分MFCC參數,Mel濾波器的階數為24
%fft變換的長度為256,采樣頻率為8000Hz,對x 256點分為一幀
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bank=melbankm(24,256,11025,0,0.5,'m');
% 歸一化mel濾波器組系數 Initialisierung coefficient of Mel-filter-bank
bank=full(bank);
bank=bank/max(bank(:));
% DCT系數,12*24 coefficient of DCT
for k=1:12
n=0:23;
dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));
end
% 歸一化倒譜提升窗口 Initialisierung Cepstral?????????
w = 1 + 6 * sin(pi * [1:12] ./ 12);
w = w/max(w);
% 預加重濾波器 Pre-emphasis
xx=double(x);
xx=filter([1 -0.9375],1,xx);
% 語音信號分幀
xx=enframe(xx,256,80);
% 計算每幀的MFCC參數 rechnen jedem Frame's coefficient
for i=1:size(xx,1)
y = xx(i,:);
s = y' .* hamming(256);
t = abs(fft(s));
t = t.^2;
c1=dctcoef * log(bank * t(1:129));
c2 = c1.*w';
m(i,:)=c2';
end
%差分系數 coefficient of first-order difference
dtm = zeros(size(m));
for i=3:size(m,1)-2
dtm(i,:) = -2*m(i-2,:) - m(i-1,:) + m(i+1,:) + 2*m(i+2,:);
end
dtm = dtm / 3;
%合并mfcc參數和一階差分mfcc參數 conflation coefficient of MFCC and first-order
%difference vom MFCC
ccc = [m dtm];
%去除首尾兩幀,因為這兩幀的一階差分參數為0 weglassen erster und letzter Frame, wegen
%first-order difference = 0
ccc = ccc(3:size(m,1)-2,:);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -