《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > DSP實現G.723.1編譯碼算法
DSP實現G.723.1編譯碼算法
摘要: G.723.1標準是ITU組織于1996年推出的一種低碼率編碼算法。主要用于對語音及其它多媒體聲音信號的壓縮,如可視電話系統、數字傳輸系統和高質語音壓縮系統等。G.723.1標準可在6.3kbps和5.3kbps兩種碼率下工作。其中,高碼率算法具有較高的重建語音質量,而低碼率算法的計算復雜度則較低。與一般的低碼率語音編碼算法一樣,G.723.1標準采用線性預測的合成分析法。對激勵信號進行量化時,高碼率算法采用多脈沖最大似然量化(MP-MLQ),而低碼率算法則采用算術碼本激勵線性預測(ACELP)。
關鍵詞: DSP G.723.1
Abstract:
Key words :
  1 引 言

  當前,Voice over IP(VoIP)技術正在不斷普及,其中使用的低碼率語音壓縮標準主要有G.723 .1和G.729兩種。隨著VoIP技術的不斷發展,要求產品的集成度與性能進一步提高,利用新一代高性能DSP芯片,實現單片DSP處理多路語音信號,是今后的發展趨勢。

  G.723.1標準是ITU組織于1996年推出的一種低碼率編碼算法。主要用于對語音及其它多媒體聲音信號的壓縮,如可視電話系統、數字傳輸系統和高質語音壓縮系統等。G.723.1標準可在6.3kbps和5.3kbps兩種碼率下工作。其中,高碼率算法具有較高的重建語音質量,而低碼率算法的計算復雜度則較低。與一般的低碼率語音編碼算法一樣,G.723.1標準采用線性預測的合成分析法。對激勵信號進行量化時,高碼率算法采用多脈沖最大似然量化(MP-MLQ),而低碼率算法則采用算術碼本激勵線性預測(ACELP)。

  2 算法介紹

  語音信號的參數模型是用激勵信號激勵一個系統模型來模仿氣流沖激聲道產生的聲音。線性預測法基于全極點模型假定,采用時域均方誤差最小準則來估計模型參數。分析過程中要提取的參數包括聲道系統的LSP參數、自適應碼本的延遲和增益,以及固定碼本中脈沖的位置和符號。

  G.723.1編碼器能對以8kHz采樣的話帶語音信號進行壓縮。為了降低碼率,G.723.1采用了較長的幀尺寸,每幀240個樣值,即30毫秒幀長。每幀輸入信號首先通過一階高通濾波器濾除直流分量,然后將之分成四個60個樣值的子幀,每個子幀獨立進行LPC分析。為了提高LPC系數的連續性,采用了長度為180個樣值的重疊窗,即同時包含前后兩個子幀,這使算法引入60個樣值的超前時延,因此算法的總時延為37.5毫秒。LPC系數用線性譜頻率(LSF)表示,LSF參數采用預測分裂矢量量化,只對第四子幀進行。為了提高量化感知質量,高通濾波后的語音信號需通過共振峰感知加權濾波器和諧振峰噪聲整形濾波器以生成初始目標信號。前者參數由各子幀的未量化LPC系數構成,后者通過對每兩子幀進行開環基音周期估計得到,其中基音周期的范圍為18到142個樣值。LPC合成濾波器、共振峰感知加權濾波器和諧振峰噪聲整形濾波器用于系統零輸入響應計算和最佳激勵估計。G.723.1編碼器還包括一個五階基音預測器,其參數根據開環基音估計值和脈沖響應進行閉環基音搜尋得到。在進行最佳激勵估計時,需從初始目標信號中減去系統零輸入響應和基音預測器貢獻以得到最終目標信號,然后針對高低碼率分別采用MP-MLQ和ACELP方法進行量化。其中,LSF參數、基音值和激勵參數需傳送給解碼器。

  解碼器首先根據得到的LSF參數重建LPC合成濾波器,然后根據基音值和激勵參數得到自適應碼本激勵信號和固定碼本激勵信號。

  2.1 聲道模型參數的提取

  十階全極點模型系統的傳遞函數為:

  其中,S(z)和U(z)分別是輸出信號s(n)和輸入信號u(n)的Z變換。因此誤差信號為: 

  要使均方誤差最小,{ak}必定滿足=1,2,...10),由此可得到以k為變量的方程組:

  其中,R(n)為S(n)的自相關函數值。對于這個Toeplitz矩陣,用Durbin遞推算法可方便求解。

  因為線譜對參數(LSP)良好的量化特性和內插特性,LPC參數要轉換為LSP參數進行傳輸。

  設線性濾波器的逆濾波器為

  ωi和θi分別是P(z)和Q(z)的第i個零點。ωi和θi成對出現,反映信號的頻譜特性,因此稱為線譜對。對P(z)和Q(z)的系數做離散傅立葉變換得到zk=e-jπk/N(k=0,1,2...N)各點的值,搜索極小值點的位置,就是可能的零點位置。

  2.2 自適應碼本的搜索

  開環搜索是基于整幀的整數基音估計。為了提高可靠性,對原始信號進行預處理,用中心削波函數對原始信號進行削波。然后用自相關基音檢測法估

  計基音Top。閉環搜索是基于子幀的基音細搜索。將LPC合成濾波器、共振峰感知加權濾波器和諧波噪聲濾波器一起構成綜合濾波器,計算出該綜合濾波器的沖激響應。用估算出的開環基音周期和計算所得綜合濾波器的沖激響應,通過一個五階的基音預測器,可計算出閉環基音周期。

  2.3 固定碼本的搜索

  對自適應碼本搜索后得到的殘差余量信號進行固定碼本搜索。

  對高碼率(6.3kbps)的固定碼本搜索采用脈沖最大似然量化法(MP-MLQ)。激勵信號可表示為

  其中,G為增益因子,δ(n)為單位脈沖響應,{ak}和{mk}分別是單位脈沖響應的符號和位置。M為脈沖的數目,偶數幀取6,奇數幀取5。

  編碼算法的任務是估計G、{ak}和{mk},使誤差信號e〔n〕的均方值最小。

  其中,r〔n〕表示目標矢量,自適應碼本搜索后得到的殘差信號,h〔n〕表示加權合成濾波器的沖激響應。

  對低碼率(5.3kbps)編碼器固定碼本搜索采用代數碼本激勵線性預測法(ACELP)。每一子幀中有4個脈沖,它們可能的位置如表1所示。

  表1

  碼本搜索同樣是使加權語音信號r〔n〕與加權合成語音信號之間均方誤差最小。即:

  其中,r表示目標矢量,自適應碼本搜索后得到的殘差信號,G是碼本增益,vξ是代數碼本中索引ξ對應的碼本,H是加權合成濾波器的截斷沖激響應。

  要求最佳碼本,即要搜索使τξ最大的ξ 

  其中,τξ是一個中間參數,d是r〔n〕和h〔n〕之間的相關值,Φ是沖激響應的協方差矩陣。C、ε的計算:

  對奇位置的碼矢量,先把偶脈沖移一個樣本位置,然后用上式計算。

  3 算法實現

  3.1 硬件設計

  系統框圖如圖1所示。

  模擬的語音信號通過TP3057的A/D轉換變為數字信號送入ADSP-2181(采樣頻率8kHz)。TP3057是美國國家半導體公司生產的A律編/解碼器,它包含一個利用A/D和D/A轉換結構的A律脈沖編碼調制的編解碼器/濾波器單片電路和一個串行PCM接口。其中,編碼部分還包含一個可調輸入增益的放大器、一個有源RC前置濾波器、自動調零電路、一個A率壓縮編碼器。解碼部分包括一個A律解碼器和截止頻率為3400Hz的低通濾波器。前者從A律壓擴的信號中重建模擬信號,后者校正譯碼器輸出的sinx/x響應并濾除高頻信號。

  ADSP-2181是Analog Devices公司生產的一種性能優越的單片機,適合于高速的數字信號處理。 ADSP-2181除了三個運算單元、數據地址發生器和一個程序序列器,還含有兩個串行口、一個16位的內部IDMA口、一個8位的BDMA口、一個可編程定時器、外部中斷能力及片內程序和數據存儲器。片內集成了80k字節的存儲器,包括16k長度為24bit的程序存儲器和16k長度為16bit的數據存儲器

  利用IDMA口的自動接受發送功能,可以方便地實現ADSP-2181與主CPU間的數據交互。PC機通過IMDA口將程序裝載入ADSP-2181內部存儲器中。在ADSP-2181全速執行時,主機可以查詢其狀態,讀取壓縮后的碼流,也可送入待解碼的數據。

  3.2 軟件設計

  軟件設計包括三個模塊:接口模塊、編碼模塊和解碼模塊。

  接口模塊實現ADSP-2181與主CPU之間的數據交換。該模塊包括DSP的主控程序和數據傳輸兩部分。DSP的主控程序負責將采集到的語音數據分幀,送入編碼器,并將接受到的碼流分類后送入解碼模塊。數據傳輸部分負責采集數據和與主CPU的數據交換。

  DSP程序根據ITU-TG.723.1標準定點算法,分為初始化(G723—Init)、編碼(G723—Incode)、解碼(G723—Decode)三個模塊。

  G723—Icode對包含240個采樣點的一幀信號進行編碼,返回12個或10個字長的二進制數據。

  輸入數據由串口得到,放在數組G723—Enc—Inp中,返回值放在數組G723—Enc—Out中,對于6.3kbps長工為12個字,對于5.3kbps長度為10個字。其格式按照G.723.1標準進行封裝。

  G723—Decode根據接收到的12字或10字打包數據重建240個語音樣點。輸入數據放在G723 

  Dec—Inp中,輸出放在數組G723—Dec—Out中。

  主機程序采用VisualC++編寫,通過串口與DSP通信。

  3.3 C語言的優化

  開發中采用AD公司的集成仿真軟件VisualDSP++,但是通常,C編譯器能完成整個工作的70%,而30%的進一步優化必須通過手寫匯編來實現。

  3.3.1 循環展開

  使用具有并行能力的DSP開發軟件時,一個重要的思想就是充分利用DSP的字長和數目眾多的運算單元,盡量把循環體展開。通過增加每次循環中執行的指令數來減少總的循環次數,可使得在同樣的時鐘周期內能運行更多的指令,提高了循環的效率。

  3.3.2 提高寄存器的利用率

  DSP芯片內部的運算單元運行效率非常高,但如果寄存器和數據總線之間的數據交換頻繁,將使DSP的執行效率大打折扣。因為DSP在進行內存操作時,往往需要若干周期的延遲,如Load指令要有4個周期的延遲,Store指令需要2個周期的延遲。為了減少耗時的內存操作,可以在程序進入循環體之前,將要頻繁使用的數據預先放入寄存器,然后反復調用,實踐證明這種方法可以提高一部分效率。

  4 實驗結果

  所有代碼全部通過了ITU-T測試矢量的測試。

  測試結果表明,對于高碼率(6.3kbps)所需計算量為24.8MIPS,對于低碼率(5.3kbps),所需計算量為21.3MIPS。該實現可以在IP電話、視頻會議中得到廣泛應用。



 

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 九九精品视频在线播放8 | 亚洲福利视频一区二区三区 | 九九热爱视频精品视频高清 | 人人爽人人香蕉 | 老司机亚洲精品 | 亚洲成a v人片在线观看 | 日本免费一区尤物 | 久久国产欧美 | 欧美丰满大乳大屁股毛片 | 日本欧美三级 | 日韩国产欧美视频 | 亚洲男人第一天堂 | 国产国语高清在线视频二区 | 成人小视频在线观看免费 | 成人a毛片在线看免费全部播放 | 激情宗合网 | 欧洲乱码伦视频免费 | 国产亚洲精品美女一区二区 | 日韩专区亚洲精品欧美专区 | 国产精品路边足疗店按摩 | 毛片免费全部播放一级 | 日本精品在线观看 | 黄色三级网站 | 欧美a在线 | 成人毛片免费观看视频大全 | 国产欧美一级片 | heyzo国产亚洲高清 | 日产国产精品亚洲系列 | 日韩欧美一及在线播放 | 欧美一区二区三区日韩免费播 | 狠狠色综合久久丁香婷婷 | 美女张开腿给男生桶下面视频 | 久久综合精品国产一区二区三区无 | 国产成人精品视频播放 | 久久综合婷婷香五月 | 国产精品视频999 | 国产精品无码久久综合网 | 免费国产成人高清无线看软件 | 亚洲欧美韩国 | 久久香蕉国产精品一区二区三 | 美女操男人 |