發(fā)布時(shí)間:2024-04-12 文章來源:深度系統(tǒng)下載 瀏覽:
調(diào)查顯示了用于IP網(wǎng)絡(luò)語音應(yīng)用的各種丟包補(bǔ)償技術(shù)。丟包補(bǔ)償技術(shù)可以分為兩類:基于發(fā)送端補(bǔ)償和基于接受端補(bǔ)償;诎l(fā)送端補(bǔ)償包括前向差錯(cuò)糾正、交織和重傳技術(shù);基于接受端補(bǔ)償包括了多種錯(cuò)誤隱蔽算法。最后給出了應(yīng)用建議。 一、基于發(fā)送端補(bǔ)償
基于發(fā)送端補(bǔ)償可以分為兩類:主動(dòng)重傳(本文不討論)和被動(dòng)通道編碼。被動(dòng)通道編碼包含傳統(tǒng)的前向差錯(cuò)糾正技術(shù)(FEC)和基于交織的技術(shù)。按照和媒體內(nèi)容的關(guān)系,前向差錯(cuò)糾正包括與媒體無關(guān)的方法和利用音頻屬性的媒體相關(guān)方法。這些總結(jié)如圖1所示。
圖1 基于發(fā)送端補(bǔ)償技術(shù)分類
為了便于討論,我們把一個(gè)語音包區(qū)分為多個(gè)單元。
與媒體無關(guān)前向差錯(cuò)糾正
這種方式中每n個(gè)媒體數(shù)據(jù)包附帶k個(gè)校驗(yàn)包。校驗(yàn)包的每個(gè)比特都是由相關(guān)的數(shù)據(jù)包的同位置比特產(chǎn)生的。圖2是每4個(gè)媒體數(shù)據(jù)包附帶1個(gè)校驗(yàn)包的情況。
優(yōu)點(diǎn):該方式補(bǔ)償與具體的媒體內(nèi)容無關(guān),計(jì)算量小,易于實(shí)施。
缺點(diǎn):不能立即解碼,引入延時(shí),帶寬增加。
圖2 與媒體無關(guān)前向差錯(cuò)糾正
媒體相關(guān)前向差錯(cuò)糾正
一種簡單的抗丟包方式是,采用多個(gè)包傳送同樣的音頻單元。一旦丟了一個(gè),信息可以從另外一個(gè)包含該單元的恢復(fù)出來。圖3表示了媒體相關(guān)前向差錯(cuò)糾正的原理。
第一個(gè)傳輸?shù)膹?fù)本稱為主要編碼,第二個(gè)傳輸?shù)膹?fù)本稱為次要編碼。次要編碼可以是和第一個(gè)相同,但是大部分采用較低碼率和較低音質(zhì)的編碼技術(shù)。編碼器的選擇取決于帶寬需求和計(jì)算復(fù)雜度需求。次要編碼采用以下方法:
圖3 媒體相關(guān)前向差錯(cuò)糾正的原理
短時(shí)能量和過零率測量;
低比特分析合成編碼,比如LPC(2.4-5.6kb/s);
全速率GSM編碼(13.2kb/s)。
如果主要編碼器能做到高音質(zhì)和低碼率,那么次要編碼器可以采用和主要編碼器一樣的方法。比如,ITU G.723.1可以采用這種方式,因其音質(zhì)好,碼率5.3/6.3kb/s,但計(jì)算量大。
媒體相關(guān)前向差錯(cuò)糾正引起了包大小的額外開銷。比如,8kHz PCM U律的主要編碼器占用64kb/s帶寬,全速率GSM編碼的次要編碼器占用13.2kb/s帶寬,這樣就增加了20%的帶寬開銷。但是,額外的帶寬開銷并不是固定而是可變的。分析表明,利用語音的特性,并不需要在每個(gè)語音包附加媒體相關(guān)前向差錯(cuò)糾正,加上這些策略,可以節(jié)省30%的帶寬。
媒體相關(guān)前向差錯(cuò)糾正的一個(gè)好處就是不會(huì)引入大的延時(shí),最多也就是一個(gè)包的延時(shí)。這適合實(shí)時(shí)交互的應(yīng)用。
交織
當(dāng)我們考慮比語音包還小的語音單元并且可以承受較大的延時(shí),交織是一種很有用的抗丟包技術(shù)。語音單元在傳輸之前重新排序,這樣在傳輸流中原來領(lǐng)近的語音單元變成有規(guī)律間隔的單元,接收端再按原來的順序排列回來。圖4顯示20ms包分為5ms單元的例子?梢钥吹絺鬏?shù)囊粋(gè)丟包變成了分散的多包中的單元丟失。
圖4 跨多個(gè)包的交織單元
交織帶來兩個(gè)好處:
長時(shí)間的丟包給聽覺帶來不舒適和難以理解,但是短時(shí)間的單元丟失是更易被聽覺接受的,也容易理解;
錯(cuò)誤隱藏比較容易處理短時(shí)間的單元丟失,因?yàn)闀r(shí)間短語音的變化小。
交織的不足就是也會(huì)引入延時(shí),只適合非交互式的應(yīng)用。交織的另外一大好處就是不會(huì)引起帶寬需求的增加。
二、基于接收端補(bǔ)償
當(dāng)發(fā)送端不能做到較好的丟包補(bǔ)償或發(fā)送端不能參與丟包補(bǔ)償時(shí),需要在接受端進(jìn)行丟包補(bǔ)償。錯(cuò)誤隱蔽算法就是接受端的丟包補(bǔ)償技術(shù),它產(chǎn)生一個(gè)與丟失的語音包相似的替代語音。這種技術(shù)的可能性是基于語音的短時(shí)語音相似性,它可以處理較小的丟包率(<15%)和較小的語音包(4-40ms)。當(dāng)丟包的長度達(dá)到音素的長度(5-100ms),該技術(shù)就不適應(yīng)了,因?yàn)檎麄(gè)音素都會(huì)丟失。
圖5錯(cuò)誤隱藏技術(shù)分類
從圖5可見,基于接收端的差錯(cuò)隱藏技術(shù)可以分為三類:
1、 基于插入的方法
插入一個(gè)填充包來修復(fù)丟包,填充包一般都很簡單,比如靜音包、噪聲包或重復(fù)前面的包。雖然容易實(shí)現(xiàn)。但這種方法的效果是很差的。該方式的缺點(diǎn)就是沒有利用語音的信息來重新產(chǎn)生信號。
拼接法(Splicing):直接把丟包兩端的語音拼接起來,這種最簡單的方法不但打亂了語音的時(shí)鐘順序,而且只適合很小的丟包間隔(4-16ms)和極低的丟包率,丟包率大于3%就不能忍受了。
靜音置換法(Silence substitution):該方法在丟包處加入靜音,這樣保持了語音的時(shí)鐘順序。它只有在很小的包大。<4ms)和很低的丟包率(<2%)是有效的。隨著包大小的增加,他的性能明顯下降,到40ms的包大小就完全不能接受了。
噪聲置換法(Noise substitution):該方法在丟包處加入背景噪聲或舒服噪聲。它比靜音置換法好處是提高了語音的可理解性,效果較好。
重復(fù)法(Repetition):利用接受到的最近包來重復(fù)代替丟失的包,具有低計(jì)算量和適度的音質(zhì)。較長的后續(xù)丟失包可以衰減重復(fù)的包來產(chǎn)生。比如GSM中,丟包前20ms采用重復(fù),后續(xù)320ms的通過衰減重復(fù)包到零。
2、 基于插值的方法
該方式通過某種形式的模式匹配和插值技術(shù)以期望得到與原來丟包相似的代替包。該方式比插入方法實(shí)現(xiàn)難度要大但效果好些。該方式相對插入法的好點(diǎn)就是考慮到了語音的變化信息來產(chǎn)生信號。
波形置換法(Waveform substitution):該方式使用丟包前(可選后)的語音來找到合適的信號代替丟包。它通過單端或雙端模式來確認(rèn)合適的基音周期。單端模式時(shí),基因周期重復(fù)跨越丟包區(qū)域,雙端模式時(shí)需要對兩邊的周期進(jìn)行插值。
基音波形復(fù)制法(Pitch waveform replication):這是一種帶有基音周期檢測算法的改進(jìn)型波形置換法。它利用丟包雙端的信息,在無聲狀態(tài)時(shí)可以重復(fù)前面的包,有聲狀態(tài)時(shí)重復(fù)基音波形。其效果比波形置換法要好。
時(shí)間尺度修正法(Time scale modification):該方法允許語音從丟包兩端按基音周期伸展來跨越丟包區(qū)域,在兩者交疊的地方進(jìn)行平均。該方法計(jì)算量較大,但是效果比前面兩個(gè)好些。
3、 基于重構(gòu)的方法
該方式通過丟包前后的解碼信息來重構(gòu)產(chǎn)生一個(gè)補(bǔ)償包。該方式音質(zhì)最好但是實(shí)現(xiàn)難度也是最大的。重構(gòu)修復(fù)技術(shù)使用語音壓縮算法的知識來獲得編碼參數(shù),這樣丟失的包就可以合成。該方法依賴于編碼算法,但是由于有大量信息可用,效果較好,計(jì)算量也大。
傳輸狀態(tài)插值法(Interpolation of transmitted state):對變換域編碼和線性預(yù)測編碼而言,解碼器可以在傳輸狀態(tài)之間進(jìn)行插值。比如 ITU G.723.1對丟包兩端的線性預(yù)測系數(shù)進(jìn)行插值,使用原先幀的周期激勵(lì)。這種方法的計(jì)算量和解碼是一樣的,不會(huì)增加。
基于模型的恢復(fù)法(Model-based recovery):該方法把丟包前后的語音嵌入到一個(gè)語音模型中用來產(chǎn)生丟失的包。有研究者采用過去的樣本對語音進(jìn)行自回歸分析建模。這種方法的適應(yīng)性是因?yàn)椋谝,間隔的語音幀如果足夠。8-10ms)就有很強(qiáng)的相關(guān)性;第二,大部分的低比特率編碼技術(shù)就是采用的自回歸分析和激勵(lì)信號的模型。
圖6 錯(cuò)誤隱藏技術(shù)的復(fù)雜度和質(zhì)量關(guān)系
要獲得好的丟包補(bǔ)償效果就必須采用復(fù)雜的算法。圖6顯示了各種錯(cuò)誤隱蔽算法的復(fù)雜度和質(zhì)量對應(yīng)關(guān)系,可以根據(jù)需要采用。比如帶有衰減的包重復(fù)法是一種折衷方案。
三、應(yīng)用建議
非交互式應(yīng)用
對于非交互式的語音應(yīng)用,比如多點(diǎn)廣播,對延時(shí)的要求沒有音質(zhì)高。交織是強(qiáng)烈推薦的丟包補(bǔ)償技術(shù),對于交織后的語音,還要采用合適的錯(cuò)誤隱蔽算法。與媒體無關(guān)的前向誤差糾正技術(shù)也適合這種應(yīng)用。
交互式應(yīng)用
交互式的應(yīng)用比如IP電話,對延時(shí)很敏感,因此,交織和與媒體無關(guān)的前向誤差糾正技術(shù)都不適合這種應(yīng)用。媒體相關(guān)的前向誤差糾正技術(shù)只引入很小的延時(shí)和較小的帶寬增加,是較好的選擇,可以利用低比特率的次要編碼器獲得丟包補(bǔ)償效果。另外,還可以采用帶有衰減的包重復(fù)法等效果較好計(jì)算簡單的錯(cuò)誤隱蔽算法進(jìn)一步提高音質(zhì)。 |