声音处理之-梅尔频率倒谱系数(MFCC)
聲音處理之-梅爾頻率倒譜系數(shù)(MFCC)
梅爾(Mel)頻率分析
在語(yǔ)音識(shí)別(SpeechRecognition)和話者識(shí)別(SpeakerRecognition)方面,最常用到的語(yǔ)音特征就是梅爾倒譜系數(shù)(Mel-scaleFrequency Cepstral Coefficients,簡(jiǎn)稱MFCC)。根據(jù)人耳聽(tīng)覺(jué)機(jī)理的研究發(fā)現(xiàn),人耳對(duì)不同頻率的聲波有不同的聽(tīng)覺(jué)敏感度。從200Hz到5000Hz的語(yǔ)音信號(hào)對(duì)語(yǔ)音的清晰度影響對(duì)大。兩個(gè)響度不等的聲音作用于人耳時(shí),則響度較高的頻率成分的存在會(huì)影響到對(duì)響度較低的頻率成分的感受,使其變得不易察覺(jué),這種現(xiàn)象稱為掩蔽效應(yīng)。由于頻率較低的聲音在內(nèi)耳蝸基底膜上行波傳遞的距離大于頻率較高的聲音,故一般來(lái)說(shuō),低音容易掩蔽高音,而高音掩蔽低音較困難。在低頻處的聲音掩蔽的臨界帶寬較高頻要小。所以,人們從低頻到高頻這一段頻帶內(nèi)按臨界帶寬的大小由密到疏安排一組帶通濾波器,對(duì)輸入信號(hào)進(jìn)行濾波。將每個(gè)帶通濾波器輸出的信號(hào)能量作為信號(hào)的基本特征,對(duì)此特征經(jīng)過(guò)進(jìn)一步處理后就可以作為語(yǔ)音的輸入特征。由于這種特征不依賴于信號(hào)的性質(zhì),對(duì)輸入信號(hào)不做任何的假設(shè)和限制,又利用了聽(tīng)覺(jué)模型的研究成果。因此,這種參數(shù)比基于聲道模型的LPCC相比具有更好的魯邦性,更符合人耳的聽(tīng)覺(jué)特性,而且當(dāng)信噪比降低時(shí)仍然具有較好的識(shí)別性能。
梅爾刻度是一種基于人耳對(duì)等距的音高(pitch)變化的感官判斷而定的非線性頻率刻度,和頻率的赫茲的關(guān)系如下:
m=2595*log10(1+f/700)
所以當(dāng)在梅爾刻度上面上是均勻分度的話,對(duì)于的赫茲之間的距離將會(huì)越來(lái)越大。梅爾刻度的濾波器組在低頻部分的分辨率高,跟人耳的聽(tīng)覺(jué)特性是相符的,這也是梅爾刻度的物理意義所在。
倒譜分析
對(duì)于一個(gè)語(yǔ)音的頻譜圖,峰值就表示語(yǔ)音的主要頻率成分,我們把這些峰值稱為共振峰(formants),而共振峰就是攜帶了聲音的辨識(shí)屬性(就是個(gè)人身份證一樣)。所以它特別重要。用它就可以識(shí)別不同的聲音。
我們要提取的不僅僅是共振峰的位置,還得提取它們轉(zhuǎn)變的過(guò)程。所以我們提取的是頻譜的包絡(luò)(Spectral Envelope)。這包絡(luò)就是一條連接這些共振峰點(diǎn)的平滑曲線。我們可以這么理解,將原始的頻譜由兩部分組成:包絡(luò)和頻譜的細(xì)節(jié)。這里用到的是對(duì)數(shù)頻譜,所以單位是dB。那現(xiàn)在我們需要把這兩部分分離開(kāi),這樣我們就可以得到包絡(luò)了。
這就用到了倒譜分析。倒譜(cepstrum)是一種信號(hào)的傅里葉變換經(jīng)對(duì)數(shù)運(yùn)算后再進(jìn)行傅里葉反變換得到的譜。倒譜分析可用于將信號(hào)分解,兩個(gè)信號(hào)的卷積轉(zhuǎn)化為兩個(gè)信號(hào)的相加。
假設(shè)上面的頻率譜X(k),時(shí)域信號(hào)為x(n),那么滿足
X(k)=DFT(x(n))
考慮將頻域X(k)拆分為兩部分的乘積:
X(k)=H(k)E(k)
假設(shè)兩部分對(duì)應(yīng)的時(shí)域信號(hào)分別是h(n)和e(n),那么滿足:
x(n)=h(n)?e(n)
此時(shí)我們是無(wú)法區(qū)分開(kāi)h(n)和e(n),對(duì)頻域兩邊取log:
log(X(k))=log(H(k))+log(E(k))
然后進(jìn)行反傅里葉變換:
IDFT(log(X(k)))=IDFT(log(H(k)))+IDFT(log(E(k)))
得到的時(shí)域信號(hào)如下:
X’(n)=h’(n)+e’(n)
此時(shí)獲得時(shí)域信號(hào)x’(n)即為倒譜,已經(jīng)和原始的時(shí)域信號(hào)x(n)不一樣,但是可以把時(shí)域信號(hào)的卷積關(guān)系轉(zhuǎn)化為了線性加關(guān)系。倒譜分析已經(jīng)將兩部分對(duì)應(yīng)的時(shí)域信號(hào)的卷積關(guān)系轉(zhuǎn)化為了線性加關(guān)系,所以只需要將倒譜通過(guò)一個(gè)低通濾波器即可獲得包絡(luò)部分對(duì)應(yīng)的時(shí)域信號(hào)h’(t)。
梅爾頻率倒譜系數(shù)MFCC
通常,計(jì)算MFCC之前,還會(huì)通過(guò)預(yù)加重、分幀和加窗、短時(shí)FFT等手段將原始原始聲音信號(hào)的spectrogram聲譜圖,MFCC對(duì)聲譜信號(hào)進(jìn)行分析。
提取MFCC特征的過(guò)程:
1)先對(duì)語(yǔ)音進(jìn)行預(yù)加重、分幀和加窗;
2)對(duì)每一個(gè)短時(shí)分析窗,通過(guò)FFT得到對(duì)應(yīng)的頻譜;
3)將上面的頻譜通過(guò)Mel濾波器組得到Mel頻譜;
4)在Mel頻譜上面進(jìn)行倒譜分析(取對(duì)數(shù),做逆變換,實(shí)際逆變換一般是通過(guò)DCT離散余弦變換來(lái)代替上文的IDFT,取DCT后的第2個(gè)到第13個(gè)系數(shù)作為MFCC系數(shù)),獲得Mel頻率倒譜系數(shù)MFCC。
運(yùn)行上段代碼需要用到matlab的語(yǔ)音處理工具箱,voicebox是一個(gè)MATLAB中的語(yǔ)音處理工具箱,支持MATLAB6.5以上的版本。其中包含了對(duì)語(yǔ)音的分幀處理,濾波,加窗,參數(shù)提取等等函數(shù),是語(yǔ)音識(shí)別幾乎不可缺少的一個(gè)工具箱。
官方下載:http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.zip
voicebox的添加
解壓下載的voicebox,把解壓包放在某一個(gè)路徑下d:/…/voicebox
打開(kāi)MATLAB,在命令行設(shè)置MATLAB的搜索路徑
或者
檢驗(yàn)是否設(shè)置成功,在命令行上輸入 which activlev.m,看一下是否顯示正確的路徑。這樣MATLAB就可以使用voicebox的函數(shù)了,
?
總結(jié)
以上是生活随笔為你收集整理的声音处理之-梅尔频率倒谱系数(MFCC)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Matlab-创建文字云
- 下一篇: Matlab-基于短时神经网络的声音分类