1 引言
1996年3月,,美國政府數(shù)字語音處理協(xié)會(DDVPC)選擇了2.4kbps混合激勵線性預測(MELP)語音編碼器作為窄帶保密語音編碼的產(chǎn)品以及各種應用的新標準由于MELP具有良好的音質,、極低的碼率,以及良好的抗誤碼特性,,可以應用在IP PHONE,、移動通信、衛(wèi)星通信等領域,,尤其在需要大量存儲話音的場合和保密通信等方面,,具有很好的發(fā)展前景。
編碼算法有硬件實現(xiàn)和軟件實現(xiàn)兩種方式,,軟件實現(xiàn)靈活性強,,但處理速度較慢,一般不能滿足實時處理的要求,。硬件實現(xiàn)分為專用法和通用法兩種,。通用法是基于通用數(shù)字信號處理器芯片實現(xiàn)編碼算法的,它具有體積小,、功耗低,、運算速度快等優(yōu)點,其靈活性主要表現(xiàn)在軟件易于更改以及對各種算法的處理和復雜算法的實現(xiàn)上,,非常適用于語音信號,、視頻信號等壓縮處理。
MELP算法復雜度較高,,因此實時實現(xiàn)必須借助于高性能的數(shù)字信號處理芯片,。目前國內(nèi)還沒有用于研究聲碼器算法的專用芯片。因此,,從功耗和性能多方面考慮,,本文采用通用法實現(xiàn)MELP聲碼器算法,選擇TI公司的TMS320VC5416 DSP芯片作為主處理器,,完成聲碼器的主要功能,。
2 MELP編解碼算法
2.1 編碼部分
編碼器基于線性預測分析合成技術,采樣率為8kHz,,以180采樣值(22.5ms)為一幀進行編碼,,總體框圖見圖1。
輸入的原始語音信號經(jīng)過隔直濾波(即高通濾波),,得到目標信號S(n),。再對目標信號作以下處理:①低通濾波后用歸一化互相關法進行基音粗估,然后根據(jù)[0Hz,,500Hz]子帶信號圍繞粗估基音估算分數(shù)基音,;②帶通分析,在5個子帶計算話音強度,,以決定各子帶的清/濁音判決,,其中[0Hz,500Hz]子帶強度用于確定非周期標志位,;③計算LPC和尖峰值,用L-D算法提取10個LP系數(shù),,然后乘以帶寬擴展系數(shù),,使用得到的系數(shù)計算殘差信號,對殘差信號的160個抽樣計算尖峰值,;④使用截止頻率為1kHz的6階巴特沃茲濾波器低通濾波殘差信號,,結合上一子幀的基音和當前子幀的分數(shù)基因,搜索出最終基音周期,;⑤使用一個基音自適應窗采用一幀兩次的方法對增益進行量化;⑥LPC分析,,并轉換成線譜對LSP參數(shù)量化,;⑦將量化后的LSP參數(shù)轉換為LPC參數(shù)并進行逆濾波操作,殘差信號補0至512點,對其進行512點FFT,,利用頻譜峰點檢測算法找到前10次諧波對應的傅立葉系數(shù)輸出,。
2.2 解碼部分
解碼器從信道接收到的數(shù)據(jù)中恢復出每幀的所有參數(shù),經(jīng)判斷如果此幀是比較安靜的語音幀,,則增加對接觸的兩個子幀增益進行噪聲衰減處理,,同時改變噪聲估計的值。所有合成的參數(shù)對其做基音同步內(nèi)插處理,,這些內(nèi)插的參數(shù)包括基音周期,、增益、LSF系數(shù),、顫動強度,、量化的傅立葉幅度、用于產(chǎn)生混合激勵信號的周期信號濾波器的系數(shù)和噪聲濾波器系數(shù),、自適應增強濾波器的譜斜度系數(shù),。內(nèi)插完成后,使用被子帶濾波器濾波后的周期信號和噪聲激勵信號相加來產(chǎn)生混合激勵信號,。然后兩個激勵信號被分別濾波,,并相加得到激勵信號。合成混合激勵信號后,,信號經(jīng)自適應譜增強濾波器處理,,以改善共振峰的形狀。隨后,,激勵信號進行LPC合成得到合成語音,。LPC合成用了一個直接形式的濾波器,其系數(shù)由插值后的LSP參數(shù)得到,,合成的語音信號經(jīng)增益調(diào)整和脈沖散布濾波后輸出,??傮w框圖見圖2。
圖2 MELP編碼器解碼原理圖
3 TMS320VC5416簡介
TMS320VC5416的總體系結構圖如圖4所示,。其內(nèi)部的高性能CPU擁有算術邏輯單元ALU,、2個40位累加器ACCA和ACCB、40位桶行移位寄存器,、乘累加單元以及尋址單元,,算術邏輯單元包括1個40位的ALU,1個比較,、選擇和存儲單元(CSSU)和1個指數(shù)編碼器,,具有高度的并行性。本文采用的TMS320VC5416芯片最大可尋址能力為192K字(包括64K字的程序空間,、64K字的數(shù)據(jù)空間和64K字的I/O空間),,擴展尋址模式下有256K字~8M字的擴展地址空間,并擁有一套高效靈活的指令集,。其指令周期為6.25ns,,執(zhí)行速度最高可以達到160MIPS,完全可以滿足實時處理的要求,。
4 軟件設計及其關鍵問題
軟件設計包括編碼流程和解碼流程,,編碼流程圖如圖3所示。由于解碼過程相對簡單,,故此處只給出編碼流程圖,。
此軟件流程設計完全按照MELP原理,在實際編程過程中需要注意以下幾個關鍵問題,。
?、糯鎯ζ鞣峙鋯栴}
由于TMS320VC5416采用雙總線結構,提供了許多多功能指令,,在實際實現(xiàn)時要充分考慮到這些特點,,盡量用多功能指令,并且合理分配使用各個寄存器和指針,。例如:MAC指令可以在一個指令周期內(nèi)完成乘加操作,,還可以結合寄存器的合理安排實現(xiàn)連續(xù)乘加,而不需要緩存中間數(shù)據(jù),,從而大大提高了運算效率,。另外,要充分利用TMS320VC5416提供的專用的硬件結構,、尋址方式及特殊指令,。如:環(huán)形存儲器尋址方式、雙操作數(shù)尋址方式、EXP指令和NORM指令,、舍入操作等,,恰當使用這些方式和指令可以大大提高軟件效率。
?、?數(shù)的定標
TMS320VC5416采用定點數(shù)進行數(shù)值運算,,其操作數(shù)一般采用整型數(shù)表示。但它的指令支持小數(shù)模式和整數(shù)模式兩種運算模式,。對DSP而言,,參與數(shù)值運算的數(shù)就是16位的整型數(shù)。在多數(shù)情況下,,數(shù)學運算過程中的數(shù)不一定都是整數(shù),,這就需要程序員來確定小數(shù)點的位置,即數(shù)的定標,。TMS320VC5416中數(shù)的定標有兩種表示法:Q表示法和S表示法,。在此軟件中用Q表示法表示。
在程序中需要經(jīng)常判斷運算結果是否溢出,。TMS320VC5416芯片本身設有溢出保護功能,溢出的處理是通過設置芯片中PMST寄存器的OVM位自動執(zhí)行的,??梢栽诔绦虻拈_始就設置溢出功能有效,一旦出現(xiàn)溢出異常,,則累加器ACC的結果置為最大的飽和值(上溢位7FFFH,,下溢位8001H),從而達到防止溢出引起精度嚴重惡化的目的,。
?、欠乐沽魉€沖突
流水線是TMS320VC5416最具特色的部分,它大大的提高了TMS320VC5416的性能,,但當DSP資源同時被不在同一流水線階段的指令使用,,或在存取某些寄存器時容易引起流水線沖突。編譯時會編譯器將自動插入一個或幾個空操作,,從而增加了所需的計算量,,降低了軟件效率,因此軟件設計開發(fā)中需要避免流水線沖突,。
5 測試結果
目前該編解碼器已通過MELP的全部測試矢量驗證,。系統(tǒng)實時實現(xiàn)編解碼時,經(jīng)過非正式的主觀測試結果表明,,MELP算法的MOS分在3.3左右,,其清晰度、自然度和抗噪聲性能明顯優(yōu)于傳統(tǒng)LPC算法,。表1和2分別給出了在定點DSP芯片TMS320VC5416上實時實現(xiàn)MELP算法的編解碼器所需的存儲量和計算量,。
從表1可見,,程序和數(shù)據(jù)存儲區(qū)總存儲量共25.2K字,由于TMS320VC5416內(nèi)部RAM的大小為128K字,,因此,,程序boot時,可以一次將所有程序和數(shù)據(jù)直接搬移到芯片內(nèi)部RAM里運行,。表2顯示了對該聲碼器所用資源的統(tǒng)計結果,。在全雙工時,最大運算量為39.9MIPS,,完成滿足實時實現(xiàn)的要求,。
以上分析結果顯示,單片TMS320VC5416芯片最多可實現(xiàn)4路語音編解碼,,片上剩余的資源還可以實現(xiàn)其它附加功能,。
創(chuàng)新點:本文介紹了混合激勵線性預測(MELP)聲碼器算法,簡要分析了該算法的編解碼原理,。同時,,本文選用TI公司的TMS320VC5416 DSP芯片進行了實時實現(xiàn),指出了在軟件實現(xiàn)中需要注意的關鍵問題,。經(jīng)非正式主觀測試結果表明,,該算法自然度、清晰度和抗噪聲性能明顯優(yōu)于傳統(tǒng)LPC算法,,適用于短波窄帶數(shù)字保密通信,、無線通信等需要低速率的語音編碼場合,具有廣闊的應用前景,。