語音實時傳輸中的丟包恢復方法(轉載)

因爲視訊項目的原因,近來主要精力都放在多路混音和回聲消除上。當然這些都是和語音質量有莫大的關係,在一定意義上,語音質量比視頻質量或語音/視頻同步更加重要,因爲其承載的語義較之視頻信息更短暫和直接,也要求更強的連續性,一旦其質量受到影響必然對語義的傳達產生更大的影響。
    在實時的視頻會議系統中,影響音質的因素主要是本地環境和
網絡傳輸。本地環境主要由語音處理設備造成,這些可由用戶在終端自行解決。網絡傳輸造成音質下降的原因主要是時延、靜電干擾和包丟失,其中,包丟失是音質下降的最主要原因。儘管協議低層有糾錯編碼,但只能解決包內誤碼,無法解決丟包問題。此外,由於實時語音業務有嚴格的延時限制,長時間的延遲是不能忍受的。分組延遲超過一個極限也將被視爲丟失。關於丟包的恢復在一些資料都有提及,這裏略將之總結羅列。在解決了多路混音和回聲消除以後,丟包處理能力將需要一個整體的提升,這也是下一步將需要做的。語音實時傳輸中的丟包恢復技術按照連接關係可以劃分爲兩個大類:基於發送端的修復和基於接收端的修復。

一、基於發送端的修復技術
    基於發送端的丟包恢復由發送端發起,並需要發送端和接收端協同進行。

    1、增加冗餘度
    最簡單的方法,是讓每個數據包除了自身數據之外還包含前k個包的數據備份。爲了儘量降低冗餘度,當前分組所包含的前k個分組的冗餘數據可以用一個碼率更低的編碼器產生。增加數據的冗餘度可以提高系統的容錯能力,但是同時增加了帶寬。這種方式與語音編碼方式無關,只是在分組時針對這些語音數據作了冗餘數據備份。 

    2、分類處理
    爲了在收端更好地採用波形替換技術,發端可以根據語音信號的特性分類處理,具體做法是對於濁音信號先估算其基音週期L,然後把兩段長度爲L的波形封裝到一個分組內。對於非濁音信號(包括清音、噪聲和靜音)則全部封裝到一個分組內。即用小數據包傳送濁音信號,用大數據包傳送其它信號。這種方式與語音編碼方式有關,主要對語音的內容分類,區分有用信息和無用信息,然後對這些信息分別編碼,分組採用自適應策略;一旦分組丟失,接收端可根據收到的分組來推測丟失的分組所含信號的類型並採取相應的策略。

    3、前向糾錯
    信道編碼用前向糾錯(FEC)碼來恢復在傳輸中發生差錯的比特,現在人們把FEC應用到語音分組傳輸中來恢復丟失的數據分組,有多種FEC碼可用於此目的。最簡單的是奇偶校驗碼,其基本原理是爲每k個信息分組加入一個奇偶校驗分組,奇偶校驗分組的數據由k個信息分組的相應比特的校驗比特組成。這種方式與具體的語音編碼方式無關,主要在分組時增加對分組的校驗位信息。

    4、交織
    當語音信號發生大段的突發缺失,各種差錯掩蓋方法的效果就會大大降低,許多方法甚至無法工作,而突發的連續丟包是在Intemet上遇到的典型現象。爲了最大限度地發揮這些差錯掩蓋技術,可以採用交織技術打亂數據的發送順序,把大段的突發連續語音丟失轉化爲隨機的小段丟失。這種方式與具體的語音編碼方式無關,也與分組的編碼方式無關,主要是對編碼後的數據重新組織,但採用交織方法會給系統帶來很大的時延。

    5、優先級設置
    優先級設置方法是指發端依據某個準則爲不同的語音分組設置不同的優先級,如依據語音的能量、與前一個分組的相似度、語音信號的平穩特性或者當前分組能否用前一個分組較好地預測等。當網絡發生阻塞時,網絡保留高優先級的分組,丟棄低優先級的分組。這種方式與語音的編碼方式有關,因爲需要了解語音信息的優先級,這種技術需要網絡支持並按優先級傳輸分組,否則無法實現。

