倒譜是表示一幀語音數據特征的一個序列。從periodogram estimate of the power spectrum計算得到的倒譜系數,可以用於基音追蹤(pitch tracking),然而,從AR power spectral estimate計算得到的倒譜系數可以用於語音識別(現在已經被MFCCs所替代)。
One of the benefits of cepstrum and LPCCs over e.g. LPCs is that you can do cepstral mean subtraction (CMS) on cepstral coefficients to remove channel effects。
倒譜(Cepstrum)是什么?
這一節將會描述如何從功率譜的periodogram estimate來計算倒譜。首先,我們介紹自相關系數(autocorrelattion),然后,介紹如何使用類似的方法來計算倒譜。最后,我們介紹LPCCs的相關知識。
倒譜可以看做和自相關序列類似的東西。如果,我們獲得了信號的功率譜,我們可以使用Wiener-Khinchin theorem來計算信號的自相關序列。用數學公式表示為:\(x(n)\)是信號的時域表示,\(X(k)\)是信號的復數譜,\(P(k)\)是信號的功率譜,\(A(n)\)是信號的自相關序列。
通過對信號\(x(n)\)取離散傅里葉變換,可以得到信號的復數譜:
對復數譜做逆離散傅里葉變換,可以得到信號的時域表示:
通過對信號\(x(n)\)DFT的絕對值取平方,可以得到信號的功率譜:
如果,我們對信號的功率譜做\(IDFT\),可以得到信號的自相關序列:
如果,我們在對信號的功率譜做\(IDFT\)之前,對功率譜取對數,則可以獲得信號的倒譜:
因此,可以將倒譜理解為自相關序列的對數壓縮,因為其攜帶有和自相關序列類似的信息(如“信號的周期性),但是,信號的倒譜是由其對數功率譜而非標准功率譜計算得到的。(注:有資料顯示,對功率譜取對數,可以將乘性信號轉變為加性信號。)
在上述圖片中,展示了原始語音信號的一幀數據、對數功率譜、自相關序列和倒譜。倒譜當中的峰值對應自相關序列當中的一個峰值,但是更為清晰。這個峰值的位置在58sample位置處,對應的基音頻率為(16000/58)=275Hz (信號采樣率為16kHz)。這是一個相當高的基音頻率,原始語音信號是從一位女性說話人得到的。因為倒譜的強峰值,所以經常被用於基音檢測。
在MATLAB當中,我們可以使用下面代碼得到信號的倒譜:
PowerSpectrum = abs(fft(SpeechFrame,1024)).^2;
AutoCorrelation = ifft(PowerSpectrum,1024);
Cepstrum = ifft(log(PowerSpectrum),1024);
什么是LPCCs(線性預測倒譜系數)?
在前面的小節,我們介紹了標准倒譜(standard cepstrum),線性預測倒譜系數(Linear Prediction Cepstral Coefficients)的計算與其類似,除了LPCCs是由光滑自回歸功率譜(smoothed Auto-Regressive power spectrum)計算得到的,而非功率譜的peridogram estimate。例:10階AR譜估計,Levinson Curbin算法應用前10個自相關系數來計算10個線性預測系數。在MATLAB中,使用下面代碼進行實現:
[lp,g] = lpc(frame,10)
前一節所展示信號的線性預測系數為:
1.00 -2.22 1.68 0.05 -1.28 1.32 -0.30 -0.76 1.35 -1.19 0.44
從AR譜估計來計算倒譜:
[lp,g] = lpc(SpeechFrame,10);
ARPowerSpectrum = g ./ abs(fft(lp,1024)).^2;
Cepstrum = ifft(log(ARPowerSpectrum),1024);
注意到,上述計算步驟和前一節的計算過程完全相同,除了計算的功率譜不同。前十個倒譜系數為:
-11.78 2.22 0.79 -0.12 0.38 0.03 -0.20 0.04 -0.42 -0.11
以這種方法計算的系數,第一個系數是被忽略的,僅僅決定於\(g\)。這是一幀數據的線性預測倒譜系數。如果想要計算信號的LPCCs,不要使用這種方法進行計算,因為下面有更加有效的方法。
這一節的內容旨在展示倒譜系數和線性預測倒譜系數之間的區別和聯系。
從LPCs計算LPCCs
這是一個簡單的從LPCs計算LPCCs的遞歸公式,不用計算DFT。在下式當中,\(a_k\)表示線性預測系數,在前面小節中表示為\(\text{lp}\)。
從一個有限LPC系數,可以得到無限長度的線性預測倒譜系數。研究顯示,12-20個倒譜系數對語音識別任務已經足夠。