王亞光,劉一偉,張文杰,李云龍
(1.南開大學信息技術科學學院 計算機科學與信息安全系,天津300071;2.北京大學 數學科學學院數學系,北京100871)
實時語音在傳輸過程中,由于網絡帶寬的限制、分組原因、網絡狀況惡化或者路徑選擇等問題都會造成語音分組[1]的丟失,即丟包現象[2]。丟包率一旦過大,通話質量就會受到嚴重的影響。盡管現在有很多優秀的算法能夠對丟包后的語音數據進行處理和恢復[3],其恢復結果在低丟包率的情況下也表現得很理想,但是在高丟包率的情況下,這些算法的效果并不是很好,其根本原因是采用丟包恢復算法對提高語音質量是一種治標不治本的策略。對此,本文提出了一種在實時語音傳輸過程中抗分組丟失的自適應傳輸調整算法,在實際語音通信系統中加載該算法的運行,結果表明該算法通過調整語音傳輸速率減少了抗語音分組的丟失。
抗語音分組丟失自適應傳輸調整算法分為圖1所示的3個部分:反饋信息量化模塊、網絡狀態判定模塊和傳輸速率調整模塊,其中虛線部分表示自適應功能部分。

圖1 抗分組丟失的自適應傳輸調整過程
其中,反饋信息量化模塊的功能是對反饋的網絡狀態信息的計算,是根據RTCP[4]承載的反饋信息來計算反映當前網絡狀況的一些特征值。網絡狀況判斷模塊是根據上一步的量化結果來分析當前網絡所處的狀態或變化趨勢,并對網絡狀態做出判定,接著將判定結果交給傳輸速率調整模塊。傳輸速率調整模塊根據判定的網絡狀態結果重新計算語音傳輸速率,然后再將新的傳輸速率通知語音編碼壓縮模塊,語音編碼壓縮模塊根據新的傳輸速率調整壓縮后的語音發送速率以適應當前網絡狀況。下面分別介紹這3個方面的實現方案。
對反饋的網絡狀態信息進行量化是利用RTCP報文的RR分組中的丟包率字段值來進行計算的。本文解析工作是從接收端反饋回來的RTCP的控制報文RR中的丟包率字段值獲取語音數據包的丟失率,如果RR報文中有多個同源標識符SSRC且同一時間的報告塊,那么以丟失率最大的那個SSRC報告塊作為對象來獲取量化所需要的丟失率參數。對獲取的丟失率再通過一個平滑器(也稱低通濾波器)[5]進行平滑處理。平滑后的結果就是量化結果,是判定網絡狀態的依據。其平滑計算公式為

式中:Pn——待求的預測值,即丟包率量化值。Pn-1——Tn時刻的丟包率量化值。Pback——Tn時刻RTCP報文中的丟包率。B——常量,稱b為平滑算子,且0<b<1。
由公式得出:當網絡發生擁塞時,數據包丟失率Pback的值會長時間較大,Pn會逐漸增大而接近Pback。當網絡由擁塞變為輕載狀態時,Pback的值會轉變成一個很小的值,如持續時間較長,則Pn會逐漸變小而接近Pback。
通過平滑器來實現網絡狀態量化的這種自適應過程跟平滑算子b有很大的關系。這是因為b能過濾掉很大的隨機波動,如果b的取值太小,則它對丟包率的反映就會較慢。如果b取值太大,則它對丟包率的反映就會過度敏感,有可能造成語音傳輸速率的震蕩調節。因此,合理取得b值尤為重要。通過不斷改變b的值,可以獲得多組Pn值,且每組Pn與一個b值相對應,通過對每組Pn接近Pback的平滑效果分析,b取0.3時平滑效果表現最佳。
本文將網絡狀態分為3個區間:網絡輕載(UNLOAD-ED)、網絡滿載(LOADED)和網絡擁塞(CONGEST)。對于語音品質,低于200ms的時延和4%的丟包率,是可接受的范圍;時延在200~400ms,丟包率在4%~8%之間時,是一個邊緣范圍,可滿足部分用戶的要求;當時延超過400ms,丟包率超過8%時,則不能滿足語音會話的需求。引入兩個閥值Lu和Lc來劃分3個區間,以分別表示網絡所處的網絡輕載、網絡滿載和網絡擁塞3種狀態,從而當前網絡所處的狀態。本文取Lu=4%、Lc=8%將網絡劃分為3個狀態區間,如圖2所示。

圖2 網絡狀態劃分
由式(1)求得的網絡狀態量化值Pn跟閥值進行比較,則可以判斷出當前的網絡狀態,例如:Pn<Lu:網絡輕載;Lu<Pn<Lc:網絡滿載;Pn>Lc:網絡擁塞。
調整傳輸速率的作用是根據網絡狀態調整語音的傳輸速率,不能通過急劇增加或急劇減小的方式調整語音傳輸速率,快速的速率調整會造成語音劇烈的震蕩,從而影響接收端的語音效果。通常在調節過程中應采用慢增慢減的調節方式[6],以一種平滑的方式調整速率,這樣接收端的語音就具有良好的穩定性。
為實現根據網絡狀態[7]來調節語音的發送速率,本文引入模型TCP擁塞控制算法[8-9]AIMD(additive increase and multiplicative decrease),以控制網絡流量。該算法的主要思想是:當網絡中出現分組丟失時,發送窗口中數據量將以乘積方式減少,否則就簡單地增加一個數據包的發送量。本文對AIMD算法中加性因子a與乘性因子b進行改進,從而使其能以一種慢增慢減的方式來調整語音的傳輸速率。AIMD算法中流量控制的數學表達式如下

其中,Z(t+1)——t+1時刻的發送速度;Z(t)——t時刻的發送速度;a——加性因子,a≥1;b——乘性因子,0≤b≤1;r——t時刻報文丟失率;TH——報文丟失門限值。
式(2)表明AIMD算法是根據報文丟失率作為調節傳輸速率的依據,當報文丟失r小于門限值TH時,發送速度或帶寬就在原有的基礎上線性增加a(a≥1),一旦r超過門限值TH時,發送速度或帶寬將乘積減少b(0≤b≤1)。
但并不能直接用AIMD算法來調節語音傳輸速度,這是因為AIMD在進行流量擁塞控制過程中為了更好地體現競爭網絡帶寬的公平性,一般取a和b的值為1和1/2。也就是說,一旦出現分組數據丟失,AIMD將利用乘積方式將帶寬減半。但對語音傳輸速率而言,在語音分組丟失后如果語音傳輸速率直接減半,將會造成傳輸速率的震蕩調節,直接導致接收端語音數據產生強烈抖動。為此,本文以RR報文中的丟失率為傳輸速率的調整依據,而參數a和b無法自適應地與報文丟失率建立聯系,這就必須對式(2)進行改進:利用報文丟失率作為參考依據引進一個預測值K,利用K消掉參數a和b。而預測值K可以通過RR報文中的丟失率平滑后的結果Pn和抖動量J求得。
(1)抖動量的獲取
在計算抖動量[10]之前,先計算接收端兩個RTP語音數據包之間的相對傳輸時間D。設有兩個RTP語音數據包Rj和Ri,T1表示包Rj的RTP時間戳,T2表示包Rj的到達時間,T3表示包Ri的RTP時間戳,T4表示包Ri的到達時間。Rj包的單向延時可表示為T2-T1;Ri包的單向延時可表示為T4-T3;那么相對傳輸時間差D可表示為

每當從一個特定的信源接收到RTP包時,通過下面遞推公式得到抖動量J

D(i,i-1)為包i和前一個包i-1的差值。這是一個最佳一階估計量,而且增益參數1/16在實現了較好的降噪比的同時,又維持了合適的收斂速度。這個抖動量J在發送RTCP的RR報文時,將填入RR報文的Inter arrival jitter字段中。當RR分組到達發送端時,抖動量J將被預測參數量K引用。
接收端通過RTCP協議進行自動計算Pn的語音分組丟失率,且與抖動量一起通過RR報文傳給發送端。
(2)預測量K的計算
預測量K通過下式求得

式中:Lmax——實時語音流傳輸時允許的最大丟包率;Jmax——實時語音流傳輸時允許的最大間隔抖動;Pn、J——當前丟包率平滑的網絡狀態量化值和抖動量;λ1、λ2——Pn、J的預測權重,其中0<λ1<1,0<λ2<1,且λ1+λ2=1。其中λ1和λ2參數可以根據網絡背景情況進行設定,在網絡物理環境好、網絡拓撲結構并不復雜的情況下,可以適當地增加Pn的預測權重,即取λ1>λ2;在網絡物理環境復雜多變、網絡中間節點多的情況下,可以適當地增加J的預測權重,即取λ1<λ2。
通過反映當前網絡狀態的預測值K來預測語音的發送速度,能減少因網絡狀態帶來的語音分組丟失。在式(3)中引入預測量K,式(4)中增加乘積可得到根據網絡狀況來調整語音傳輸速率的模型式(6)

式中:Z(0)——初始時刻的語音數據的發送速度;和式中的2和積式中的1/2為修正值,目的是使得語音傳輸速率平穩,避免因傳輸速率震蕩調節而產生較大的語音抖動。e表示進行速率增長和減少的閾值,依據第二階段判斷網絡狀態模塊的量化值Pn,通過e=Pn/Lmax歸化到區間[0.1,0.5]之間,具體的歸化方式利用下面的公式

歸化的目的是使得閥值e與網絡狀態值Pn建立一種聯系,讓閥值e來反映網絡狀態的變化情況。當公式中e=Pn/Lmax小于0.1時,一律歸化到最低門限0.1,表明網絡絕對處于輕載狀態,這時預測量K是一個比0.1小的值,速率將會慢慢增加;當e=Pn/Lmax大于或等于0.1小于或等于0.5時,速率的調節視K而定,如果預測量K小于e表明網絡處在一個輕載或滿載初期狀態,可以適當地增加傳輸速率,如果預測量K大于e表明網絡處在一個滿載向擁塞的過度時期,這時速率將會慢慢減少;當e=Pn/Lmax大于0.5時,一律歸化到最高門限0.5,表明網絡已經有擁塞趨勢或處于嚴重擁塞狀態,預測量K將是一個比e大的數,這時速率將會慢慢減少。
整個速率調節過程通過預測量K能自適應地根據網絡狀態門限(Threshold)閥值e進行速率調整,修正值的引進可以使速率調整以一種慢增慢減的方式進行。
抗語音分組丟失的自適應傳輸調整算法在應用到實時語音傳輸通信中之前,必須對該算法進行抗語音分組丟失的性能測試。為此自行搭建如圖3所示的拓撲結構的網絡環境。

圖3 網絡拓撲模式
在同等條件下,以網絡輕載、滿載、擁塞3種網絡狀況為背景,在相同的一段時間內,分別統計在每種網絡狀態中加載該算法前后兩種情況下RR報文中的分組丟失率。通過對每種網絡狀態階段中算法加載前后丟失率的分析,來評估該算法的性能。
實驗前,先設定算法中的參數b設為0.3,Lmax為0.12,Jmax為0.08s,權重 w1、w2分別設置為0.6和0.4,語音初始傳輸速度為8kb/s。接著對網絡狀態的3個階段進行實驗,統計每個階段算法加載前后語音分組丟失率的比例,其中實驗時間為30s,RTCP的RR報文平均每2s從接收端向發送端反饋一次,因此可以獲得15組語音報文丟失數據。通過對這15組數據進行分析,在同等時間段內、相同條件下該算法表現出來了抗分組丟失的性能優勢。
(1)網絡輕載狀態下的比較情況:在實驗過程中使網絡處在網絡輕載狀態。則發現,在沒有加載該算法時,15組數據基本上全為零,這意味著在語音傳輸過程中沒有分組丟失,且語音清晰,延時非常小。同樣,在加載了該算法的條件下,15組數據也基本上全為0,語音效果與未加載時一樣。因此,在網絡輕載狀態下,抗語音分組丟失的自適應傳輸調整算法無法表現出其優越性,這是因為足夠的網絡帶寬能保證語音分組的丟失率下降。
(2)網絡滿載狀態下的比較情況:通過向網絡中加入一定的數據流來消耗網絡帶寬,使網絡狀態處在一個滿載狀態,然后啟動語音通信,在相同時間段內,分別統計算法加載前后RR報文中語音分組的丟失率(即丟包率),各15組數據。其丟包率隨時間的分布如圖4所示。

圖4 滿載狀態丟包率比較
在圖4中,藍色的菱形代表沒有加載算法時丟包率隨時間的分布規律,紅色方塊代表加載該算法時丟包率隨時間的分布規律。從圖中可以看出,在網絡滿載狀態階段,兩種情況下語音的丟包率基本上都是維持在1%~4%之間,但從總體上來分析,紅色反映的丟包率要略微低于藍色反映的丟包率,出現這種結果是因為在預測量K與門限值e的作用下,算法將自適應地調節傳輸速率來自適應網絡的變化。因此,在網絡滿載狀態、速率調整門限比較低的情況下,該算法能在一定程度上起到抗語音分組丟失的作用。
(3)擁塞狀態下的比較情況:通過利用大量數據流消耗網絡帶寬,并人為持續地在語音通信過程中制造網絡擁塞狀態,分別收集應用算法前后的丟包率隨時間分布規律如圖5所示。

圖5 擁塞狀態下丟包率比較
語音通信過程中,丟包率在4%~8%之間,是一個過渡區域,處于這個過度區域時語音有比較大的延時,但語音信號還能辨認,交互雙方還能繼續進行;丟包率超過8%時,語音信號將變得不清晰,且延時非常厲害,這種情況下交互雙方將無法再繼續。在圖5中,紅色代表的丟包率明顯低于藍色代表的丟包率。其中,沒有應用算法時丟包率基本處于8%~12%,應用后丟包率基本維持在8%以下。很明顯,在網絡擁塞狀況下,該算法具有更強的抗語音分組丟失能力。
通過上述實驗,抗語音分組丟失的自適應傳輸調整算法能依據網絡的狀況變化相應地調整傳輸速率來減少語音分組的丟失,提高語音的傳輸質量。尤其是在網絡狀況惡化、擁塞嚴重的時候其表現的抗分組丟失性能更加明顯和突出。
為提高語音的傳輸質量,從根本上改善語音分組丟失狀況,本文提出了抗語音分組丟失的自適應傳輸調整算法,其基本思想是發送端利用接收端反饋回來的RTCP控制報文中RR分組的丟失率值,通過量化處理,把量化結果作為判別網絡狀況依據,然后再根據網絡狀況,引進預測值K,通過改進AMID(和式增加乘積減少)算法來調整語音的傳輸速率,使傳輸速率自適應網絡的狀況變化。通過對該算法進行實驗評估,能在一定程度上起到抗語音分組丟失的效果。
[1]Qi Wang.A full-distributed architecture for PoC application in data packet voice communication[C]//Beijing,China:Com-puter and Information Technology,2011:231-237.
[2]Lam R Y W.Analysis of a polling protocol for packet voice transport over IEEE 802.11wireless LANs[C]//Vancouver,BC:VTC Spring,Dept of Electr & Comput Eng,British Columbia Univ,2008:1641-1645.
[3]Miralavi S R.Packet loss replacement in voip using a recursive low-order autoregressive model-based speech[C]//Tehran,Iran:Systems,Signals and Devices(SSD),Sch of Sci & Eng,Sharif Univ of Technol,2011(8):1-4.
[4]Shahbazi S.A new design for improvement of scalable-RTCP[C]//ICFCC,Dept of Electr Electron & Syst Eng Univ,2009:594-598.
[5]Mukherjee S.Linear phase low pass FIR filter design using improved particle swarm optimization[C]//Durgapur,India:Research and Development(SCOReD),Dept of Electron & Commun Eng,Nat Inst of Technol,2011:358-363.
[6]Vinh Tran-Quang.A transmission range adjustment algorithm to avoid energy holes in wireless sensor networks[C]//Saitama,Japan:APSITT,Grad Sch of Eng,Shibaura Inst of Technol,2010(8):1-6.
[7]Capasso A.Network state indicators in flexibility evaluation for operational planning in electricity market[C]//Rome,Italy:PowerTech,Dept of Electr Eng,Univ of Rome La Sapienza,IEEE Bucharest,2009:1-6.
[8] Wei Wei.Target tracking with packet delays and losses-QoI amid latencies and missing data[C]//Amherst,MA,USA:Pervasive Computing and Communications Workshops,Dept of Comput Sci,Univ of Massachusetts,2010(8):93-98.
[9]Nishiyama H.Wireless loss-tolerant congestion control protocol based on dynamic aimd theory[J].Wireless Communications,2010,17(2):7-14.
[10]Aly A O.Graduation project implementation of hardware digital DCT based image coder[C]//Radio Science Confe rence.Cairo,Egypt:German Univ in Cairo,2009:1-2.