為VoIP解決方案實現最佳音質
本文作者:admin
點擊:
2006-08-14 00:00
前言:
隨著網際網路語音(Voice over IP, VoIP)的日益普及,確保服務和設備能夠提供最佳的音質成為這類解決方案的關鍵因素。無論是VoIP的商業用戶或普通消費者,都期望VoIP的音質至少能夠達到現有移動或PSTN電話的水平。這意味著設備及應用開發商面臨著嚴峻的設計挑戰,因為他們必須考慮終端用戶的整體音頻使用感受。本文將探討開發商要確保VoIP設備的最佳音質所必須解決的一些問題。
電信應用的語音處理領域,在過去數十年引起了廣泛的興趣;同時,這些年來,業界一直不斷開發質量極高的解決方案。也因為如此,終端用戶對語音解決方案有著某種程度的質量預期。儘管VoIP在成本節省和服務改進方面提供了各種優勢,但部分由於的質量問題,其推廣一直不太順利。事實上,在傳統電話系統和新興的VoIP系統之間存在著若干基本差異,如果處理不恰當,可能對音質造成嚴重影響。
本文將討論VoIP面臨的主要特殊挑戰,並闡釋了通過正確的設計,VoIP解決方案的質量甚至可以大大超越PSTN。本文的要點在於全面論述影響端到端質量的所有問題,並涵蓋每個問題的主要因素,而非專門探討某一特定論題。
語音編碼解碼器
VoIP系統中基本的演算法構建模組是語音編碼解碼器(codec),它具備若干重要特性,包括語音質量、位元率、延遲、採樣率、封封包丟失穩健性、複雜性,以及對輸入信號類型的靈敏性。語音編碼解碼器所產生的語音質量,定義了可獲得的端到端質量的上限,這又決定了理想網路(沒有封包丟失、延遲、抖動、回聲或其他影響質量的因素)條件下的音質。
語音編碼解碼器的其他影響總體音質的相關因素還包括:對不同語音的處理,以及非語音信號(背景雜訊、音調和音樂等)的質量。
◎Codec的選擇
語音解碼器的位元率(bit-rate)決定了網路的頻寬負載。此外,資料封包標頭(IP、UDP、RTP)也顯著地增加了頻寬的負載。事實上,傳輸協議引起的開銷(overhead)常常超過實際有效負載的位元率。結果,位元率極低之編碼解碼器的頻寬利用率可能較中等位元率的編碼解碼器低不了多少,因此,不能單獨根據語音編碼解碼器的位元率來進行位元率和質量之間的權衡取捨。
VoIP環境中使用的語音編碼解碼器必須能夠處理封包丟失問題。這種穩健性決定了滿載的網路和擁塞條件下的音質,因為這兩種情形都很可能發生封包丟失。封包丟失問題將在後面討論。
語音編碼器引入的延遲可以分為演算法延遲和處理延遲。產生演算法延遲的原因是模組處理的成幀,因為編碼器會產生一組位(bit)代表一組語音樣本。此外,許多使用模組處理的編碼器還具有預測(look ahead)功能,該功能在模組編碼之前,需要對後來的語音樣本進行緩衝,這增加了演算法延遲。處理延遲是指編碼解碼一組語音樣本所需要的時間。
語音編碼演算法的複雜性決定了計算工作量和所需記憶體。複雜性是實現編碼解碼器的一項重要成本因素,一般隨位元率的降低而增加。同樣地,記憶體的要求也會影響實現的成本。
把用於窄頻產品的8 kHz採樣頻率提高到用於寬頻語音編碼的16 kHz,可以產生更加自然、更令人舒適、而且更清晰的語音。迄今,寬頻語音編碼只用於視頻會議等非常有限的應用領域,因為語音編碼器主要與公共交換電話網路(PSTN)相互作用,後者本身是窄頻的。VoIP的通話是在IP網路內部開始與結束的,故沒有這種限制。因此,由於可獲得動態質量的提高,用於下一代VoIP的語音編碼解碼器將是寬頻的。
基本上,所有理想的參數諸如低位元率、低延遲、低複雜性和低記憶體使用率等,均與獲得高基本質量和封包丟失穩健性這一總體目標相衝突,因此需要適用於不同環境的多個編碼解碼器。
◎實現問題
由於語音編碼標準是通過位元準確(bit-exact)標準規範來定義的,因此很容易便認為所有的實現都是相同的,但其實不然。事實上,為了減少複雜性和記憶體利用率,而對位元準確性和質量進行權衡取捨是極為常見的。如果需要脫離標準,就必須極其謹慎,並必須對代碼進行全面測試,包括高或低輸入級和音調等特殊情況,以驗證質量是否受損。偏離規範的另一個原因是某些標準中含有眾所周知而沒有進行糾正的“錯誤”(bug)。這種情況下,與標準不相容的實現方案提供的質量,可能反而比相容的要好得多。
有時候看起來似乎是編碼解碼器實現的問題可能有時與信號處理相關,比如濾波和有關時序安排及緩衝的問題。
在執行任何信號處理演算法時,有一個非常重要的問題,就是如何充分地利用可用的記憶體。能夠支援的通道數目往往是受限於記憶體的限制而非複雜性。不過,這是沒有什麼適用的普遍指導方針,因為每一種情況都不相同。例如,應該分配多少動態記憶體在某些暫存區域(scratch area);又有多少應該用於堆疊,都主要取決於配置。要獲得最好的記憶體利用率,每一個元件都以類似的方式進行實現也是很重要的,這樣公共記憶體區域才能夠得到充分利用。
解決網路質量下降問題
與資料封包網路相關的三大主要因素,即延遲、抖動和資料封包丟失,對可感知語音質量(perceived speech quality)有著重大影響。這3個因素都源自資料封包網路的特性,該種網路不能確保語音資料封包及時到達接收端、或甚至不能確保其能夠到達。這與傳統電話網路截然不同,後者極少或從不出現封包丟失現象,而且,傳輸延遲常常是固定參數,不隨時間而變化。上述網路影響是區分VoIP語音處理和傳統解決方案的最重要因素。如果VoIP設備無法以令人滿意的方式解決網路質量下降的問題,那麼其質量就永遠無法獲得接受。因此,在VoIP產品的設計和實現,以及在語音編碼解碼器等元件的選擇中,把IP網路的特性考慮在內是至關重要的。在接下來的各段中將討論延遲、抖動和封包丟失,以及其解決這些挑戰的方法。
◎延遲
影響雙向通信感知質量的因素有許多。其中一個極其重要的參數是兩端點之間的傳輸延遲。若延遲很長,就可能嚴重影響對話的質量和舒適度。長延遲引起的兩個主要效應是惱人的回聲和發話語音重疊(talker overlap),二者都會造成感知對話質量的嚴重下降。
在傳統的電話中,只有長距通話或與移動電話通話才會產生長延遲。但對VoIP而言,卻未必如此。VoIP設計中常常忽略了過多延遲的影響,因此,甚至在短距通話中也導致嚴重的質量下降。一般在無線局域網(WLAN)上進行的無線VoIP正越來越受歡迎,但這也進一步提高了延遲管理的難度。
圖1:延遲對ITU-T G.114標準通話質量的影響
延遲對通信質量的影響不容易測量,其隨使用環境的不同而有很大的變化。例如,由於手機的移動性提供了額外價值,所以使用者對在手機環境中長延遲的嫌惡不像在傳統有線電話中那麼明顯。此外,回聲的存在也對人們的延遲靈敏性產生重大影響:延遲越大,感知質量則越低。因此不可能給出一個單獨的數字,來表明究竟多長的延遲是可以接受的, 而只能提供一些指導方針而已。
如果總體延遲大於40ms,就能聽見回聲。延遲較小時,回聲將只被視作預期了的側音(side-tone)。只要延遲不太大,回聲消除演算法可以消除大部分回聲效應。若延遲太長(大於200ms),即使使用了回聲消除 ,也很難維持一種無發話語音重疊的雙向通話。這種影響常常由於回聲消除器設計的缺陷而被強化。不過,在純 VoIP通話中(沒有端點與PSTN相連),也可能不會產生回聲,這時稍大的延遲是可接受的。
國際電信聯盟電信標準化部門(ITU-T)在G.114標準中建議,單向延遲應該低於150ms以獲得可以接受的通話質量(見圖1。圖中,質量的感知影響是延遲的一個函數)。150ms~400ms的延遲是可以接受的,但前提是管理人員知道這個時間對用戶應用程式質量的影響,超過400ms的延遲則不能接受了。
◎丟包
大部分丟包都發生在路由器中,原因在於路由負載很高或鏈路負載很高。在這兩種情況下,佇列中都可能出現丟包現象。傳輸鏈路出現故障時也會引起丟包。其結果是資料連結層錯誤和不完整的資料封包被丟失。配置錯誤及衝突也可能導致丟包。在非即時應用中,丟包可以在傳輸控制協議(TCP)層通過重發得以解決。但對電話而言,這卻不是可行的解決方案,因為重發的包到達太晚而無用。
當發生丟包時,必須採用某些機制來填補失去了的語音信號。這種解決方案通常被稱為丟包錯誤掩蓋(packet loss concealment, PLC)演算法。為了獲得最佳性能,這些演算法必須對語音信號進行準確預測,並在以前的解碼語音和插入片斷之間順利過渡。
由於丟包主要發生在網路重負載時,故突發傳輸中會不時出現丟包現象。一個突發可能包含一系列連續丟失包或一段高丟包率時間。顯然,當連續丟失幾個資料封包時,就算是最好的 PLC 演算法也難以獲得可接受的語音質量。
為了節省頻寬,有時一個資料封包會載入了多個語音幀,這樣一來,丟失了一個包也有可能導致多個幀的丟失。即使只是偶爾出現丟包現象,用戶接聽時的感覺也類似於突發傳輸中丟包的感受。
◎丟包錯誤掩蓋
以往,處理丟包的方法主要有兩種,而且非常簡單。第一種叫做零填充(zero stuffing, ZS),即簡單地用與丟包持續時間一樣長的靜默期來代替丟失了的包。這種方法當然不能提供高質的輸出,即使丟包率低到1%,雜訊也會很明顯。
第二種方法是封包重發(packet repetition, PR),即假設兩個連續語音幀之間的差異相當小,並通過簡單地重發前一個資料封包來代替丟失了的包。然而,在實際情況中,那怕音調頻率有微小變化,我們的肉耳也是可以輕易地識別出來的。此外,利用這種方法,要實現資料封包之間的順利過渡事實上是不可能的。不過,在丟包幾率非常小(小於3%) 時,採用這種方法也相當不錯。
不過,重發以前的資料封包等這些簡單方法並不能為無線應用提供足夠好的質量。相反,一種複雜的演算法可以處理10%的丟包而不會導致明顯的性能下降。
處理丟包的另一種方法,是推行一種專為丟包處理而設計的語音編碼技術。目前尚沒有任何一種語音編碼標準(如:ITU codec)採用這種方法,故它們均對丟包十分敏感。不過,在傳統的語音編碼標準機構之外,一些穩健的新編碼解碼器正逐漸獲得採納。例如網際網路工程工作小組(Internet Engineering Task Force, IETF)正在制訂iLBC語音編碼解碼器的標準(注1)。
圖2:處理丟包錯誤掩蓋的不同方案的主觀測試結果
資料來源:Lockheed Martin Global Telecommunication (COMSAT)
圖2顯示了多種處理G.711編碼解碼器丟包方案的主觀接聽測試結果。ZS和PR方案很明顯不能提供可接受的質量。G.711附錄I(圖中標注為ITU PLC)中描述的丟包掩蓋方法具有較好的質量,但明顯不如[注2](NetEQ)描述的方法,也不如專為稱作增強型G.711的資料封包網路而設計的編碼解碼器。
◎網路抖動
與恒定的演算法延遲及處理延遲不同,傳輸延遲隨時間而變化。這是因為一個資料封包通過IP網路的傳輸時間將受排隊的影響而有所不同。傳輸延遲分為兩部分,恒定的或變化緩慢的網路延遲,以及基本網路延遲之外、通常被稱為抖動的快速變化。抖動的定義是連續資料封包之間延遲差值對時間的平順函數。
資料封包網路中出現的抖動使接收器設備中的解碼過程變得複雜化,因為解碼器要求快捷和及時地獲得資料封包,否則解碼器就不能產生平順連續的語音。抖動緩衝器一般是用來確保在需要時能獲得資料封包。
◎抖動緩衝器設計
為了確保在需要發送時有可用的資料封包,必須採用一個抖動緩衝器。它可以消除資料封包到達期間的抖動,但代價卻是令總體延遲加長。抖動緩衝器演算法的目的是盡可能減小緩衝延遲,同時,把到達太晚而無用的資料封包數量減至最小。較大的抖動緩衝器會令延遲加長,但丟包減少;較小的抖動緩衝器雖然可降低延遲,卻提高了丟包率。
傳統的解決方案是先把進入的資料封包儲存在一個緩衝器中(包緩衝器),然後再發送到解碼器。由於資料封包可能不按順序到達,故抖動緩衝器並非一個嚴格的先入先出(FIFO)緩衝器,而是根據需要對資料封包進行重新排序。最直截了當的方案是讓緩衝器擁有固定數量的資料封包,這將產生恒定的系統延遲,不但無需計算,而且也最簡單。不過,其缺點卻是緩衝時間必須夠長,足以應付最壞的情況。
為了儘量減少延遲,抖動緩衝器演算法必須能迅速適應不斷變化的網路條件。因此,目前最常用的是能夠進行動態大小分配的抖動緩衝器,即所謂的自適應抖動緩衝器(adaptive jitter buffer)。實現這一適應性的方法,是把資料封包插入到緩衝器中以加長延遲,以及丟棄資料封包來縮短延遲。資料封包插入一般就是指重發之前的資料封包,但這會導致聽得見的失真。因此,要縮短延遲以避免質量下降時,大多數自適應抖動緩衝器演算法都是非常謹慎的。
這種傳統資料封包緩衝器方案的適應粒度(adaptation granularity)一般受資料封包大小所限制,因為它只能夠通過增加或拋棄一個或幾個資料封包來改變緩衝時間的長短。
傳統抖動緩衝器的另一個主要局限性是,為了儘量減低除去資料封包時所產生的聽得見的失真,傳統抖動緩衝器一般只在靜默期工作。因此,延遲是在話音突發(talk spurt)期間建立的,而且可能需要數秒種時間才能令延遲縮短。
最近,業界出現了一種將先進的自適應抖動緩衝器控制和錯誤掩蓋結合在一起的解決方案(注2)。這種獨特的演算法把自適應抖動緩衝器控制和丟包掩蓋整合在一個單元裏,能夠在毫秒之內改變緩衝器的大小。該方案可以迅速適應不斷變化的網路條件,並確保具有最短延遲的最佳語音質量。這是可以做到的,因為演算法是與解碼器一起工作,而不是在資料封包緩衝器中進行。除了把抖動緩衝器延遲減至最小以外,該演算法的丟包掩蓋部分乃基於一種新穎的方案,能夠獲得比標準PLC方法更好的質量。實驗顯示,在典型的VoIP環境中,採用這種方案可使單向延遲減小約30ms~ 80ms(注2)。
◎回聲消除
影響端到端質量的其中一項要點是對話期間出現的回聲量。這種影響只會在兩個端點建立起通話之後才會出現。為了避免回聲的干擾,常常在信號路徑的某個合適點處插入一種回聲消除演算法。要獲得高音質,對回聲消除器的要求非常嚴格,而事實上,從某種意義上來說,現在所有的演算法都是不完美的。不良設計的後果表現在好幾個方面,最常見的有:1.聽得見的回聲;2.語音削波;3.雙向通話性能差。
如果來回延遲大於40ms,回聲將產生嚴重干擾。由於 IP 電話系統中的延遲相當高,發話者可以聽到明顯的回聲。因此,要維持高通話質量,必須消除回聲。有兩類回聲可能會降低語音質量:網路回聲和聲學回聲。
◎網路回聲消除
網路回聲是電話網路中的主要回聲源,其產生原因是PSTN交換設備中混合電路的阻抗失配,在這種混合電路中,兩線用戶環路線與長距幹線 (圖3) 的四線環路線相連接。網路回聲路徑是固定不變的,除非通話被轉移到另一個手機上或有第三方連接到電話通話上,這才會導致回聲路徑的突然改變。
圖3:PSTN中引起回聲的網路混合電路示意圖
如前所述,資料封包交換網路中常用的回聲消除或削減解決方案,基本上採用電路交換網路的技術。但要獲得最佳質量,必需利用系統性方法來解決資料封包網路特有的音質問題。在“重新包裝的”電路交換回聲消除器和最優化的資料封包網路回聲消除器之間存在著明顯的差異。例如,PSTN本身沒有處理資料封包的能力,故在進行能量計算以決定是否更新自適應濾波器時,只會考慮個別的語音樣本。相反,專門為資料封包網路而設計的消除器就可以執行資料封包預測處理,即不僅考慮當前的資料封包,還考慮到了80或160個等的額外樣本。通過基於整個資料封包的計算,可以獲得更高精確度的濾波器更新和雙向通話檢測。
◎聲學回聲消除(AEC)
當電話的話筒和揚聲器之間(這主要是與無線及免持設備相關的問題)、或基於PC系統的麥克風和揚聲器之間存在著反饋路徑時,就會出現聲學回聲。除了從話筒到揚聲器的直接耦合路徑之外,揚聲器的聲波從牆壁、地板、天花板、窗戶、傢俱、汽車的儀錶板,以及其他物體反射回話筒時,也可能引起聲學回聲。因此,聲學回聲路徑不是固定的。
設計VoIP AEC和設計傳統電話應用 AEC 兩者之間的差異非常小。不過,由於一般VoIP中的延遲較大,故其對AEC的要求也往往更加嚴格。此外,寬頻語音增加了質量和複雜性方面的難度。
◎輔助語音處理
在VoIP設備中,除了眾所周知最重要的語音處理元件外,還包括用來提升用戶使用感受或降低頻寬要求等等的許多其他元件。鑒於“一子錯滿盤皆落索”的道理,從全局出發,即使是這些似乎不那麼重要的元件也必須正確設計。
這類元件有自動增益控制(AGC)、語音活動檢測(VAD)、舒適雜訊產生(CNG)、雜訊抑制以及用於多方通話功能的信號混合。一般而言,傳統電信解決方案和VoIP 決方案對這類元件的設計或要求並沒有太大的差異。不過,VoIP系統往往更常用VAD和CNG元件,這主要是由於VoIP中的協議開銷,頻寬的淨節省極為可觀;而且在無語音資料封包發送時,IP 網路相當適合於利用可變位元率來傳輸其他資料。若VAD演算法存在錯誤分類,有時可能出現語音信號的削波和雜訊突發。此外,鑒於靜默期時只有舒適雜訊(comfort noise)傳輸,背景信號可能聽起來佷不自然。CNG 最常見的問題則是信號級太低,容易產生另一方已經離開對話的錯覺。這些性能問題令設計人員必須謹慎使用VAD,以避免引起不必要的質量下降。
由於IP網路的特性,實現多方通話也面對一些挑戰。例如,因多方通話同時有多個信號混合在一起,而且有多個接聽者存在,所以對延遲、時鐘偏移以及回聲消除性能的要求會嚴苛得多。在這種情況下,具有低延遲並能夠有效處理時鐘偏移的抖動緩衝器就可以大大地提高性能。此外,通話各方可能使用不同的編碼解碼器,這將產生嚴重的複雜性問題。再者,這些編碼解碼器甚至可能採用不同的採樣頻率。這樣一來,能夠管理複雜性的智慧方案就顯得十分重要。降低複雜性的方法之一是利用 VAD 來判斷在各端點有哪些參與者處於活動狀態,並只把它們混合到輸出信號中去。
◎硬體問題
另一項主要挑戰是在VoIP設備的硬體介面中正確處理音頻。這些設備往往體積很小,價格必須低廉,而且一些原本是為其他應用 (如 PC 和 PDA) 而設計的,因此要獲得良好的語音質量和低延遲便需要克服許多困難。
在VoIP設備的設計中,許多因素均對語音質量造成影響。話筒、揚聲器和類比數位轉換器都是很明顯的例子。這些問題都非常類似於一般電話設備設計中常見的挑戰,但這並不意味著VoIP設備的設計是一項輕鬆任務,而是必須充分利用該領域已有的專業能力來實現最理想的質量。
還有一個與設備相關、可能會嚴重影響延遲和語音質量的問題是時鐘偏移(clock drift)的處理。傳統的解決方法是在接收器部署一個時鐘同步裝置,通過把接收到的RTP資料封包的時間標籤(time stamp)和本地時鐘進行比較,來校正時鐘偏移。這種解決方案存在的問題與傳統資料封包緩衝器的類似:它們都不頻繁地進行大幅度調節,故每一次調節都非常明顯。此外,由於資料封包速率低而且存在抖動,所以在VoIP中很難進行可靠的時鐘偏移估計。結合了抖動緩衝器控制和錯誤掩蓋的技術就可以提供解決方案,因為它能夠自動校正時鐘偏移,同時又不會造成任何聽得見的雜訊或額外的延遲。
PC和PDA的VoIP
要讓PC、PDA或其他原本不是專為執行即時語音而設計的設備可以進行語音操作,存在很多新的挑戰,包括如何在一個非即時操作系統中與其他應用共用資源。這些作業系統中不可預測的回應時間及線程處理若然處理不當,便可能顯著增長延遲時間,並造成音頻輸出間隙。某些作業系統,尤其是用於PDA 類設備的,由於不能全面支持多線程,在需要同時運行幾個應用程式的環境中實現低延遲就非常困難。
為節約成本,這些設備常常配備劣質音效卡,結果可能令數位信號的質量很差,而且為了避免採樣失真,不得不採用數位重採樣濾波器。事實上,有一種很好的解決方法,即利用音效卡本身的採樣頻率(典型值48 kHz)來記錄和播放,並在上/下採樣過程中選用設計良好的數位濾波器以避免偽信號的問題。一般的音效卡及相關驅動器帶來的另一個挑戰,是緩衝會造成顯著的延遲和抖動。這種影響非常類似於網路抖動,所以通過把一個高效抖動緩衝器和音效卡處理集成在一起,便有可能大幅度減小延遲。
如前所述,若採用的音效卡質量低劣,時鐘偏移的影響可能非常嚴重。如果不採取措施減小這種影響,因時鐘偏移而引起的延遲常常達一秒之久。把抖動緩衝器和丟包掩蓋結合在一起的極快速自適應抖動緩衝器解決方案,就可以自動解決這一問題,而無需對實際時鐘偏移進行估計。
極高的雜訊水平是極常見的,尤其是採用內置話筒時,因為它會收錄電腦風扇的雜訊,所以最好包含一個雜訊抑制演算法。
如果PC是用於免提電話之類的應用,為了避免對話另一方的回聲干擾,必需採用聲學回聲消除。由於音效卡的缺陷,以及設計時對聲學環境完全不瞭解,這種設備為AEC設計帶來了一連串全新的挑戰。例如,常見的配置是內置了劣質話筒及揚聲器的筆記本電腦,這種配置會在回聲路徑上引入雜訊和非線性度。此外,筆記本電腦的底盤和電氣耦合也常常會造成相當程度的音頻洩漏。其他的常見配置還有使用外部話筒和揚聲器的設備,在這種情況中,除了音效卡有洩漏外,一般都不存在洩漏。不過,還有其他一些挑戰,例如話筒和揚聲器的相對位置對 AEC 有相當大的影響,兩者可以通過不同的音頻介面連接 (話筒一般以 USB 介面連接),從而可能導致時鐘偏移。
能夠處理這種變化條件的AEC設計必須非常靈活,並能夠適應不同的音頻環境。
結語
VoIP設備的設計人員會面對許多挑戰,其中一些類似于傳統電信設計,但另一些卻是VoIP所特有的。本文對其中的最主要部分進行了討論,並給出了解決方案。VoIP 所特有的各方面問題中,最重要的是與傳輸媒體IP網路特性有關的。這種設計必須能夠處理丟包和傳輸時間抖動問題,同時具有最小延遲和高音質。本文論述了通過正確的設計,VoIP可以獲得與PSTN同等的甚至更好的質量。其中最關鍵的是語音codec,其必須功能強大而穩健,足以解決丟包問題,並能以最小的延遲提供高質量的極快速自適應抖動緩衝器解決方案,這可以通過一種新穎的技術得以實現──也就是把抖動緩衝器自適應和丟包掩蓋結合於同一個演算法中。
參考文獻
[注1] IETF draft, “Internet Low Bit Rate Codec (iLBC),” draft-ietf-avt-ilbc-codec-04.txt, November 2003, Andersen, et al.
[注2] Whitepaper, “GIPS NetEQ™ - A Combined Jitter Buffer Control/Error Concealment Algorithm for VoP Gateways,” available from Global IP Sound.