網(wǎng)絡(luò)電話語(yǔ)音質(zhì)量提高的初探
出處:chunyang 發(fā)布于:2007-04-20 16:23:09
摘要:在分析了分組交換網(wǎng)絡(luò)中影響語(yǔ)音質(zhì)量的幾種因素之后,探討如何對(duì)網(wǎng)絡(luò)延遲進(jìn)行分析與統(tǒng)計(jì)。并以支持靜音消除功能的編碼解碼器G729AB為例,在分析網(wǎng)絡(luò)抖動(dòng)的統(tǒng)計(jì)方法的基礎(chǔ)上,設(shè)計(jì)1種傳輸G729AB語(yǔ)音分組的構(gòu)造系統(tǒng)和接收端的復(fù)現(xiàn)系統(tǒng),及相應(yīng)的抖動(dòng)緩沖自適應(yīng)算法,以求提高IP電話的語(yǔ)音質(zhì)量。
關(guān)鍵詞:網(wǎng)絡(luò)電話;語(yǔ)音質(zhì)量;抖動(dòng)緩沖;G729AB;實(shí)時(shí)協(xié)議
A STudy of Improving Voice Quality of IP Telephone
ZHU Xiao dong, ZHANG Zai hong
Abstract: This thesis exploits certain properties of transmitting G729AB audio packets over the packet- switch network.Based on the analysis of network delay and jitter, the G729AB voice packets construction and reconstruction scheme,as well as corresponding adaptive jitter control algorithm,are designed to improve the voice quality of IP telephone.
Key words: IP telephon;Voice quality;Jitter buffer;G729AB;Real- time protocol
1 引言
VoIP的基本原理是由專(zhuān)門(mén)設(shè)備或軟件將呼叫方的話音信號(hào)采樣并數(shù)字化、壓縮、轉(zhuǎn)換為一定長(zhǎng)度的數(shù)字化語(yǔ)音包,以數(shù)據(jù)包的形式經(jīng)過(guò)分組交換網(wǎng)絡(luò)傳輸?shù)綄?duì)方,對(duì)方接收到語(yǔ)音包后解壓縮,還原成模擬信號(hào)。相對(duì)于傳統(tǒng)電話清晰、穩(wěn)定的話音,IP電話在話音質(zhì)量方面還有待改進(jìn),主要表現(xiàn)為回聲、抖動(dòng)、分組丟失與延遲4個(gè)問(wèn)題。本文討論的G729AB是支持靜音消除功能的編碼解碼器,其特點(diǎn)是可以有效降低網(wǎng)絡(luò)負(fù)荷。而設(shè)計(jì)抖動(dòng)緩沖自適應(yīng)控制算法的主要目的是為了消除或者降低網(wǎng)絡(luò)抖動(dòng)的影響,從而平滑語(yǔ)音流,同時(shí)盡可能的降低延遲,而較低的延遲對(duì)于降低聲學(xué)回聲也有積極的意義。
目前關(guān)于抖動(dòng)緩沖自適應(yīng)控制算法的討論已經(jīng)非常深入,主要集中在如何平衡降低語(yǔ)音分組丟失率以及減少延遲。但是并未涉及如何具體在接收端支持靜音消除功能。此外,該自適應(yīng)抖動(dòng)緩沖算法也需要在抖動(dòng)緩沖大小和平滑語(yǔ)音流之間尋找折衷方案。
本文討論如何將G729AB應(yīng)用于VoIP終端,以及如何在此系統(tǒng)中尋求實(shí)現(xiàn)的語(yǔ)音質(zhì)量。該解決方案同樣適用于語(yǔ)音網(wǎng)關(guān)。
2 語(yǔ)音質(zhì)量
影響語(yǔ)音質(zhì)量的因素主要有語(yǔ)音壓縮編碼技術(shù)、延遲、分組丟失和抖動(dòng)。語(yǔ)音壓縮編碼的主要目的在于降低對(duì)帶寬的需求。語(yǔ)音延遲是指語(yǔ)音發(fā)送端1個(gè)聲音樣本在通過(guò)話筒采樣后,到達(dá)接收端被播放出來(lái)之前這一時(shí)間間隔。
在考慮IP電話的延遲時(shí),本文在算法延遲、處理延遲、網(wǎng)絡(luò)延遲之外引入抖動(dòng)緩沖延遲以簡(jiǎn)化抖動(dòng)緩沖算法的設(shè)計(jì)。
(1)算法延遲
語(yǔ)音處理以語(yǔ)音分組為單位,當(dāng)音頻數(shù)據(jù)采樣量達(dá)到一定數(shù)量后才進(jìn)行編碼?;谀壳暗木幋a解碼方式,這種延遲無(wú)法避免。
(2)處理延遲
語(yǔ)音分組進(jìn)行編碼解碼,回聲消除,抖動(dòng)算法,處理器間通信,Socket讀寫(xiě)而引入的延遲。這種延遲可以通過(guò)改進(jìn)算法以及優(yōu)化軟件而減少。
(3)網(wǎng)絡(luò)延遲
由于網(wǎng)絡(luò)物理、路由等原因引起的延遲。數(shù)據(jù)分組傳送延遲主要由帶寬情況決定。系統(tǒng)的整個(gè)延遲主要是語(yǔ)音數(shù)據(jù)分組在IP網(wǎng)上傳輸?shù)难舆t。
(4)抖動(dòng)緩沖延遲
語(yǔ)音分組進(jìn)入接收端后,直到被抖動(dòng)緩沖算法決定交給解碼器播放之前的延遲。這也是抖動(dòng)緩沖算法所要盡量減少的延遲。
IP網(wǎng)絡(luò)的1個(gè)特征就是網(wǎng)絡(luò)延遲與抖動(dòng),這將導(dǎo)致IP電話音質(zhì)下降。網(wǎng)絡(luò)延遲是指1個(gè)IP包在網(wǎng)絡(luò)上傳輸所需的時(shí)間,網(wǎng)絡(luò)抖動(dòng)是指IP包傳輸時(shí)間的長(zhǎng)短變化。如果網(wǎng)絡(luò)抖動(dòng)較嚴(yán)重,那么有的話音包因遲到而被丟棄,會(huì)產(chǎn)生話音的斷續(xù)及部份失真,嚴(yán)重影響音質(zhì)。為了降低或者消除抖動(dòng)的影響,人們采用抖動(dòng)緩沖技術(shù),即在接收方設(shè)定1個(gè)緩沖區(qū),話音包到達(dá)時(shí)首先進(jìn)入緩沖池暫存,系統(tǒng)以穩(wěn)定平滑的速率將話音包從緩沖池中取出、解壓、播放給受話者。這種緩沖技術(shù)可以在一定限度內(nèi)有效處理話音抖動(dòng),并提高音質(zhì)。
3 G729AB構(gòu)造系統(tǒng)
本節(jié)中我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了基于G729AB的語(yǔ)音分組發(fā)送端RTP構(gòu)造系統(tǒng),以實(shí)現(xiàn)發(fā)送端的實(shí)時(shí)語(yǔ)音流以及SID數(shù)據(jù)包?;谀壳斑€沒(méi)有出現(xiàn)G729AB的RTP封裝標(biāo)準(zhǔn),本文參照互聯(lián)網(wǎng)草稿“RTP Profile for Audio and Video Conferences with Minimal Control”[1]作為設(shè)計(jì)基礎(chǔ)思想。
G729AB在附錄A的基礎(chǔ)上增加了靜噪抑制技術(shù)(VAD),斷續(xù)傳送(DTX),以及舒適噪音發(fā)生器(CNG)[2]。G729AB構(gòu)造單元用于將G729AB編碼器產(chǎn)生的數(shù)據(jù)幀打包成為RTP數(shù)據(jù)分組。G729AB編碼器每10ms產(chǎn)生1個(gè)數(shù)據(jù)幀,其結(jié)果可能為語(yǔ)音數(shù)據(jù)幀(G729A),靜音數(shù)據(jù)幀(SID幀,G729B幀),或者返回空值。為了將G729B數(shù)據(jù)幀同G729A數(shù)據(jù)幀一起打包為RTP數(shù)據(jù)分組,需要確定RTP數(shù)據(jù)分組的格式。
1個(gè)G729RTP數(shù)據(jù)包可以由零個(gè)或更多的G.729或者G729A數(shù)據(jù)幀所組成,其后有零個(gè)或1個(gè)G.729B數(shù)據(jù)幀[1]。由此推論:
(1)當(dāng)其所有的3個(gè)數(shù)據(jù)幀均為G.729A數(shù)據(jù)幀的時(shí)候,輸出30字節(jié)數(shù)據(jù)分組。
(2)當(dāng)2個(gè)G.729A數(shù)據(jù)幀后為1G.729B數(shù)據(jù)幀時(shí),輸出22字節(jié)數(shù)據(jù)分組。
(3)當(dāng)1個(gè)G.729A數(shù)據(jù)幀后為1G.729B數(shù)據(jù)幀時(shí),輸出12字節(jié)數(shù)據(jù)分組。
(4)當(dāng)只有1個(gè)G.729B數(shù)據(jù)幀時(shí),輸出2字節(jié)數(shù)據(jù)分組。
(5)當(dāng)沒(méi)有G.729AB數(shù)據(jù)幀產(chǎn)生時(shí),停止打包,直到有G.729A數(shù)據(jù)幀或者G.729B數(shù)據(jù)幀出現(xiàn)。
(6)1個(gè)語(yǔ)音段的個(gè)數(shù)據(jù)分組,其RTP數(shù)據(jù)包頭部中設(shè)定標(biāo)志位。此外,在RTP數(shù)據(jù)分組頭部中時(shí)間戳的定義為產(chǎn)生數(shù)據(jù)分組的個(gè)數(shù)據(jù)幀中個(gè)語(yǔ)音樣本產(chǎn)生的時(shí)間。
綜上所述,G729AB數(shù)據(jù)包大小不是靜態(tài)的30ms,而是隨著發(fā)送端語(yǔ)音而變化。而且其時(shí)間戳不會(huì)以固定的30ms作為邊界。數(shù)據(jù)幀索引在RTP數(shù)據(jù)分組中指出數(shù)據(jù)幀的位置。每當(dāng)G729AB編碼器返回1個(gè)語(yǔ)音數(shù)據(jù)幀或1個(gè)SID數(shù)據(jù)幀,數(shù)據(jù)幀索引將會(huì)被加1。當(dāng)數(shù)據(jù)分組大小到達(dá)30ms時(shí),或編碼的數(shù)據(jù)幀是1個(gè)SID數(shù)據(jù)幀,則認(rèn)為數(shù)據(jù)分組已經(jīng)完整。如果數(shù)據(jù)幀是語(yǔ)音數(shù)據(jù)幀,而且上1個(gè)數(shù)據(jù)幀是1個(gè)SID數(shù)據(jù)幀或者空幀,RTP數(shù)據(jù)分組頭部的標(biāo)志位將會(huì)被設(shè)定,否則它將會(huì)被清零。而對(duì)于序列號(hào),當(dāng)1個(gè)新的有效RTP數(shù)據(jù)包準(zhǔn)備好了時(shí),自動(dòng)加1。
4 G729AB復(fù)現(xiàn)系統(tǒng)
接收端為了忠實(shí)復(fù)現(xiàn)語(yǔ)音信號(hào),語(yǔ)音數(shù)據(jù)分組中將盡量以其在發(fā)送端產(chǎn)生的相同方式被播放。對(duì)于G729AB的語(yǔ)音傳輸過(guò)程,復(fù)現(xiàn)系統(tǒng)扮演著重要的角色。G729AB接收端中,語(yǔ)音解碼器負(fù)責(zé)處理G729A語(yǔ)音數(shù)據(jù)幀,DTX/CNG模塊負(fù)責(zé)處理靜音幀并且產(chǎn)生舒適噪音。為了產(chǎn)生平滑的語(yǔ)音輸出,以下情況需要考慮:
(1)語(yǔ)音數(shù)據(jù)幀同SID幀的邊界問(wèn)題。
(2)考慮如何擴(kuò)展為自適應(yīng)抖動(dòng)緩沖。
(3)假定有1語(yǔ)音段在1個(gè)SID幀之后被播放,
如果只有序列號(hào),我們無(wú)法決定此前的SID幀的播放時(shí)間以及新的語(yǔ)音段何時(shí)應(yīng)該開(kāi)始。因此如何有效利用時(shí)間戳是G729AB復(fù)現(xiàn)系統(tǒng)的關(guān)鍵。
(4)由于IP電話在發(fā)送端和接收端之間沒(méi)有時(shí)鐘同步的手段,從而無(wú)法計(jì)算數(shù)據(jù)分組傳輸?shù)恼嬲舆t。
本文采用如下3種時(shí)間戳:
——RTP頭部中的時(shí)間戳。
——本地的到達(dá)時(shí)間戳。
——本地的播放時(shí)間戳。
(5)一般而言,電話中交談雙方總有1方處于傾聽(tīng)方式,而另外1方發(fā)送的語(yǔ)音流也總是在語(yǔ)音和靜默兩種狀態(tài)之間切換。這意味著接收端也應(yīng)該能夠適應(yīng)這種切換。
(6)對(duì)于G729AB解碼器,數(shù)據(jù)分組大小用來(lái)決定被解碼的數(shù)據(jù)分組的類(lèi)型。
抖動(dòng)緩沖寫(xiě)入方法的目的是將有效的RTP數(shù)據(jù)分組分配到抖動(dòng)緩沖的正確位置,并且丟棄過(guò)時(shí)或無(wú)效的數(shù)據(jù)分組。本文中的數(shù)據(jù)分組在抖動(dòng)緩沖的位置由其序列號(hào)決定。此外,保存本地的到達(dá)時(shí)間戳以用于自適應(yīng)抖動(dòng)緩沖的設(shè)計(jì)。通過(guò)數(shù)據(jù)分組的大小以及RTP頭部的時(shí)間戳,我們可以知道每個(gè)數(shù)據(jù)分組應(yīng)該被播放多久。
抖動(dòng)緩沖讀出方法為1個(gè)包括3種狀態(tài)的狀態(tài)機(jī),如圖1所示。

