Mel Frequency Cepstral Coefficients (MFCCs)
wiki里說
在聲音處理中,梅爾頻率倒譜( MFC ) 是聲音的短期功率譜的表示,基于非線性梅爾頻率標(biāo)度上的對數(shù)功率譜的線性余弦變換。
倒譜和MFC 之間的區(qū)別在于,在 MFC 中,頻帶在梅爾尺度上等距分布,這比正常頻譜中使用的線性間隔頻帶更接近人類聽覺系統(tǒng)的響應(yīng)。這種頻率扭曲可以更好地表示聲音,例如,在可能會降低傳輸帶寬的音頻壓縮中以及音頻信號的存儲要求。
梅爾頻率倒譜系數(shù)( MFCC ) 是共同構(gòu)成 MFC 的系數(shù)。它們源自音頻剪輯的一種倒譜表示。
信號的梅爾頻率倒譜系數(shù) (MFCC) 是一小組特征(通常為 10-20),它們簡明地描述了 spectral envelope 的??整體形狀。在MIR中,它常被用來描述音色。在應(yīng)用 Hamming window、 Mel-filterbank、log conversion和離散傅里葉變換 (DCT) 之后,我們通常會得到大小為 12 的特征向量 x i。通常情況下,第零倒譜系數(shù)被排除在外即使用1-13個倒譜系數(shù),需要將原始能量的度量添加到特征向量中。
本文參考了Gender identification of a speaker using MFCC and GMM論文中描述的MFCC把語音轉(zhuǎn)換為參數(shù)方法
將一個語音信號轉(zhuǎn)換為MFCC要以下幾個步驟:
讓采樣后的信號通過一個濾波器,并調(diào)整高低頻率的強(qiáng)度。濁音區(qū)域的頻譜通過預(yù)加重進(jìn)行補(bǔ)償,預(yù)加重會放大高頻區(qū)域并執(zhí)行濾波。簡單描述實現(xiàn)就是:
α是濾波器的系數(shù),常為0.95-0.97
但是這是很多年前因為有限的計算資源迫使開發(fā)人員創(chuàng)建的方法。
對于信號消歧而言,較高的頻率比較低的頻率更為重要。
在古早的時間里,應(yīng)用模擬預(yù)加重濾波器會更容易獲得好結(jié)果,因此大家都用了預(yù)加重。
預(yù)加重的另一個好特性是它有助于處理錄音中經(jīng)常出現(xiàn)的 DC offset 直流偏移,因此它可以改進(jìn)基于能量的語音活動檢測。
而現(xiàn)代語音識別不需要預(yù)加重。預(yù)加重在后期通過 channel normalization(如倒譜均值歸一化)進(jìn)行補(bǔ)償,因此可能沒有影響。
預(yù)加重的好處:
- 平衡頻譜
- 避免 Fourier transform 操作期間的數(shù)值問題
- 改善信號噪聲比 Signal-to-Noise Ratio (SNR)
與所有語音分析方法一樣,MFCC 方法也適用于語音具有固定聲學(xué)特征的短部分。即進(jìn)行分幀framing,一幀有N個采樣點,分幀主要是為了簡化處理,假設(shè)在短時間范圍內(nèi)音頻信號變化不大。如果幀很短,就沒有足夠的樣本來獲得可靠的頻譜估計,如果幀很長,則信號在整個幀中變化太大,因此通常選擇的參數(shù)為 20-30 毫秒,沿信號偏移 10-15 毫秒。
在大多數(shù)情況下,對整個信號進(jìn)行傅里葉變換沒有意義,因為會隨著時間的推移丟失信號的頻率輪廓(時序信息?)。通過對這個短時間幀進(jìn)行傅立葉變換,我們可以通過連接相鄰幀來獲得信號頻率輪廓的良好近似(這句話沒怎么理解這個良好近似)。每一幀都包含其前一幀的一部分。
語音處理中的典型幀大小范圍為 20 到 40 毫秒,連續(xù)幀之間有 50% (+/-10%) 的重疊。
通常的設(shè)置是:
幀大小為 25 ms,frame_size = 0.025 和 10 ms stride(15ms overlap ),frame_stride = 0.01。
在語音應(yīng)用中,漢明窗通常是首選。應(yīng)用漢明窗是這里說可以減少頻譜泄露,同時能夠平滑信號的邊緣,并在對信號進(jìn)行 DFT 時減少邊緣效應(yīng),其公式為:
可以用np.hamming
功率譜是由人類耳蝸啟發(fā)的,它根據(jù)傳入聲音的頻率在不同的位置振動。根據(jù)振動的耳蝸位置,不同的神經(jīng)會發(fā)出信號,通知大腦存在某些頻率。周期頻譜圖估計執(zhí)行類似的操作,用來識別幀中存在哪些頻率。
語音信號被劃分成分析窗口,通過FFT從時域變換到頻域。這種表示語音信號頻率分布的符號稱為幅度譜。
amplitude spectrum / magnitude spectrum
我們現(xiàn)在可以做一個 N- 對每一幀進(jìn)行點FFT計算頻譜,也稱為短時傅立葉變換(STFT),其中 N通常為 256 或 512,NFFT = 512;然后使用以下公式計算功率譜
也就是對每一幀進(jìn)行FFT變換,這是為了padding
為了將獲得的振幅譜轉(zhuǎn)換為 mel-scale,使用相對于 mel-scale 線性放置的濾波器組。該組由重疊 50% 的三角形帶通濾波器組成。一般濾波系數(shù)取值在20~30之間。
mel filter的公式:
濾波組的公式:
band filter頻帶分析以模擬耳朵的掩蔽效應(yīng)以及非線性頻率和帶寬分配,使用 DFT 計算每個頻帶中的能量
關(guān)于mel scale:mel scale將純音的感知頻率或音調(diào)與其實際測量頻率相關(guān)聯(lián)。與高頻相比,人類更善于辨別低頻音高的微小變化。結(jié)合這個尺度使音頻的特征更接近人類聽到的。
先把hz轉(zhuǎn)成mel單位
def freq2mel(freq):"""Convert Frequency in Hertz to MelsArgs:freq: A value in Hertz. This can also be a numpy array.ReturnsA value in Mels."""return 2595 * np.log10(1 + freq / 700.0)再轉(zhuǎn)回去
def mel2freq(mel):"""Convert a value in Mels to HertzArgs:mel: A value in Mels. This can also be a numpy array.ReturnsA value in Hertz."""return 700 * (10 ** (mel / 2595.0) - 1)計算濾波器組和頻率頻譜圖的內(nèi)積,對每個濾波器中的能量求和,再進(jìn)行l(wèi)og計算。
一旦算出了濾波器組的能量,就取它們的對數(shù)。這也是受人類聽覺的啟發(fā),人類聽不到線性尺度的響度。通常要將聲音的感知音量加倍,需要投入將近 8 倍的能量。這意味著如果聲音一開始就很大,那么能量的巨大變化聽起來可能并沒有什么不同。這種壓縮操作使濾波器組的特征更接近于人類實際聽到的聲音。
為什么用對數(shù)而不是立方根?對數(shù)允許使用倒譜均值減法,這是一種通道歸一化技術(shù)
有點不懂的是他算的公式是20 * np.log10(fbank),有點不太清楚這個公式是哪里來的。感覺用librosa庫的會多一些
濾波器組都是重疊的,DCT 對頻譜系數(shù)去相關(guān),并允許使用對角高斯分布對它們進(jìn)行建模,同時表示語音幀所需的參數(shù)數(shù)量減少了。這反過來又減少了內(nèi)存和計算需求。26 個 DCT 系數(shù)中只保留了 12 個是因為較高的 DCT 系數(shù)表示濾波器組能量的快速變化,但這些快速變化實際上會降低 ASR 性能,因此通過舍棄這些DCT系數(shù)讓性能小幅增加。DCT 的一個特性是去相關(guān)并將大部分信息保留在前幾個系數(shù)中。
主要作用是對濾波器組進(jìn)行去相關(guān)操作,舍棄除了自己設(shè)定的num_ceps以外的值,這些值代表濾波器組系數(shù)的快速變化,而這些細(xì)節(jié)對自動語音識別 (ASR) 沒有什么幫助,然后將lift與mfcc相乘計算外積,以弱化較高的 MFCC,據(jù)稱可以改善噪聲信號中的語音識別
cep_lifter 是 Cepstral liftering order
num_ceps 是 number of cepstral coefficients (C1-C12, omitting C0)
lift = 1 + (cep_lifter / 2.0) * np.sin(np.pi * np.arange(num_ceps) / cep_lifter)
mfcc = dct(fbank,norm=‘ortho’)[1:num_ceps+1]
mfcc *= lift
通常在自動語音識別的時候,并不關(guān)心信號的音調(diào)信息(聲帶),更感興趣的是與音素相關(guān)的信息或由于產(chǎn)生聲音的聲道形狀而產(chǎn)生的信息。音高值通常有一個低周期,當(dāng)移動到倒譜域(使用 DCT 或 IDFT)時,會在mid到end范圍。這就是為什么大多數(shù)只選擇前 12 或 13 個 MFCC,而不包括音高信息的原因。
如果正在構(gòu)建一個音調(diào)信息很重要的系統(tǒng),應(yīng)該增加 MFCC 的數(shù)量(人聲識別)
總結(jié)
以上是生活随笔為你收集整理的Mel Frequency Cepstral Coefficients (MFCCs)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java license 开源_MinI
- 下一篇: 滴滴估值5000亿?准备今年上市?女孩遇