語音特徵引數mfcc計算的詳細過程
注:本文**xiaoding133(
的部落格,感謝博主的分享。
一、mfcc計算總體流程
1.訊號的預處理,包括預加重(preemphasis),分幀(frame blocking),加窗(windowing)。假設語音頻號的取樣頻率fs=8khz.由於語音頻號在10-30ms認為是穩定的,則可設定幀長為80~240點。幀移可以設定為幀長的1/2.
2.對每一幀進行fft變換,求頻譜,進而求得幅度譜。
3.對幅度譜加mel濾波器組(mel
濾波器組設計問題)。
4.對所有的濾波器輸出做對數運算(logarlithm),再進一步做離散余弦變換dct可得mfcc。
流程圖如下所示:
二、實際頻率與mel頻率的轉換
mel頻率與實際頻率的具體關係如下:
人耳的聽覺特性與mel頻率的增長一致。與實際頻率在1000hz以下呈現線性分布,1000hz以上呈現對數增長。
在mel
頻率軸上配置
k個通道的三角形濾波器組,
k的個數由訊號的截止頻率決定。
設計的過程如下:
假設語音頻號的取樣頻率,幀長n=256,濾波器個數k=22
由此可得語音頻號的最大頻率為:
根據下面的公式:
可以求得出最大的mel頻率為:
由於在mel刻度範圍內,各個三角濾波器的中心頻率是相等間隔的線性分布。由此,可以計算兩個相鄰三角濾波器的中心頻率的間距為:
因此,各三角形濾波器在mel刻度上的中心頻率可以表示為:
由上面的中心頻率可以計算出對應的線性刻度上的頻率。如下圖所示:
下面採用matlab設計mel三角形濾波器如下:
//獲取mel三角濾波器的引數
fs為取樣頻率,filternum為三角濾波器的個數
maxmelfreq = freq2mel(fs/2); %將線性頻率轉化為mel頻率,得到最大的mel頻率
sidewidth=maxmelfreq/(filternum+1);%求頻帶寬頻,即mel濾波器寬度
index=0:filternum-1;%濾波器的中心
filterbankprm=floor(mel2freq([index;index+1;index+2]*sidewidth)/fs*framesize)+1;
filterbankprm(end, end)= framesize/2;
得到如下的三角形濾波器,橫座標對應於fft中的點的下標:
注:這裡選擇的幀長為256點,然後fft的點數也為256,由於是對稱的,所以只取前面一半的點計算頻譜。然後加入到三角濾波器中。
每乙個三角形濾波器的中心頻率c(l) 在mel頻率軸上等間隔分布。設o(l),c(l),h(l) 分別是第l 個三角形濾波器的下限,中心,和上限頻率,則相鄰三角形濾波器之間的下限,中心,上限頻率的關係如下:c(l)=h(l-1)=o(l+1)
根據語音頻號幅度譜
注:在看上面的圖的時候,我的第一反應是疊加,也就是在o(l)到c(l)中間,由於疊加最終幅度應該為1,後面都是如此。可是最後看下面的公式,貌似不是這樣,所以這裡並不是疊加,而是每個頻率只應用乙個濾波器。
對所有的濾波器輸出做對數運算,再進一步做離散余弦變換(dct)即可得到mfcc。
由上公式可知,mfcc特徵引數的長度與濾波器的個數無關。只與dct有關。
% === 對幅度譜進行三角濾波過程
function tbfcoef = tribandfilter(fftmag, p, filterbankparam)
fstart=filterbankparam(1,:); %fftmag一幀資料的幅度譜
fcenter=filterbankparam(2,:);%濾波器的中心點,每列代表乙個濾波器的中心頻率
fstop=filterbankparam(3,:);
% triangular bandpass filter.
for i=1:p %濾波器個數
for j = fstart(i):fcenter(i), %第i個濾波器起始頻譜點和中心頻譜點的輸出
filtmag(j) = (j-fstart(i))/(fcenter(i)-fstart(i));
endfor j = fcenter(i)+1:fstop(i),
filtmag(j) = 1-(j-fcenter(i))/(fstop(i)-fcenter(i));
endtbfcoef(i) = sum(fftmag(fstart(i):fstop(i)).*filtmag(fstart(i):fstop(i))'); %第i個濾波器的輸出
endtbfcoef=log(eps+tbfcoef.^2); %求得每個濾波器的對數輸出,有多少個濾波器就有多少個輸出,對應為每一幀
(mfcc**可見台灣學者張智星老師的主頁,再次感謝原作者。
語音特徵引數MFCC計算的詳細過程
注 老早之前就在看語音頻號處理方面的知識,每當過了很久都會忘記,由於之前對語音特徵mfcc提取的流程還是非常清楚的,但是對於一些細節以及一些原理一些的東西還是不是很明白,通過這次的總結,我終於明白的其中的技術細節以及設計方法,包括濾波器的設計,以及引數的具體意義,希望這個總結能給自己增加更多的印象,...
語音特徵引數MFCC計算的詳細過程
注 老早之前就在看語音頻號處理方面的知識,每當過了很久都會忘記,由於之前對語音特徵mfcc提取的流程還是非常清楚的,但是對於一些細節以及一些原理一些的東西還是不是很明白,通過這次的總結,我終於明白的其中的技術細節以及設計方法,包括濾波器的設計,以及引數的具體意義,希望這個總結能給自己增加更多的印象,...
MFCC(語音特徵引數)
一 mfcc計算總體流程 1.訊號的預處理,包括預加重 preemphasis 分幀 frame blocking 加窗 windowing 假設語音頻號的取樣頻率fs 8khz.由於語音頻號在10 30ms認為是穩定的,則可設定幀長為80 240點。幀移可以設定為幀長的1 2.2.對每一幀進行ff...