2008年4月30日 星期三

網路電話音質與改善方法

網際網路的普及讓全球連結的效率增加、成本降低,進而帶來透過網際網路傳送聲音的實現。由於使用網際網路的成本非常低,因而網路電話的成本也能大幅降低,遠低於長途電話、國際電話以及行動電話費率。

然而由於網路電話是透過網際網路來傳送封包,因此會發生的封包遲延、掉包等問題。一般網頁呈現、電子郵件以及檔案傳輸,都不必具有即時傳輸的需求。但是電話要求的卻是即時系統,只要雙方通話的延遲超過400ms(0.4秒),就會造成通話上的嚴重干擾。

此外,資料傳輸如果發生封包遺失,可以透過重傳的方式來確保資料的完整性,但是聲音轉換成數據封包傳送出去,如果封包遺失,基於即時的要求,重傳是不可能也不可行的作法。封包遺失率超過5%會造成雜音、斷話等現象。另外,封包延遲則會帶來迴音與顫音現象。

影響網路電話品質的因素

一、語音壓縮與解壓縮

語音編碼壓縮與解壓縮Codec(Code and Decode)能影響需要的頻寬大小與聲音品質,尤其是對於封包遺失率的處理能力。傳統交換機的Codec為G.711,頻寬為64Kbps,如果加上OverHead,大約為108Kbps,但是網際網路目前尚無法大量使用超過100Kpbs的應用,頻寬取得的費用雖然比起10年前大幅降低,但是這種頻寬消耗,就網際網路現況而言,仍然稍微「奢侈」了些。

早期網路電話採用的Codecs以G.723、G.726、G.729以及GSM最常見,目前iLBC有愈來愈普及的現象,主要原因是iLBC為開放原始碼形式,G.723與G.729需要付License費用。G.723雖然佔用頻寬小(5~6Kbps左右),但是加上Overhead時超過30Kbps。iLBC需要的CPU處理能力與G.729約略相當,封包小於G.729,且對於封包遺失率的處理能力能超過20%,G.729則只能應付不到10%的封包遺失率。

二、取樣頻率與可用頻寬

取樣頻率的不同,會影響聲音轉換成數據封包,再轉換成聲音的真實性。傳統交換機系統受限於先前的技術,只能使用窄頻的8KHz(每秒8000Hz)技術來進行聲音取樣,這種取樣方式的目的是儘量讓聲音能夠經過轉換之後,能夠順利讓受話端接聽。

目前使用的取樣頻率,漸漸開始採用16KHz(每秒16000Hz)技術來進行聲音取樣,寬頻取樣的好處,除了讓受話端聲得懂發話端的聲音,還要求將發話端的聲音以立體音的方式,傳到受話端。

網路電話顧名思義是使用網路來傳送電話,因此網路頻寬會嚴重影響聲音的效果與品質。不同Codec使用的頻寬各不相同。計算頻寬需求除了要考慮Codec所需要的頻寬之外,也必須將封包頭與封包尾加入一齊計算。有些Codec本身佔用的頻寬不大,但是加算封包頭尾的成本(OverHead)之後,需要頻寬反而大幅增加。

三、遲延

儘管封包在銅纜與光纖中能以非常快的速度傳送,但不同網路設備的介接與轉換,都會造成封包傳遞的遲延,這種因為物質特性所造成的遲延稱為物理遲延。

TCP/IP架構讓封包能透過不同的路由,從發送端抵達接收端,不同的封包達到接收端的時間可能並不相同,因此到達接收端之後,必須將封包進行排列,這樣也會造成一定時間的遲延,這種遲延稱為網路遲延。

由於網路架構與設計的目的會讓封包在傳送過程產生各種不同的遲延,封包遲延會造成迴音與顫音。當封包遲延超過40ms(0.04秒)時,人耳就可以分辨出有迴音出現。好的網路環境是確保封包遲延低於150ms(0.15秒)。人耳能接受的聲音遲延大約是150ms到400ms(0.4秒)。超過400ms的遲延會造成聲音品質惡劣而無法接聽。

四、封包遺失率

在網際網路環境上,可能因為特定網路段的擁塞、設備無法負荷過大的流量等因素,造成封包遺失,在不同介質連接或不同網路標準或協定轉換時,也可能造成封包遺失。一般網際網路上的服務是使用TCP協定,當發生封包遺失的情形發生時,透過協商(Hand Shaking)的方式,接收端會要求發送端傳送丟失的封包,甚至全部重新傳送。但是語音有即時性的要求,所以通常採用發送後不理的UDP協定(更正確地說是使用RTP協定),因此當封包遺失的情形嚴重時,網路電話就會出現雜音、聲音消失,甚至於通話中斷的情形。

