網際網路電話(IPhone)的技術發展近來受到廣泛的注意。在網際網路電話架構中,其中語音壓縮及解壓縮編碼部分是主要的心臟引擎,也是佔據最多運算資源的部分。在閘道器(Gateway)為提供多通道同時通話的特性下,有效的語音壓縮是相當重要的課題。本論文即在數位德州儀器的TMC320C6x數位訊號處理器上實作出一個多通道語音壓縮引擎。目前己達六個語音通道之編解碼可同時進行。預計在未來,可利用其他的加速方法,對語音壓縮引擎進一步最佳化。
近年來由於網際網路(Internet)的快速發展,人們只要透過低價的網路系統,就可以在全世界的網路中遨遊。網際網路除了可以傳送數據資料外,多媒體資料的傳輸也是不錯的選擇。而在考量播接成本、與語音的資料量較少下,相對借由網際網路來傳送即時的(Real time)聲音資料,在目前網際網路的擁塞狀況下是比較可行的,不但可以利用現有的網路來傳輸,也可以節省大量的國際長途電話費用。因此「網際網路電話」(Internet Telephony- IPhone)成為各界所努力實現的目標。
目前網際網路電話是依國際電信聯盟(ITU)訂定的H.323規範,來做為其標準。
在種種有利的條件下,包括網際網路的普遍性及網際網路快速成長、通訊標準訂定、播接費率成本大幅降低、並可透過閘道器配合現存的公眾服務電話網路(PSTN),使得預期在開放網際網路電話語音的服務後,其發展的速度必定會超乎大家所能想像的。在如此龐大的市場及商機的誘因下,無論是國內外的學術界與工業界,無不投下大量資源,在開發相關的軟硬體技術及設備上,以期能在市場上,獨佔先機。
在整個網際網路電話的架構上,包括了終端設備(Terminal-輸入及輸出設備)、閘道器(Gateway)、閘道網路管理系統(Gate Keeper)、網際網路(Internet)、網際網路程式(Internet Programming)等等。其中的閘道器(Gateway)是語音壓縮及解壓縮編碼的心臟引擎,也是佔據最多運算資源的部分。在閘道器為提供多通道同時通話的特性下,訊號處理壓縮的速度是一個相當嚴重的問題。以一條T1線為例,可提供24的語音通道,如接上閘道器,則閘道器一定要能同時處理完24個語音通道,以目前市面上一般處理器的能力而這,是很困難的,因此利用數位訊號處理器(Digital Signal Processor-DSP)來實現閘道器是比較可行的。本論文即在研究數位訊號處理器上實現多通道的語音壓縮及解壓縮編碼器,借此來實現多通道網際網路電話閘道器。
2.1 網際網路電話簡介
網際網路電話簡單的說,就是利用網際網路傳送語音資料。如圖一所示,語音傳送的途徑可由多種方式,包括如圖中所表示的各種途徑:第一種方式為由網路電腦終端設備直接對語音壓縮,發送出語音封包,經過網際網路傳送,再由另一端網路電腦終端設備接收語音封包,再解壓縮成為語音訊號;第二種方式為由網路電腦終端設備直接對語音壓縮,發送出語音封包,經過網際網路傳送,由網際網路電話閘道器接收,解壓縮成為語音訊號,再回播到公眾電話網路之電話;第三種為由公眾電話網路之電話播到網際網路電話閘道器,並對語音壓縮,經過網際網路傳送,再由另一端網路電腦終端設備接收語音封包,再解壓縮成為語音訊號;第四種方式是由公眾電話網路之電話系統透過交換機接到網際網路電話閘道器,經過網際網路到另一端網際網路電話閘道器,回播到交換機,轉接至公眾電話網路之電話。其中應以第四種的途徑最為普遍,也合適於現存公眾電話網路之整合。
網際網路電話能讓通話雙方透過網際網路文換語音訊息,但是需要訂定一個通用的標準。因此借由國際電信聯盟( ITU )訂定的 H.323 規範,正好可以來做為網際網路電話的標準。
2.2 H.323簡介
H.323 是一套包括視訊、語音、與資料傳遞的標準。H.323 系統括了終端設備、閘道器、閘道網路管理系統、以及多方會談控制單元。H.323 所包含的資料標準有很多,其中在語音方面包括 G.711、G.722、G.723.1、G.728、G.729 等等多種壓縮標準,而其中以 G.723.1 為最廣泛使用在網際網路電話閘道器的語音壓縮標準。在影像方面包括 H.261、H.263,這兩個標準都是視訊會議(Video Conference)的標準。在資料傳送方面是以 T.120 為主。另外 H.323 的系統控制方面,則訂定了系統控制 H.245、播號設定 Q.931、使用管理 RAS (註冊、加入、狀態查詢)。
2.3 G.723.1簡介
在 H.323 中,包含了相當多的語音、視訊等資料壓縮標準、傳輸標準,以及系統管理的標準。然而其中佔據處理器運算資源最多的就屬於資料壓縮運算了。在網際網路電話中,則以語音壓縮運算最為沉重,所以這是在實現網際網路電話上是相當大的瓶頸。目前應用在網際網路電話中最廣泛的語音壓縮標準就屬於 G.723.1。
G.723.1 為 ITU-T 於 1996 訂定的雙速元語音編碼壓縮標準,其主要的速元為6.3 Kbps與5.3 Kbps兩種,它採用音框導向 ( Frame-Oriented ) 處理模式,將輸入的語音訊號,切成一連串固定長度的音框,每個音框有 240 個數位化之取樣值 ( 每一個取樣值是由 8 KHz 取樣頻率取樣,再以 16 bits 量化而成 ) ,以音框為編碼壓縮的處理單位,每個音框的時距為 30 ms。在編碼區塊的流程上,兩速元編碼方式的參數計算過程大致相同,主要之差異在於殘餘訊號的編碼。
由於 G.723.1 亦屬於 CELP ( Code-Excited Linear Prediction ) 編碼一族,它擁有傳統參數編碼法 ( Vocoder ) 與波形編碼法 ( Waveform Coder ) 的優點,以一線性預測濾波器 ( Linear Prediction Filter ) 來表示語音訊號的短時距 ( Short-Term ) 特性之數學模型,並以基頻預測方式 ( Pitch Prediction ) 來找出語音訊號的長時距 ( Long-Term ) 之類週期,再加上諧波雜訊整型器 ( Harmonic Noise Shaping Filter ) ,過濾訊號中之雜訊的類週期性;最後,再以多重脈衝 ( Multi-Pulse ) 訊號來逼近殘餘訊號,進行量化編碼。其編碼架構區塊,主要有「線性預測分析」,「共振峰感觀式權重濾波器 ( Formant Perceptual Weighting Filter )」,「基頻估計與預測」,「諧波雜訊整型濾波器」,「激發源計算(Excitation Computation)」,「參數編碼方法」等六個部份,圖三為整個編碼架構方塊圖。
解碼端的操作仍以音框為處理單位,首先將接收到的 LSP 傳輸碼進行解碼,內插,合成 LPC 係數供合成濾波器係數 ( Synthesis Filter ) 之用,並將每個次音框的基頻參數傳輸碼與激發源參數傳輸碼進行解碼,以產生新的激發源訊號 ,再經由各級濾波器的層層過濾而合成語音,圖四為 G.723.1 解碼架構流程圖。
2.4 數位訊號處理器簡介
本論文所選用的數位訊號理器是德州儀器(TI)公司TMS320系列的數位訊號處理器TMS320C6x。TMS320C6x是TMS320系列的數位訊號處理器。其為一個定點運算的數位訊號處理器,5-ns指令運算時間,即200MHz的時脈,而每個單位時脈可執行八個32位元的指令。TMS320C6x處理器架構如圖五所示。
3.1 程式轉移
程式移轉時,首先把原本在 ANSI C G.723.1 程式中的函式庫先和 TMC320C6x 所提供的函式做適當的替換和修改。並要配合編譯程式加以修改,使得正確無誤。在初步編譯的過程中,遭遇的問題中,大多是編譯時記憶體配置出了問題。而且在TMC320C6x 的變數定義和一般 ANSI C 不同,比較如下表一所示。在完成這部份後,另外在程式輸入輸出介面方面( I/O ),也要進行細部修改,以配合 TMC320C6x 的實際運作。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.2 G.723.1在TMC320C6x上特性分析
對於G.723.1在做TMS320C6x的程式化後,可借由其提供的Profile功能來評估其各個副程式執行的運算量,即以多少時脈(Clock)來表示其運算量。這個評估是以G.723.1在5.3kbps下,沒有其他的附加功能時,對語音的編碼運算。表二所表示的是一部分運算量很大的副程式。
由這些分析可以看出,在 G.723.1 的壓縮解壓縮編碼運算中,對於碼簿的搜尋比對,所花的運算量是比較大,如ACELP_LBC、Find_Fcbk、Find_Acbk、D4I64_LBC。另外在Lsp的運算上也有運算量比較大的,如Comp_Lpc、Lsp_Qnt 、Lsp_Svq。
|
|
|
|
|
34,788,574
|
|
|
16,881,979
|
|
|
4,649,109
|
|
|
4,648,561
|
|
|
2,967,892
|
|
|
2,942,961
|
|
|
2,038,581
|
|
|
1,320,634
|
|
|
1,294,998
|
3.3 G.723.1 程式最佳化
由分析得知在碼簿的搜尋是運算複雜度最高的,因此加速碼簿的搜尋是第一考量的方法。在LSP頻率的運算及碼簿的搜尋上發現可以借由跳躍式的搜尋,把搜尋次數大幅降低,且使音質幾乎不變。表三就是我們測試結果。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@方法1:全搜尋方式,標準預設模式。
#方法2:跳躍8點搜尋,求最佳。
$方法3:跳躍8點搜尋,以最佳一點其為中心,前後各4點再搜尋,求最佳。%方法4:跳躍8點搜尋,求最佳3點,並各以這3點為中心,前後各4點再搜尋,求最佳。
這些快速搜尋方法,不論是在客觀(SSNR) 比較或是主觀聽覺比較,效果都相當的好。因此我們可以利用這個快速運算的方法來改善運算的速度。3.4 數位訊號處理器程式最佳化
在TMS320C6x的程式中,配合處理器本身的特性,對於程式的最佳化,有下列幾種方式與作法:
A、使用平行處理:安排處理器中兩個獨立部分的八個獨立的運算處理單元,充分利用八個單元,使得在一個時脈中,執行八個指令,而使得程式加速。B、在指令運算特有的等待空擋(Nop)中,安排插入執行有用的程式。
C、軟體程式匯流排(Software Pipeline)的利用:先行規劃程式匯流排的方式,使運算加速,達到程式最佳化。
D、32位元資料長度利用:在TMS320C6x中,暫存器是32位元,資料最大可以使用32位元,所以可以利用這個特性來處理16位元的資料,把兩比16位元的資料當作一個32位元讀取,並且可以借由TMS320C6x提供的一些特別運算指令來同時處理兩比16位元的資料,借此來加速程式,達到程式最佳化的目的。
3.5 程式經驗法則在系統最佳化中,除了改善演算法則之外,有效的程式法則也很重要的因素。這些並非一般理論準則,但對於相同類型的程式或數位訊號處理器,應是有助益的。
A、程式編譯連結
在編譯連結程式時,所用的編譯器的參數是很重要的。而其中以-o3是最高階的最佳化參數,最佳化了暫存器使用、局部變數、整體變數、副程式之間整合,使得程式總體到達最佳化。 B、變數記憶體位置安排 在做平行處理時,會同時讀存相當多資料,如果資料位置安排不當,將使得讀存時相當沒有效率。則不但沒有平行處理的好處產生,還會多浪費處理器資源。 C、數位訊號處理器內部記憶體使用 處理器內部記憶體對於資料讀取都比外部記憶體還快,且有效率。因此應安排常用的且運算量大資料在內部記憶體。 D、乘/除法的替代法 減少乘/除法的使用,而以位元位移和加法來取代,這是相當有效率的方法。 E、直接存取記憶體的使用 直接存取記憶體(Direct Memory Access, DMA)的特點就是不需要花費數位訊號處理器的資源,就能完成資料搬移的動作,是相當效率的方法。 F、查表利用 對於常用的,且需複雜計算的值,事先算出值存成表,再利用查表來呼叫數值,以節省每次重複計算的時間。 G、變數宣告的考量 變數有兩個特性:生命週期及可見性。生命週期是指保存變數的時間長短,可見性則是變數在程式的哪些部分可以認得它。使用適當的生命週期及可見性的變數,可以使程式更有效的使用記憶體,而且執行較快速、程式不易出錯。 H、程式展開 儘量展開程式,以減少副程式呼叫及傳回值的次數。而且儘量使用巨集來替代副程式,道理也是一樣,可以滅少程式呼叫的次數,以降低多餘的資料量。經過系統最佳化後,實現了一個六個通道的網際網路閘道器。以 200 MHz 的 TMC320C6x 來說明:
200 M Clock Cycle÷33音框數÷6個通道 = 1.01 M Clock Cycle
因此一個全雙工語音通道包括語音壓縮編解碼要小於 1.01 M Clock Cycle,才能實現六個通道的可行性。表四則詳列了在程式最佳化前和整合系統所有最佳化後的運算量進展比較。
|
|
|
37,756,466
|
|
21,525,097
|
|
20,349,935
|
|
14,171,138
|
|
8,534,049
|
|
1,983,397
|
|
1,451,206
|
|
923,355
|
在未最佳化前,語音壓縮編碼運算和語音壓縮解碼運算的運算量總為37,756,466個時脈數,經過系統程式最佳化後,我們做出了語音壓縮編碼運算和語音壓縮解碼運算的運算量總為923,355個時脈數,我們加速了四十倍。
在語音品質上,測試了語音在壓縮編解碼前後的品質。聽覺上比較起來,都是平順自然的語音重建,與原始語音比較幾乎沒有差別,因此我們所實作的編解碼器是可行的,並保證重建語音品質自然重現,不會有雜音及爆烈音產生。
語音在網際網路上的應用其後勢的發展十分看好。我們利用了德州儀器的數位訊號處理器 TMC320C6x 實現了一個多通道的網際網路電話閘道器的語音壓縮編解碼器,相信這個進展對未來網際網路電話的發展是有相當大的助益。
在未來方面,對於G.723.1語音壓縮編解碼的演算法,需再研究改善,使得在語音品質保持下,編解碼效率提升。另外在數位訊號處理器 TMC320C6x 上,也需研究,進而充分利用資源,提升運算速度。
未來亦可規畫影像傳輸在網際網路電話中,使其成為網際網路影像電話,進而實現多媒體傳輸。