摘 要: 在G.729.1語音編碼算法中引入了一種長度為N=5×2m(m≥2)的MDCT/IMDCT實現(xiàn)的快速算法,編程實現(xiàn)該算法并在cygwin中仿真。在本方法中用孤立預(yù)乘的方法將N點的MDCT映射成N/2點的DCT-Ⅱ和DCT-IV,然后進入加窗階段。該窗口是一種部分對稱的窗,可以存儲使用N/2的字,同時包含了一種只需4次乘法在一定的條件下就可以分解5點DCT-Ⅱ的方法。與其他算法相比,該算法可以明顯地降低復(fù)雜度和減少存儲空間。
關(guān)鍵詞: G.729.1;語音編碼;余弦變換;改進的離散深余弦變換
G.729.1是基于分裂帶寬的編碼器,具有靈活的結(jié)構(gòu),通過利用正交鏡像濾波器組分析和合成濾波器組不僅能夠處理采樣率為16 kHz的輸入語音,還可以處理8 kHz采樣率的輸入語音,它是一個基于G.729的帶寬擴展(50~7 000 Hz)的、8~32 Kb/s可分級編碼器。由編碼器產(chǎn)生的比特流具有可分級性,包含了12個嵌入式層。第1層為核心層,其編碼速率為8 Kb/s,核心層與原有G.729中的比特流形式相同,這使得G.729.1與G.729之間具有互操作性。第2層為窄帶增強層,每層均在之前一層的基礎(chǔ)上增加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。編碼器的默認(rèn)輸入為16 kHz采樣,16 bit線性脈沖調(diào)制編碼語音信號,也可對8 kHz采樣的信號進行操作。解碼器的輸出可以為16 kHz或8 kHz采樣的16 bit線性PCM語音信號[1]。
G.729.1編解碼器基于三階段結(jié)構(gòu):嵌入式碼本激勵線性預(yù)測(CELP)編解碼、時域帶寬擴展(TDBWE)以及時域混疊消除(TDAC)的估計轉(zhuǎn)換編解碼。其中,嵌入式CELP階段產(chǎn)生第1和第2層,生成8 Kb/s和12 Kb/s窄帶合成信號(50~4 000 Hz)。TDBWE階段產(chǎn)生在第3層,生成14 Kb/s寬帶輸出信號(50~7 000 Hz)。TDAC階段工作在改進離散余弦變換域(MDCT),生成第4~12層,將信號從14 Kb/s提高到32 Kb/s。TDAC編解碼同時代表50~4 000 Hz頻帶加權(quán)CELP編解碼誤碼信號和4 000~7 000 Hz頻帶輸入信號。算法中處理幀長為20 ms,每幀寬帶信號樣點數(shù)為640[2]。
本文主要對其TDAC部分的MDCT變換進行改進并用程序?qū)崿F(xiàn)。在G.729.1算法的時延中,用于MDCT分析(估計)的時延為20 ms,通過MDCT的快速算法來減少該部分的時延,從而提高算法的實時處理的性能。
改進的離散深余弦(MDCT)廣泛應(yīng)用于語音和音頻編碼、分析和研究濾波器的時域別名取消特性。這是一種最為繁瑣的計算密集型算法,因此需要一種快速算法來實現(xiàn),到目前為止,已經(jīng)提出了多種快速算法來實現(xiàn)MDCT。在這其中許多算法推導(dǎo)變換的長度為N=2m。本文將介紹一種基于長度為N=5×2m的新方法。這種長度的變換已建議在語音和音頻編碼中使用,典型的采樣速率為8 kHz或16 kHz,幀延遲為10 ms或20 ms。ITU-TG.729.1和3GPP2EVRC-WB以及新興的ITU-TG..EV-VBR標(biāo)準(zhǔn)中也提供了這種算法。本文對G.729.1中的MDCT引入了一種新的算法,該算法更簡便和更易于實際應(yīng)用,非常適合在語音算法中應(yīng)用。
通過以上的變換可以看到,矩陣D和窗函數(shù)相乘后所得到的結(jié)果遵循IMDCT,這樣就可以減少做N/2次的乘法,也即可以節(jié)省N/2的存儲空間。MDCT可以通過逆變換從IMDCT中得到。然后進行逆DCT-Ⅱ變換。變換需要一種算法可以適合任意長度的序列。因此本文采用了既對頻率狀態(tài)進行抽取同時又可以執(zhí)行遞歸直到DCT的長度為5點的方法?;?點的DCT-Ⅱ是通過平面旋轉(zhuǎn)的方法來取代系數(shù)x(3)與x(4)之間的3次乘法和3次加法,用同樣的方法對x(0)和x(2)進行處理。該方法使處理的路徑變短、結(jié)構(gòu)的規(guī)律性增強、傳輸過程中數(shù)據(jù)的動態(tài)范圍減少?;?點的DCT-Ⅱ變換的方程如下:
由式(16)可知,MDCT/IMDCT算法的復(fù)雜度受到快速5點DCT-Ⅱ算法復(fù)雜度的限制。
3 算法的實現(xiàn)
經(jīng)過改進后,新的MDCT變換算法如圖1所示。圖中,加窗所用的窗函數(shù)為一般情況下常使用的窗函數(shù)。
從以上分析可知,該算法的復(fù)雜度受到DCTII算法復(fù)雜度的限制,所以在做DCTII變換時用的是HEIDEMAN M T的基于5點的DCTII變換的算法。該算法進行5點的DCTII變換只需14次加法和4次乘法,而可以提高運算速度和節(jié)省運算時間。
本文在G.729.1中的TDAC模塊中引進了MDCT的快速算法,在G.729.1的默認(rèn)模式下,該部分的時延為20 ms。通過使用本文中的方法進行改進,可以使該部分的時延降低約1/3,其存儲空間也可節(jié)省約1/3。從而提高了該算法實現(xiàn)的實時性以及實際應(yīng)用有了更大的可能性。在原來G.729.1的基礎(chǔ)上實現(xiàn)了變速率,使該算法可以與G.729實現(xiàn)互操作,即該算法包含了G.729(因在原來G.729的基礎(chǔ)上引入了TDBMW和TDAC技術(shù))。
本改進算法的仿真結(jié)果(默認(rèn)模式)如圖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].通信學(xué)報,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.