早期網路電話使用的Codec(s),對於封包遺失率的忍受能力欠佳,超過5%的封包遺失率將使MOS(Mean Opinion Score)值低於3.0而無法提供「可營運品質」的聲音。一般來說,傳統電話的MOS約在4.1左右,低於MOS 3.0代表語音品質欠佳,無法用來作為網路電話營運之用。新的Codec(s)技術會透過對於語音編碼技術的處理來處理封包遺失率,這些演算法能處理超過10%甚至於高達20%的封包遺失率,MOS仍然保持3.0以上的聲音品質。

改善網路電話音質的方法

一、顫音緩衝(Jitter Buffer)

由於顫音(jitter)的發生是由於網路中封包傳送的速度忽快忽慢產生的抖動、令人覺得不舒服的聲音。解決顫音的作法,通常是在設備接受端使用若干記憶體當做緩衝區,可以收集忽快忽慢到達的封包,然後加以排序,以改善顫音現象。由於聲音的特定是即時性,顫音處理必須在有限的時間條件下完成,因此太大的緩衝區不但可能浪費記憶體,同時也會讓語音封包的遲延反而變得更為嚴重。反之,如果顫音緩衝區太小,會造成有些封包被丟棄,造成封包遺失率增加。因此,顫音緩衝區的大小應該從實際操作端加以調校,找出最適合的大小。

二、服務保證(QoS)

QoS作法是針對不同的封包或協定,貼上標籤(Tag)進行處理,讓帶特定標籤的封包或協定能被優先處理並加以傳送。QoS的演算法有數十種以上,有些QoS能針對不同的封包或協定,使用多個不同優先等級佇列(Queue)的方式,保證讓後到但是優先權較高的封包或協定優先處理傳送。此外並可針對可用頻寬加以切割分級,不同的封包或協定透過不同的頻寬傳送。更複雜的演算法設計還能使用「借用頻寬」的方式,來加速封包的傳送。有些演算法甚至於針對優先等級來決定頻寬借用問題,高優先等級的封包或協定可以借用低優先等級的頻寬。

QoS並非改善網路電話音質的萬靈丹,當網路環境不良時,封包遺失率的增加將會抵消QoS帶來的效益。此外,由封包發送端到接收端,所有的節點(Hup)都必須支援同樣的QoS機制,一旦其中任何一個節點不支援QoS,將使封包混合而減低封包分類、傳送的效果。

三、改善網路環境

改善網路電話音質最直接有效的方式,就是改善網路環境,透過增加接取設備的頻寬,將使電話音質能得到具體的改善。例如將頻寬由64Kbps增加到256Kbps。必須強調的是Codec(s)佔用頻寬的大小,應該考慮封包成本(Overhead),舉例來說G.711雖然只站64Kbps,但是把 Overhead一齊加總的結果,所需要的頻寬超過100Kbps。改善往網路環境意味著必須增加投資,可能包括更換設備與增加頻寬。

改善網路環境還是會有壞消息:由於網際網路跨越範圍可能很廣,眾多連接設備可能有一個到數個會發生問題,這時候會使封包遺失率瞬間提高,甚至於超過10%以上,這種現象對於瀏覽網頁與收發電子郵件時,沒有什麼感覺。但是,對於需要即使的語音封包卻可能造成要命的影響。

四、選擇好的Codec(s)

改善網路電話音質最終極的方法是選擇好的Codec(s),使用好的Codec(s)能對抗瞬間爆發的封包遺失率。建議在窄頻環境使用iLBC,寬頻環境使用ISAC或Enhence G.711(簡稱EG.711),這些Codec(s)在封包遺失率超過20%的情形下,MOS值仍然超過3.0的優異效果,這個優點對於網路環境不佳的國家或地區特別有吸引力。當然,前提是頻寬還是要滿足這些Codecs的需求,iLBC建議至少30Kbps以上,EG.711最少應該有80Kbps。

結論

傳統網路與網際網路的迷思是透過QoS的技術,保證特殊的服務與封包能夠優先處理與傳送。但是如果網路環境不佳,優先傳送的封包發生遺失(俗稱掉包)的情形,網路電話的音質依舊會發生不穩定或不良的情形。因此要徹底改善網路電話音質,應該由改善網路環境著手,使用較大的頻寬,儘量以Cable取代無線環境。當網路環境無法改善或短期無法改善時,選擇好的Codec能改善的效果,將會遠優於使用傳統QoS的效果。

作者:康仁財/普羅通信股份有限公司技術部經理
分享至PLURK 噗浪 分享至FACEBOOK 臉書

沒有留言: