王亞光,劉一偉,張文杰,李云龍
(1.南開大學信息技術(shù)科學學院 計算機科學與信息安全系,天津300071;2.北京大學 數(shù)學科學學院數(shù)學系,北京100871)
實時語音在傳輸過程中,由于網(wǎng)絡(luò)帶寬的限制、分組原因、網(wǎng)絡(luò)狀況惡化或者路徑選擇等問題都會造成語音分組[1]的丟失,即丟包現(xiàn)象[2]。丟包率一旦過大,通話質(zhì)量就會受到嚴重的影響。盡管現(xiàn)在有很多優(yōu)秀的算法能夠?qū)G包后的語音數(shù)據(jù)進行處理和恢復(fù)[3],其恢復(fù)結(jié)果在低丟包率的情況下也表現(xiàn)得很理想,但是在高丟包率的情況下,這些算法的效果并不是很好,其根本原因是采用丟包恢復(fù)算法對提高語音質(zhì)量是一種治標不治本的策略。對此,本文提出了一種在實時語音傳輸過程中抗分組丟失的自適應(yīng)傳輸調(diào)整算法,在實際語音通信系統(tǒng)中加載該算法的運行,結(jié)果表明該算法通過調(diào)整語音傳輸速率減少了抗語音分組的丟失。
抗語音分組丟失自適應(yīng)傳輸調(diào)整算法分為圖1所示的3個部分:反饋信息量化模塊、網(wǎng)絡(luò)狀態(tài)判定模塊和傳輸速率調(diào)整模塊,其中虛線部分表示自適應(yīng)功能部分。
圖1 抗分組丟失的自適應(yīng)傳輸調(diào)整過程
其中,反饋信息量化模塊的功能是對反饋的網(wǎng)絡(luò)狀態(tài)信息的計算,是根據(jù)RTCP[4]承載的反饋信息來計算反映當前網(wǎng)絡(luò)狀況的一些特征值。網(wǎng)絡(luò)狀況判斷模塊是根據(jù)上一步的量化結(jié)果來分析當前網(wǎng)絡(luò)所處的狀態(tài)或變化趨勢,并對網(wǎng)絡(luò)狀態(tài)做出判定,接著將判定結(jié)果交給傳輸速率調(diào)整模塊。傳輸速率調(diào)整模塊根據(jù)判定的網(wǎng)絡(luò)狀態(tài)結(jié)果重新計算語音傳輸速率,然后再將新的傳輸速率通知語音編碼壓縮模塊,語音編碼壓縮模塊根據(jù)新的傳輸速率調(diào)整壓縮后的語音發(fā)送速率以適應(yīng)當前網(wǎng)絡(luò)狀況。下面分別介紹這3個方面的實現(xiàn)方案。
對反饋的網(wǎng)絡(luò)狀態(tài)信息進行量化是利用RTCP報文的RR分組中的丟包率字段值來進行計算的。本文解析工作是從接收端反饋回來的RTCP的控制報文RR中的丟包率字段值獲取語音數(shù)據(jù)包的丟失率,如果RR報文中有多個同源標識符SSRC且同一時間的報告塊,那么以丟失率最大的那個SSRC報告塊作為對象來獲取量化所需要的丟失率參數(shù)。對獲取的丟失率再通過一個平滑器(也稱低通濾波器)[5]進行平滑處理。平滑后的結(jié)果就是量化結(jié)果,是判定網(wǎng)絡(luò)狀態(tài)的依據(jù)。其平滑計算公式為
式中:Pn——待求的預(yù)測值,即丟包率量化值。Pn-1——Tn時刻的丟包率量化值。Pback——Tn時刻RTCP報文中的丟包率。B——常量,稱b為平滑算子,且0<b<1。
由公式得出:當網(wǎng)絡(luò)發(fā)生擁塞時,數(shù)據(jù)包丟失率Pback的值會長時間較大,Pn會逐漸增大而接近Pback。當網(wǎng)絡(luò)由擁塞變?yōu)檩p載狀態(tài)時,Pback的值會轉(zhuǎn)變成一個很小的值,如持續(xù)時間較長,則Pn會逐漸變小而接近Pback。
通過平滑器來實現(xiàn)網(wǎng)絡(luò)狀態(tài)量化的這種自適應(yīng)過程跟平滑算子b有很大的關(guān)系。這是因為b能過濾掉很大的隨機波動,如果b的取值太小,則它對丟包率的反映就會較慢。如果b取值太大,則它對丟包率的反映就會過度敏感,有可能造成語音傳輸速率的震蕩調(diào)節(jié)。因此,合理取得b值尤為重要。通過不斷改變b的值,可以獲得多組Pn值,且每組Pn與一個b值相對應(yīng),通過對每組Pn接近Pback的平滑效果分析,b取0.3時平滑效果表現(xiàn)最佳。
本文將網(wǎng)絡(luò)狀態(tài)分為3個區(qū)間:網(wǎng)絡(luò)輕載(UNLOAD-ED)、網(wǎng)絡(luò)滿載(LOADED)和網(wǎng)絡(luò)擁塞(CONGEST)。對于語音品質(zhì),低于200ms的時延和4%的丟包率,是可接受的范圍;時延在200~400ms,丟包率在4%~8%之間時,是一個邊緣范圍,可滿足部分用戶的要求;當時延超過400ms,丟包率超過8%時,則不能滿足語音會話的需求。引入兩個閥值Lu和Lc來劃分3個區(qū)間,以分別表示網(wǎng)絡(luò)所處的網(wǎng)絡(luò)輕載、網(wǎng)絡(luò)滿載和網(wǎng)絡(luò)擁塞3種狀態(tài),從而當前網(wǎng)絡(luò)所處的狀態(tài)。本文取Lu=4%、Lc=8%將網(wǎng)絡(luò)劃分為3個狀態(tài)區(qū)間,如圖2所示。
圖2 網(wǎng)絡(luò)狀態(tài)劃分
由式(1)求得的網(wǎng)絡(luò)狀態(tài)量化值Pn跟閥值進行比較,則可以判斷出當前的網(wǎng)絡(luò)狀態(tài),例如:Pn<Lu:網(wǎng)絡(luò)輕載;Lu<Pn<Lc:網(wǎng)絡(luò)滿載;Pn>Lc:網(wǎng)絡(luò)擁塞。
調(diào)整傳輸速率的作用是根據(jù)網(wǎng)絡(luò)狀態(tài)調(diào)整語音的傳輸速率,不能通過急劇增加或急劇減小的方式調(diào)整語音傳輸速率,快速的速率調(diào)整會造成語音劇烈的震蕩,從而影響接收端的語音效果。通常在調(diào)節(jié)過程中應(yīng)采用慢增慢減的調(diào)節(jié)方式[6],以一種平滑的方式調(diào)整速率,這樣接收端的語音就具有良好的穩(wěn)定性。
為實現(xiàn)根據(jù)網(wǎng)絡(luò)狀態(tài)[7]來調(diào)節(jié)語音的發(fā)送速率,本文引入模型TCP擁塞控制算法[8-9]AIMD(additive increase and multiplicative decrease),以控制網(wǎng)絡(luò)流量。該算法的主要思想是:當網(wǎng)絡(luò)中出現(xiàn)分組丟失時,發(fā)送窗口中數(shù)據(jù)量將以乘積方式減少,否則就簡單地增加一個數(shù)據(jù)包的發(fā)送量。本文對AIMD算法中加性因子a與乘性因子b進行改進,從而使其能以一種慢增慢減的方式來調(diào)整語音的傳輸速率。AIMD算法中流量控制的數(shù)學表達式如下
其中,Z(t+1)——t+1時刻的發(fā)送速度;Z(t)——t時刻的發(fā)送速度;a——加性因子,a≥1;b——乘性因子,0≤b≤1;r——t時刻報文丟失率;TH——報文丟失門限值。
式(2)表明AIMD算法是根據(jù)報文丟失率作為調(diào)節(jié)傳輸速率的依據(jù),當報文丟失r小于門限值TH時,發(fā)送速度或帶寬就在原有的基礎(chǔ)上線性增加a(a≥1),一旦r超過門限值TH時,發(fā)送速度或帶寬將乘積減少b(0≤b≤1)。
但并不能直接用AIMD算法來調(diào)節(jié)語音傳輸速度,這是因為AIMD在進行流量擁塞控制過程中為了更好地體現(xiàn)競爭網(wǎng)絡(luò)帶寬的公平性,一般取a和b的值為1和1/2。也就是說,一旦出現(xiàn)分組數(shù)據(jù)丟失,AIMD將利用乘積方式將帶寬減半。但對語音傳輸速率而言,在語音分組丟失后如果語音傳輸速率直接減半,將會造成傳輸速率的震蕩調(diào)節(jié),直接導致接收端語音數(shù)據(jù)產(chǎn)生強烈抖動。為此,本文以RR報文中的丟失率為傳輸速率的調(diào)整依據(jù),而參數(shù)a和b無法自適應(yīng)地與報文丟失率建立聯(lián)系,這就必須對式(2)進行改進:利用報文丟失率作為參考依據(jù)引進一個預(yù)測值K,利用K消掉參數(shù)a和b。而預(yù)測值K可以通過RR報文中的丟失率平滑后的結(jié)果Pn和抖動量J求得。
(1)抖動量的獲取
在計算抖動量[10]之前,先計算接收端兩個RTP語音數(shù)據(jù)包之間的相對傳輸時間D。設(shè)有兩個RTP語音數(shù)據(jù)包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的差值。這是一個最佳一階估計量,而且增益參數(shù)1/16在實現(xiàn)了較好的降噪比的同時,又維持了合適的收斂速度。這個抖動量J在發(fā)送RTCP的RR報文時,將填入RR報文的Inter arrival jitter字段中。當RR分組到達發(fā)送端時,抖動量J將被預(yù)測參數(shù)量K引用。
接收端通過RTCP協(xié)議進行自動計算Pn的語音分組丟失率,且與抖動量一起通過RR報文傳給發(fā)送端。
(2)預(yù)測量K的計算
預(yù)測量K通過下式求得
式中:Lmax——實時語音流傳輸時允許的最大丟包率;Jmax——實時語音流傳輸時允許的最大間隔抖動;Pn、J——當前丟包率平滑的網(wǎng)絡(luò)狀態(tài)量化值和抖動量;λ1、λ2——Pn、J的預(yù)測權(quán)重,其中0<λ1<1,0<λ2<1,且λ1+λ2=1。其中λ1和λ2參數(shù)可以根據(jù)網(wǎng)絡(luò)背景情況進行設(shè)定,在網(wǎng)絡(luò)物理環(huán)境好、網(wǎng)絡(luò)拓撲結(jié)構(gòu)并不復(fù)雜的情況下,可以適當?shù)卦黾覲n的預(yù)測權(quán)重,即取λ1>λ2;在網(wǎng)絡(luò)物理環(huán)境復(fù)雜多變、網(wǎng)絡(luò)中間節(jié)點多的情況下,可以適當?shù)卦黾覬的預(yù)測權(quán)重,即取λ1<λ2。
通過反映當前網(wǎng)絡(luò)狀態(tài)的預(yù)測值K來預(yù)測語音的發(fā)送速度,能減少因網(wǎng)絡(luò)狀態(tài)帶來的語音分組丟失。在式(3)中引入預(yù)測量K,式(4)中增加乘積可得到根據(jù)網(wǎng)絡(luò)狀況來調(diào)整語音傳輸速率的模型式(6)
式中:Z(0)——初始時刻的語音數(shù)據(jù)的發(fā)送速度;和式中的2和積式中的1/2為修正值,目的是使得語音傳輸速率平穩(wěn),避免因傳輸速率震蕩調(diào)節(jié)而產(chǎn)生較大的語音抖動。e表示進行速率增長和減少的閾值,依據(jù)第二階段判斷網(wǎng)絡(luò)狀態(tài)模塊的量化值Pn,通過e=Pn/Lmax歸化到區(qū)間[0.1,0.5]之間,具體的歸化方式利用下面的公式
歸化的目的是使得閥值e與網(wǎng)絡(luò)狀態(tài)值Pn建立一種聯(lián)系,讓閥值e來反映網(wǎng)絡(luò)狀態(tài)的變化情況。當公式中e=Pn/Lmax小于0.1時,一律歸化到最低門限0.1,表明網(wǎng)絡(luò)絕對處于輕載狀態(tài),這時預(yù)測量K是一個比0.1小的值,速率將會慢慢增加;當e=Pn/Lmax大于或等于0.1小于或等于0.5時,速率的調(diào)節(jié)視K而定,如果預(yù)測量K小于e表明網(wǎng)絡(luò)處在一個輕載或滿載初期狀態(tài),可以適當?shù)卦黾觽鬏斔俾剩绻A(yù)測量K大于e表明網(wǎng)絡(luò)處在一個滿載向擁塞的過度時期,這時速率將會慢慢減少;當e=Pn/Lmax大于0.5時,一律歸化到最高門限0.5,表明網(wǎng)絡(luò)已經(jīng)有擁塞趨勢或處于嚴重擁塞狀態(tài),預(yù)測量K將是一個比e大的數(shù),這時速率將會慢慢減少。
整個速率調(diào)節(jié)過程通過預(yù)測量K能自適應(yīng)地根據(jù)網(wǎng)絡(luò)狀態(tài)門限(Threshold)閥值e進行速率調(diào)整,修正值的引進可以使速率調(diào)整以一種慢增慢減的方式進行。
抗語音分組丟失的自適應(yīng)傳輸調(diào)整算法在應(yīng)用到實時語音傳輸通信中之前,必須對該算法進行抗語音分組丟失的性能測試。為此自行搭建如圖3所示的拓撲結(jié)構(gòu)的網(wǎng)絡(luò)環(huán)境。
圖3 網(wǎng)絡(luò)拓撲模式
在同等條件下,以網(wǎng)絡(luò)輕載、滿載、擁塞3種網(wǎng)絡(luò)狀況為背景,在相同的一段時間內(nèi),分別統(tǒng)計在每種網(wǎng)絡(luò)狀態(tài)中加載該算法前后兩種情況下RR報文中的分組丟失率。通過對每種網(wǎng)絡(luò)狀態(tài)階段中算法加載前后丟失率的分析,來評估該算法的性能。
實驗前,先設(shè)定算法中的參數(shù)b設(shè)為0.3,Lmax為0.12,Jmax為0.08s,權(quán)重 w1、w2分別設(shè)置為0.6和0.4,語音初始傳輸速度為8kb/s。接著對網(wǎng)絡(luò)狀態(tài)的3個階段進行實驗,統(tǒng)計每個階段算法加載前后語音分組丟失率的比例,其中實驗時間為30s,RTCP的RR報文平均每2s從接收端向發(fā)送端反饋一次,因此可以獲得15組語音報文丟失數(shù)據(jù)。通過對這15組數(shù)據(jù)進行分析,在同等時間段內(nèi)、相同條件下該算法表現(xiàn)出來了抗分組丟失的性能優(yōu)勢。
(1)網(wǎng)絡(luò)輕載狀態(tài)下的比較情況:在實驗過程中使網(wǎng)絡(luò)處在網(wǎng)絡(luò)輕載狀態(tài)。則發(fā)現(xiàn),在沒有加載該算法時,15組數(shù)據(jù)基本上全為零,這意味著在語音傳輸過程中沒有分組丟失,且語音清晰,延時非常小。同樣,在加載了該算法的條件下,15組數(shù)據(jù)也基本上全為0,語音效果與未加載時一樣。因此,在網(wǎng)絡(luò)輕載狀態(tài)下,抗語音分組丟失的自適應(yīng)傳輸調(diào)整算法無法表現(xiàn)出其優(yōu)越性,這是因為足夠的網(wǎng)絡(luò)帶寬能保證語音分組的丟失率下降。
(2)網(wǎng)絡(luò)滿載狀態(tài)下的比較情況:通過向網(wǎng)絡(luò)中加入一定的數(shù)據(jù)流來消耗網(wǎng)絡(luò)帶寬,使網(wǎng)絡(luò)狀態(tài)處在一個滿載狀態(tài),然后啟動語音通信,在相同時間段內(nèi),分別統(tǒng)計算法加載前后RR報文中語音分組的丟失率(即丟包率),各15組數(shù)據(jù)。其丟包率隨時間的分布如圖4所示。
圖4 滿載狀態(tài)丟包率比較
在圖4中,藍色的菱形代表沒有加載算法時丟包率隨時間的分布規(guī)律,紅色方塊代表加載該算法時丟包率隨時間的分布規(guī)律。從圖中可以看出,在網(wǎng)絡(luò)滿載狀態(tài)階段,兩種情況下語音的丟包率基本上都是維持在1%~4%之間,但從總體上來分析,紅色反映的丟包率要略微低于藍色反映的丟包率,出現(xiàn)這種結(jié)果是因為在預(yù)測量K與門限值e的作用下,算法將自適應(yīng)地調(diào)節(jié)傳輸速率來自適應(yīng)網(wǎng)絡(luò)的變化。因此,在網(wǎng)絡(luò)滿載狀態(tài)、速率調(diào)整門限比較低的情況下,該算法能在一定程度上起到抗語音分組丟失的作用。
(3)擁塞狀態(tài)下的比較情況:通過利用大量數(shù)據(jù)流消耗網(wǎng)絡(luò)帶寬,并人為持續(xù)地在語音通信過程中制造網(wǎng)絡(luò)擁塞狀態(tài),分別收集應(yīng)用算法前后的丟包率隨時間分布規(guī)律如圖5所示。
圖5 擁塞狀態(tài)下丟包率比較
語音通信過程中,丟包率在4%~8%之間,是一個過渡區(qū)域,處于這個過度區(qū)域時語音有比較大的延時,但語音信號還能辨認,交互雙方還能繼續(xù)進行;丟包率超過8%時,語音信號將變得不清晰,且延時非常厲害,這種情況下交互雙方將無法再繼續(xù)。在圖5中,紅色代表的丟包率明顯低于藍色代表的丟包率。其中,沒有應(yīng)用算法時丟包率基本處于8%~12%,應(yīng)用后丟包率基本維持在8%以下。很明顯,在網(wǎng)絡(luò)擁塞狀況下,該算法具有更強的抗語音分組丟失能力。
通過上述實驗,抗語音分組丟失的自適應(yīng)傳輸調(diào)整算法能依據(jù)網(wǎng)絡(luò)的狀況變化相應(yīng)地調(diào)整傳輸速率來減少語音分組的丟失,提高語音的傳輸質(zhì)量。尤其是在網(wǎng)絡(luò)狀況惡化、擁塞嚴重的時候其表現(xiàn)的抗分組丟失性能更加明顯和突出。
為提高語音的傳輸質(zhì)量,從根本上改善語音分組丟失狀況,本文提出了抗語音分組丟失的自適應(yīng)傳輸調(diào)整算法,其基本思想是發(fā)送端利用接收端反饋回來的RTCP控制報文中RR分組的丟失率值,通過量化處理,把量化結(jié)果作為判別網(wǎng)絡(luò)狀況依據(jù),然后再根據(jù)網(wǎng)絡(luò)狀況,引進預(yù)測值K,通過改進AMID(和式增加乘積減少)算法來調(diào)整語音的傳輸速率,使傳輸速率自適應(yīng)網(wǎng)絡(luò)的狀況變化。通過對該算法進行實驗評估,能在一定程度上起到抗語音分組丟失的效果。
[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.