劉麗群,黃 冰,寧瑞芳
(桂林電子科技大學 信息與通信學院,廣西 桂林 541004)
G.729.1是基于分裂帶寬的編碼器,具有靈活的結構,通過利用正交鏡像濾波器組分析和合成濾波器組不僅能夠處理采樣率為16 kHz的輸入語音,還可以處理8 kHz采樣率的輸入語音,它是一個基于G.729的帶寬擴展(50~7 000 Hz)的、8~32 Kb/s可分級編碼器。 由編碼器產生的比特流具有可分級性,包含了12個嵌入式層。第1層為核心層,其編碼速率為 8 Kb/s,核心層與原有 G.729中的比特流形式相同,這使得G.729.1與G.729之間具有互操作性。第2層為窄帶增強層,每層均在之前一層的基礎上增加2 Kb/s的編碼速率,編碼速率分別為 14 Kb/s、16 Kb/s、18 Kb/s、20 Kb/s、22 Kb/s、24 Kb/s、26 Kb/s、28 Kb/s、30 Kb/s、32 Kb/s。 編碼器的默認輸 入為16 kHz采樣,16 bit線性脈沖調制編碼語音信號,也可對8 kHz采樣的信號進行操作。解碼器的輸出可以為16 kHz或 8 kHz采樣的 16 bit線性 PCM語音信號[1]。
G.729.1編解碼器基于三階段結構:嵌入式碼本激勵線性預測(CELP)編解碼、時域帶寬擴展(TDBWE)以及時域混疊消除(TDAC)的估計轉換編解碼。其中,嵌入式CELP階段產生第1和第2層,生成8 Kb/s和12 Kb/s窄帶合成信號(50~4 000 Hz)。TDBWE階段產生在第3層,生成 14 Kb/s寬帶輸出信號(50~7 000 Hz)。TDAC階段工作在改進離散余弦變換域(MDCT),生成第4~12層,將信號從14 Kb/s提高到32 Kb/s。TDAC編解碼同時代表50~4 000 Hz頻帶加權CELP編解碼誤碼信號和 4 000~7 000 Hz頻帶輸入信號。算法中處理幀長為20 ms,每幀寬帶信號樣點數為640[2]。
本文主要對其TDAC部分的MDCT變換進行改進并用程序實現。在G.729.1算法的時延中,用于MDCT分析(估計)的時延為20 ms,通過MDCT的快速算法來減少該部分的時延,從而提高算法的實時處理的性能。
改進的離散深余弦(MDCT)廣泛應用于語音和音頻編碼、分析和研究濾波器的時域別名取消特性。這是一種最為繁瑣的計算密集型算法,因此需要一種快速算法來實現,到目前為止,已經提出了多種快速算法來實現MDCT。在這其中許多算法推導變換的長度為N=2m。本文將介紹一種基于長度為N=5×2m的新方法。這種長度的變換已建議在語音和音頻編碼中使用,典型的采樣速率為 8 kHz或 16 kHz, 幀延遲為 10 ms或 20 ms。ITUTG.729.1和3GPP2EVRC-WB以及新興的ITU-TG..EVVBR標準中也提供了這種算法。本文對G.729.1中的MDCT引入了一種新的算法,該算法更簡便和更易于實際應用,非常適合在語音算法中應用。
設{x(n)},n=0,…,N-1代表輸入采樣序列,N 為幀長。在本文中,MDCT和IMDCT的定義如下:

式中,X(k)是 MDCT的系數,x(n)是重建樣點。為了簡便,本文中忽略了定義中的正常化因子,將(N/2×N)MDCT定義為矩陣M:

所以MDCT/IMDCT可以記為:


將N點的MDCT/IMDCT映射成為N/2點的DCT-IV如下[3]:

式中P為:

其中 IN/4和 JN/4為 N/4×N/4的單位矩陣及其相應的逆轉矩陣。


根據對稱特性可以將DCT-IV矩陣映射成為DCT-Ⅱ矩陣,結果如下[4]:

式中,D是一個對角線矩陣,其元素為:


通過以上的變換可以看到,矩陣D和窗函數相乘后所得到的結果遵循IMDCT,這樣就可以減少做N/2次的乘法,也即可以節省N/2的存儲空間。MDCT可以通過逆變換從IMDCT中得到。然后進行逆DCT-Ⅱ變換。變換需要一種算法可以適合任意長度的序列。因此本文采用了既對頻率狀態進行抽取同時又可以執行遞歸直到DCT的長度為5點的方法。基于5點的DCT-Ⅱ是通過平面旋轉的方法來取代系數x(3)與x(4)之間的3次乘法和3次加法,用同樣的方法對x(0)和x(2)進行處理。該方法使處理的路徑變短、結構的規律性增強、傳輸過程中數據的動態范圍減少。基于5點的DCT-Ⅱ變換的方程如下:

逆DCT的變換方程如下:


由于DCT-IV中的前項和后項乘法可以在MDCT和IMDCT分別合并窗函數,因此在許多應用實例中,MDCT都是使用下面的窗函數:

用該窗函數和傳輸因子整合成新的改進的窗函數,其表達式為:



由此說明該窗是準對稱的,與對稱的正弦窗相比較,該窗也使用相同大小的存儲空間。
設:N=5g2m(m≥2)和 NI=2m,RMF(N)和 RAF(N)分別代表N點MDCT的乘法和加法的復雜度,RMI(N)和RAI(N)分別代表N點IMDCT的乘法和加法的復雜度,RMD(5)和RAD(5)分別代表快速 5點 DCT-Ⅱ的乘法和加法的復雜度。進一步計算MDCT和IMDCT的復雜度用下面的計算公式:

由式(16)可知,MDCT/IMDCT算法的復雜度受到快速5點DCT-Ⅱ算法復雜度的限制。
經過改進后,新的MDCT變換算法如圖1所示。圖中,加窗所用的窗函數為一般情況下常使用的窗函數。
從以上分析可知,該算法的復雜度受到DCTII算法復雜度的限制,所以在做DCTII變換時用的是HEIDEMAN M T的基于5點的DCTII變換的算法。該算法進行5點的DCTII變換只需14次加法和4次乘法,而可以提高運算速度和節省運算時間。

圖1 改進后新的MDCT變換算法
本文在G.729.1中的TDAC模塊中引進了MDCT的快速算法,在G.729.1的默認模式下,該部分的時延為20 ms。通過使用本文中的方法進行改進,可以使該部分的時延降低約1/3,其存儲空間也可節省約1/3。從而提高了該算法實現的實時性以及實際應用有了更大的可能性。在原來G.729.1的基礎上實現了變速率,使該算法可以與G.729實現互操作,即該算法包含了G.729(因在原來G.729的基礎上引入了TDBMW和TDAC技術)。
本改進算法的仿真結果(默認模式)如圖2所示。

由圖2可以看到,該算法的降噪性能并不是很理想,加15 dB白噪聲的語音基本上不可懂,但是解碼后的語音雖然包含一定的噪聲,而人耳基本上可以識別。該算法在降噪方面還有一定改進的余地,G.729.1算法的改進還有很大的價值。
[1]ITU-T Rec.G.729.1.An 8-32 Kb/s scalable wideband coder bitstream interoperable with G.729.May.2006.
[2]賈懋珅,鮑長春,李銳.8~64 Kb/s超寬帶嵌入式語音頻編碼方法[J].通信學報,2009(5).
[3]CHIVUKULA R K,REZNI Y A.Efficient implementation of a class of MDCT/IMDCT filterbanks for speech and audio coding applications[M].ICASSP,2008.
[4]HEIDEMAN M T.Computation of an odd-length DCT from a real-valued DFT of the same length[J].Signal Processing,IEEE Transactions, 1992,40(1):54-61.