圖1 抖動(dòng)緩沖讀出方法
每當(dāng)VoIP終端開(kāi)始1個(gè)新的會(huì)話時(shí),它將進(jìn)入INITSTATE。如果我們采用靜態(tài)抖動(dòng)緩沖技術(shù),并且其抖動(dòng)緩沖大小為60ms時(shí),首先到達(dá)的數(shù)據(jù)分組將有60ms延遲,此后INITSTATE停止。然后決定下1個(gè)狀態(tài),該決定基于抖動(dòng)緩沖中時(shí)間戳的數(shù)據(jù)分組的大小。此后狀態(tài)機(jī)將會(huì)在SPEECHS TATE和SILENCESTATE之間切換,該轉(zhuǎn)換將體現(xiàn)語(yǔ)音段與靜默段之間的轉(zhuǎn)換。此外,在抖動(dòng)緩沖中,每個(gè)數(shù)據(jù)分組有4種狀態(tài):
(1)READY
這是新到達(dá)的數(shù)據(jù)分組的狀態(tài)。當(dāng)數(shù)據(jù)分組到達(dá)時(shí)由抖動(dòng)緩沖寫(xiě)入方法設(shè)置。
(2)INIT
當(dāng)新的會(huì)話開(kāi)始的時(shí)候數(shù)據(jù)分組的狀態(tài)。該狀態(tài)用來(lái)檢查是否有任何新的數(shù)據(jù)分組到達(dá)。如果有任何新的數(shù)據(jù)分組到達(dá),狀態(tài)機(jī)將會(huì)進(jìn)入INITSTATE。
(3)BUSY
這是正在被播放數(shù)據(jù)分組的狀態(tài)。當(dāng)下1個(gè)數(shù)據(jù)分組開(kāi)始播放后,該數(shù)據(jù)分組將轉(zhuǎn)為EMPTY狀態(tài)。
(4)EMPTY
這是已被播放或者從未出現(xiàn)的數(shù)據(jù)分組的狀態(tài)。處于該狀態(tài)的數(shù)據(jù)分組的位置在抖動(dòng)緩沖中可以用來(lái)存放準(zhǔn)備其他狀態(tài)的數(shù)據(jù)分組。
在進(jìn)入狀態(tài)機(jī)之前,復(fù)現(xiàn)系統(tǒng)需要知道抖動(dòng)緩沖的當(dāng)前情況:
——抖動(dòng)緩沖的大?。?/FONT>
——的延遲;
——的延遲;
——播放的數(shù)據(jù)分組的位置;
——每個(gè)狀態(tài)類(lèi)型的數(shù)據(jù)分組的數(shù)量,READY、INIT、BUSY、EMPTY;
——當(dāng)?shù)臄?shù)據(jù)分組被播放的時(shí)候,抖動(dòng)緩沖的狀態(tài)。
INITSTATE是當(dāng)抖動(dòng)緩沖開(kāi)始初始化它本身的時(shí)候的狀態(tài)。抖動(dòng)緩沖被初始化之前,它總是檢查是否有數(shù)據(jù)分組進(jìn)入抖動(dòng)緩沖。如果我們采用60ms靜態(tài)抖動(dòng)緩沖,首先到達(dá)的數(shù)據(jù)包將被作60ms延遲,此后INITSTATE將被中止。當(dāng)INITSTAE或SPEECH STAT結(jié)束后,而且在抖動(dòng)緩沖中時(shí)間戳的數(shù)據(jù)分組有1個(gè)SID幀時(shí),抖動(dòng)緩沖將會(huì)進(jìn)入SILENCES TATE。該數(shù)據(jù)分組將被設(shè)置為狀態(tài)READY。SILENCESTATE將會(huì)繼續(xù),直到1個(gè)沒(méi)有SID的數(shù)據(jù)分組開(kāi)始播放。當(dāng)抖動(dòng)緩沖決定播放1個(gè)語(yǔ)音數(shù)據(jù)幀的時(shí)候,SILENCESTATE將會(huì)轉(zhuǎn)變到SPEECHSTATE。相同,在SILENCESTATE中,也會(huì)檢查是否有任何新的數(shù)據(jù)分組到達(dá)抖動(dòng)緩沖,SILENCESTATE將決定其是否播出和何時(shí)播放。
當(dāng)在SILENCESTATE中,如果有任何的有SID幀的數(shù)據(jù)分組丟失時(shí),1個(gè)SID幀將會(huì)被播放,直到有1個(gè)新的SID幀或者1個(gè)新的語(yǔ)音數(shù)據(jù)分組出現(xiàn)。當(dāng)決定轉(zhuǎn)變到SPEECHSTATE時(shí),一個(gè)語(yǔ)音數(shù)據(jù)分組在SILENCESTATE中,將會(huì)被播放。
在SPEECHSTATE中,在抖動(dòng)緩沖中的數(shù)據(jù)分組將被作為連續(xù)的數(shù)據(jù)流讀出,間隔是固定的30ms。由于在同1個(gè)語(yǔ)音段中抖動(dòng)緩沖的大小是1個(gè)固定值,不必為每1個(gè)數(shù)據(jù)分組重新設(shè)定延遲。如果有任何遺失的數(shù)據(jù)分組,舒適噪音將會(huì)被播放以取代,直到下個(gè)有效的語(yǔ)音數(shù)據(jù)分組可以被播放。
在極端情況下,帶有SID幀的1個(gè)數(shù)據(jù)分組失去了。由于無(wú)法判定其后連續(xù)的無(wú)包情況的原因,不會(huì)進(jìn)行狀態(tài)轉(zhuǎn)換,仍然播放舒適噪音直到下1個(gè)數(shù)據(jù)分組出現(xiàn)。而當(dāng)新的數(shù)據(jù)分組為語(yǔ)音包時(shí),由于沒(méi)有進(jìn)行狀態(tài)轉(zhuǎn)換,仍將其作為同1語(yǔ)音段的語(yǔ)音包處理,所以不會(huì)進(jìn)行抖動(dòng)緩沖大小的重新設(shè)定。
5 抖動(dòng)緩沖算法設(shè)計(jì)
在自適應(yīng)抖動(dòng)緩沖算法中,緩沖大小伴隨網(wǎng)絡(luò)抖動(dòng)的實(shí)際情況而變化。接收端根據(jù)接當(dāng)前收到的數(shù)據(jù)分組的延遲與算法保存的延遲信息進(jìn)行比較,得出當(dāng)前可能得到的抖動(dòng),從而選擇相應(yīng)的抖動(dòng)緩沖大小。其優(yōu)點(diǎn)是網(wǎng)絡(luò)抖動(dòng)較大時(shí)丟包率低,而延遲及抖動(dòng)較小時(shí),語(yǔ)音延遲相對(duì)較小。
RTP頭部的時(shí)間戳提供了1種傳遞語(yǔ)音流平滑信息的手段。如果不存在抖動(dòng)現(xiàn)象,則只用RTP頭部的時(shí)間戳就可以復(fù)現(xiàn)語(yǔ)音流。當(dāng)需要進(jìn)行抖動(dòng)緩沖設(shè)計(jì)時(shí),則應(yīng)采用如下3種時(shí)間戳:RTP頭部中的時(shí)間戳、本地的到達(dá)時(shí)間戳和本地的播放時(shí)間戳。
假設(shè)有2個(gè)數(shù)據(jù)分組,其序列號(hào)是i和j(j>i),則時(shí)間戳定義如下:
Si:數(shù)據(jù)分組i的RTP時(shí)間戳;
Ri:數(shù)據(jù)分組i到達(dá)的本地時(shí)間戳;
Pi:數(shù)據(jù)分組i播放的本地時(shí)間戳。
其他的定義是:
Dr(j,i)=Rj- Ri;
Ds(j,i) = Sj- Si;
Dp(j,i) = Pj- Pi
Jn(j,i)=Dr(j,i)- Ds(j,i)
=(Rj- Ri)- (Sj- Si)
Jp(j,i)=Ds(j,i)- Dp(j,i)
=(Sj- Si)- (Pj- Pi)
Jj(j,i)=Dp(j,i)- Dr(j,i)
=(Pj- Pi)- (Rj- Ri)
Ds(j,i)反映在發(fā)送端產(chǎn)生2個(gè)數(shù)據(jù)分組時(shí)的時(shí)間間隔。如果在語(yǔ)音段中只有固定速率的語(yǔ)音流,則語(yǔ)音流傳輸速率Ds(j,j-1)總是1個(gè)固定的數(shù)值。
Dr(j,i)反映在接收端收到2個(gè)數(shù)據(jù)分組時(shí)的時(shí)間間隔。Dr(j,j-1)根據(jù)網(wǎng)絡(luò)抖動(dòng)和語(yǔ)音流傳輸速率Ds(j,j-1)改變,所以如果我們將Ds(j,i)從Dr(j,i)減去,我們可以得到數(shù)據(jù)分組之間的網(wǎng)絡(luò)抖動(dòng)Jn(j,i)。
Dp(j,i)反映在2個(gè)播放數(shù)據(jù)分組時(shí)的時(shí)間間隔。如果我們能完整地復(fù)現(xiàn)語(yǔ)音流,則對(duì)于所有的數(shù)據(jù)分組,Dp(j,i)應(yīng)該等同于Ds(j,i)。
Jn(j,i)反映在2個(gè)數(shù)據(jù)分組之間的網(wǎng)絡(luò)延遲的不同,即網(wǎng)絡(luò)抖動(dòng)。Jn(j,i)被網(wǎng)絡(luò)產(chǎn)生,而且用來(lái)決定抖動(dòng)緩沖區(qū)的大小。
Jp(j,i)反映在數(shù)據(jù)分組之間播放間隔和數(shù)據(jù)分組產(chǎn)生間隔間的差異。Jp(j,i)應(yīng)當(dāng)被盡可能的縮小以保持語(yǔ)音流的連續(xù)性。
Jj(j,i)反映數(shù)據(jù)分組在抖動(dòng)緩沖區(qū)中被延遲的時(shí)間的不同。
需要注意Jn(j,i)+Jp(j,i)+Jj(j,i)=0。其計(jì)算公式可以被簡(jiǎn)化成如下形式以便于應(yīng)用:
Jn(j,i)=(Rj-Ri)-(Sj-Si)=(Rj-Sj)-(Ri-Si)
Jp(j,i)=(Sj-Si)-(Pj-Pi)=(Sj-Pj)-(Si-Pi)
Jj(j,i)=(Pj-Pi)-(Rj-Ri)=(Pj-Rj)-(Pi-Ri)
在靜態(tài)的抖動(dòng)緩沖區(qū)控制運(yùn)算中,我們只需要考慮該如何將Jp(j,i)減到少。如果Jp(j,i)=0,則意味著播放數(shù)據(jù)分組j的時(shí)間:Pj=Pi-Ri+Rj=Pi+(Rj-Ri)。(Rj-Ri)只考慮在2個(gè)數(shù)據(jù)分組之間的抖動(dòng)。在靜態(tài)的抖動(dòng)緩沖區(qū)控制算法中它將會(huì)被1個(gè)常量替換。而在1個(gè)自適應(yīng)抖動(dòng)緩沖區(qū)控制算法中它將會(huì)被1個(gè)變量替換。
此外,我們應(yīng)該注意網(wǎng)絡(luò)抖動(dòng)有可能突變。1個(gè)抖動(dòng)突變意味網(wǎng)絡(luò)延遲的突然增加,增加的延遲可以是100ms或更長(zhǎng)。抖動(dòng)突變的結(jié)果是1系列的數(shù)據(jù)分組幾乎同時(shí)到達(dá)。為了處理抖動(dòng)突變,抖動(dòng)緩沖區(qū)大小一定可以是非??斓卦黾右赃m應(yīng)突然出現(xiàn)的大的抖動(dòng)。在本文中,我們采用全部抖動(dòng)緩沖區(qū)用于解決抖動(dòng)突變。假定抖動(dòng)緩沖區(qū)可以保存數(shù)目MAX_JB_SIZE的數(shù)據(jù)分組,我們將會(huì)在抖動(dòng)緩沖區(qū)中使用所有的數(shù)據(jù)分組的抖動(dòng)信息,包括那些已經(jīng)被播放的數(shù)據(jù)分組。在公式Pj=Pi中-Ri+Rj=Pi+(Rj-Ri),(Rj-Ri)將會(huì)被JBSize替換。然后有:
JBSize=max[Ri-Si]-min[Ri-Si],
i=0,1,…MAX_JB_SIZE-1。
假設(shè)數(shù)據(jù)分組m有[Ri-Si],i=0,1,…MAX_JB_SIZE-1,則數(shù)據(jù)分組k的播放時(shí)間為:
Pk=Pm+JBSize
JBSize將會(huì)被作為新的語(yǔ)音段的抖動(dòng)緩沖區(qū)的大小。類(lèi)似于抖動(dòng)緩沖的設(shè)計(jì)目的是為了在抖動(dòng)和延遲之間尋找的折衷方案,G729AB復(fù)現(xiàn)系統(tǒng)自適應(yīng)抖動(dòng)緩沖區(qū)控制算法也必須在抖動(dòng)緩沖大小和平滑語(yǔ)音流之間尋找折衷方案。我們可以從以下公式中得到結(jié)論:
Jn(j,i)+Jp(j,i)+Jj(j,i)=0
在我們的設(shè)計(jì)中,自適應(yīng)總是當(dāng)新的語(yǔ)音段啟動(dòng)的時(shí)候發(fā)生。基于這個(gè)理由,如果我們想要有一個(gè)完整復(fù)現(xiàn)的語(yǔ)音流,則應(yīng)該有:
Jp(j,i)=Dp(j,i)-Ds(j,i)
=(Pj-Pi)-(Sj-Si)=0
對(duì)于i=j-1,Pj=P(j-1)+(Sj-S(j-1)),
令Sj-S(j-1)=PkgSize(j),則Pj=P(j-1)+PkgSize(j)。
對(duì)于自適應(yīng)算法,
Pk=Pm+JBSize,JBSize是自適應(yīng)抖動(dòng)緩沖區(qū)的大小。
Pk=Pm+(w×JBSize+(1-w)PkgSize(k)),
式中0參數(shù)“w”的選擇對(duì)于抖動(dòng)緩沖算法的集成有直接影響。在理想情況下,參數(shù)“w”為一變量,反映語(yǔ)音上下文和網(wǎng)絡(luò)抖動(dòng)的變化。如果“w”設(shè)置得較小,可以更好地確保語(yǔ)音流的完整復(fù)現(xiàn),但是如果JBSize較小而網(wǎng)絡(luò)抖動(dòng)變化較快時(shí),丟包率也會(huì)相應(yīng)提高,這是因?yàn)槎秳?dòng)緩沖的大小并沒(méi)有真實(shí)反映網(wǎng)絡(luò)抖動(dòng)的變化。相反,如果“w”設(shè)置過(guò)大,丟包率雖然可以降低,但是當(dāng)語(yǔ)音段較短,并且頻繁出現(xiàn)時(shí),如果此時(shí)網(wǎng)絡(luò)抖動(dòng)變化較快,雖然可以保持較低的丟包率,但是由于不同語(yǔ)音段的抖動(dòng)緩沖大小亦不同,導(dǎo)致各語(yǔ)音段之間的起始延遲也不同,對(duì)于受話人來(lái)說(shuō),語(yǔ)音段之間延遲不斷變化,將引起由于人為抖動(dòng)導(dǎo)致的失真。
由此可見(jiàn),選擇參數(shù)“w”必須同時(shí)考慮語(yǔ)音上下文和網(wǎng)絡(luò)抖動(dòng)兩種因素。然而目前由于無(wú)法確認(rèn)語(yǔ)音上下文的變化規(guī)律,以及如何在復(fù)現(xiàn)系統(tǒng)中得到有價(jià)值的相關(guān)信息,需要進(jìn)一步對(duì)不同網(wǎng)絡(luò)抖動(dòng)環(huán)境和各種可能的語(yǔ)音上下文同時(shí)進(jìn)行大量測(cè)試,根據(jù)語(yǔ)音質(zhì)量終確定如何選擇參數(shù)“w”,例如將其設(shè)為以語(yǔ)音上下文特征為自變量的變量。這將有待于進(jìn)一步研究。
6 總結(jié)
本文闡述了影響VoIP終端語(yǔ)音質(zhì)量的幾種因素,在延遲分析中引入了抖動(dòng)緩沖延遲的概念,并且分析了抖動(dòng)現(xiàn)象,建立了1種G729AB的構(gòu)造系統(tǒng)模型與復(fù)現(xiàn)系統(tǒng)模型,設(shè)計(jì)了相應(yīng)的抖動(dòng)緩沖的自適應(yīng)算法,并且將其與G729AB的復(fù)現(xiàn)系統(tǒng)集成。在G729AB的復(fù)現(xiàn)系統(tǒng)與抖動(dòng)緩沖的自適應(yīng)控制算法集成算法中,如何在抖動(dòng)緩沖大小與語(yǔ)音流平滑之間求得平衡還有待深入討論。
參考文獻(xiàn)
[1] RTP Profile for Audio and Video Conferences with Minimal Control, RFC1890[Z], Network Working Group, Audio Video Transport Working Group,January 1996.
[2] ITU T Recommendation G.729 Annex B[Z]. International Telecommunication Union.1996,11.
[3] RTP: A Transport Protocol for Real Time Applications, RFC1889[Z], Network Working Group, Audio Video Transport Working Group,January 1996.
[4]. G.729 datasheet http://udpf.com.cn/datasheet/G.729_2060769.html.
 
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 無(wú)線傳輸電路基礎(chǔ),射頻前端設(shè)計(jì)、天線匹配與鏈路預(yù)算計(jì)算2025/10/27 13:55:50
 - ASK 解調(diào)的核心要點(diǎn)與實(shí)現(xiàn)方式2025/9/5 16:46:17
 - 雙偶極子天線:結(jié)構(gòu)、特性與應(yīng)用全解析2025/9/3 10:29:21
 - 幾種流行無(wú)線通信方式及其特點(diǎn)2025/9/2 17:14:12
 - 解密射頻線纜彎曲衰減變化,掌握有效應(yīng)對(duì)策略2025/8/29 16:22:47
 
- 編碼器的工作原理及作用1
 - 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線寬的關(guān)系2
 - 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
 - 電腦藍(lán)屏代碼大全4
 - 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
 - 通俗易懂談上拉電阻與下拉電阻6
 - 繼電器的工作原理以及驅(qū)動(dòng)電路7
 - 電容單位8
 - 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
 - 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10
 
- BOOST芯片的VIN與VOUT非常接近時(shí),會(huì)出現(xiàn)什么情況?
 - 如何在無(wú)線電連接設(shè)備中嵌入安全性
 - ADI芯品兼具高精度與低延遲的SAR ADC
 - Allegro發(fā)布革命性10MHz TMR電流傳感器ACS3
 - 串口、UART、RS232、RS485、USB、COM 口全面解析
 - 變壓器基礎(chǔ)知識(shí):原理、結(jié)構(gòu)與應(yīng)用
 - 一款高集成度雙通道、寬頻、自感式數(shù)字電感電容傳感芯片 - MLC12G
 - PCB生產(chǎn)制造中銀層缺陷應(yīng)對(duì)措施
 - 電路板電鍍中4種特殊的電鍍方法
 - 高通SA8155P芯片的接口協(xié)議
 