二、基於接收端的修復技術
    基於收端的修復技術不需要發端的參與,本質上是對接收到的數據通過一系列的方法來估計丟失的數據,並根據人的生理特點進行優化,基本上是一種被動的修補,通常比較容易實現且不增加帶寬需求。

    1、插入方式
    插人是指用固定的波形來填補缺口,這種固定的波形與缺口處的實際波形是不相關的。這類技術包括接合、靜音和噪聲替代等方法。接合技術是最簡單的方法,它會擾亂系統的定時關係,對聽覺效果的改善也不大。靜音替代的適用範圍非常有限,當數據包的丟失頻率很低(小於2%)且缺口寬度小於4 ms時,這種方法比較有效;當缺口寬度達40 ms時,其效果會讓人無法接受。與靜音替代相比,噪聲替代可給人帶來更好的主觀聽覺感受,同時能改善語音信號的可分辨性。當採用背景噪聲而不是靜音的時候,人腦能下意識地用正確的聲音來修補語音信號中丟失的部分。插人方式與語音編碼無關,也與分組的編碼無關,只是對解碼後丟失的語音進行處理。

    2、插值
    與插人技術相比,插值技術對缺口處的實際波形做了估計,並試圖用與其相似的波形來修補波形缺口,這使得處理得到的聲音能給人帶來相對更好的主觀感受。目前屬於插值方法的有波形替代和時域修正兩種技術。

    (1)波形替代
    其原理是在缺口前面(或後面)的波形中尋找出和缺口處波形相似的一段信號並對其加工用來填補缺口。執行一般由兩個步驟構成,第一步是儲存最新重建的信號波形,第二步是對所存儲的波形進行分析,從中提取一段波形並加以改造用來替代缺口處原有的波形。這類技術常用重複、模式匹配、基音波形複製三種實現方式。基音波形複製是通過峯值檢測來計算基音週期T並判斷語音信號是清音還是濁音。對於清音,它簡單地採用重複技術來填補波形缺口;對於濁音,它用缺口位置之前長度爲T的一段波形通過重複來填補波形缺口。其效果最好,但是實現較複雜。模式匹配從存儲的缺口左側的重建波形中按某種匹配原則進行搜索,找到一段最佳匹配波
形,對它進行必要的修飾之後用來填補重建波形的缺口。它也可以同時從缺口兩側的重建波形中各找出一段最佳匹配波形,對它們進行加權合併,用來填補缺口。雙側搜索比單側搜索的聽覺效果好,但是它的代價是引入了很長的時延。其效果次於基音複製方式,但實現較簡單。重複方式用缺口前面最近的波彤來替代缺口處的實際波形。效果最差,但實現簡單。波形替代技術可使得填補缺口的波形與其前後的波形間的過渡比較平滑,但在缺口邊界,波形的相位存在突變。這種方式對解碼後的語音信息的修補,與具體的語音編碼和分組編碼無關。

    (2)時域修正
    這種技術採用缺口兩側的波形向缺口方向延展的方式來填補缺口。該方法計算量很大,但是由於它能夠避免邊界的相位不連續現象,聽覺效果優於波形替代法。該種方法也同樣也是一種對解碼後的語音信號進行處理的技術,與具體的語音編碼和分組編碼無關。

    無論是基於發送端還是基於接收端的修復技術,針對丟包恢復的要求,上述這些技術在設計時,一般的出發點有:
    ①針對語音本身。考慮的方面主要是分析和區分語音本身的不同內容,如:濁音,噪音,背景音等,對這些內容分別編碼傳輸。
    ②針對分組。通過對分組增加冗餘信息和校驗信息來獲取容錯能力,但會引起帶寬的增加;
    ③針對比特位。這裏主要指交織技術,它是對編碼結果的再處理;
    ④針對語音復原後的信號。基於收端的技術都採用這種原理來設計;

    各種技術只在語音、分組、傳輸和語音復原階段採取了措施,而通常在發端採取的措施比在收端採取的措施有效,或者說發端採取的措施將直接影響收端對數據復原的效果,因此爲了最大化丟包後數據的復原效果,應重點在發端採取措施,使收端在不增加帶寬的情況下,當丟包情況發生時,儘量減少對數據的影響。一般來說,採用基於發端修復的效果比基於收端的技術好,但是技術複雜,一般會增加網絡的帶寬和傳輸延遲,收端的技術簡單,取得的效果更適於人的聽覺生理特點。若能夠綜合考慮發端和收端過程中的不同階段的特點,既能取得好的修復效果,又能用簡單的方式實現,將是今後丟包恢復技術研究的一個重要方向。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章