深入剖析iLBC的丟包補償技術(PLC)


轉自:http://blog.csdn.net/wanggp_2007/article/details/5136609

 

 丟包補償技術(Packet Loss Concealment——PLC)是iLBC Codec中非常重要的一項技術,更是VOIP Codec應用中不可缺少的組成部分。iLBC的PLC只是在解碼端進行封包補償處理。在解碼端根據收到的bitstream逐幀進行解碼的過程中,iLBC decoder首先拿到每幀的 bitstream 要判斷當前幀是否完整,如果沒有問題則按照正常的iLBC 解碼流程重建語音信號,見《深入剖析iLBC 解碼器原理》;如果發生了語音封包丟失,那么就進入PLC單元進行處理。PLC主要根據前一幀的解碼信息,利用基音同步重復的方法近似替代當前的丟失幀,以達到丟包補償。 

 

一、PLC unit 的幾種情形

 

1、過去幀、當前幀都接收正確

      進入正常的iLBC decoder解碼流程,需要保存當前幀的狀態信息,這些狀態信息包括LPC信息、解碼后的殘差信號等。如果下一幀的比特率丟失的話,就要用到這些保存的信息。

 

 

2、僅當幀發生丟包

      如果當前幀沒有丟失,那么進入PLC unit重建LPC系數和殘差信號。后面會詳細介紹LPC和殘差信號的補償方法。 

 

3、連續多幀發生丟包

     如果發生連續多幀丟包,那么就需要多次進入PLC unit,並且需要利用經過補償的幀狀態信息。值得注意的是,越靠后面丟失的幀越難以精確的重建,所以對連續丟包的增益采用逐幀遞減,以避免引入更大的信號失真。 

 

 

 

 

4、過去幀經過PLC處理,需要與當前幀平滑處理

     為了使經過PLC補償的幀與接下來沒有丟包的幀保持語音連續而需要進行平滑,主要根據前后幀的相關性處理。 

 

二、PLC重建LPC系數

      iLBC 的PLC對於丟失LPC的補償是采用了過去幀的最后一個子幀的LPC系數來簡單的重建。這個方法是顯然的,因為無論從空間上還是時間上最后一個子幀都與當前丟失的LPC具有最大相關性。但是這種簡單的復制當處理連續多幀時也顯然會引入更大的失真。

 

三、PLC重建殘差信號

      激勵信號(殘差信號)通常可以分為兩部分組成:准周期成分和類噪聲成分。因此PLC實際上首先需要重建這兩個部分,准周期成分可以根據測量前一幀的基音周期來近似得到,類噪聲成分則可以通過產生隨機噪聲得到,二者的能量比例也可以借鑒前一幀的比例關系。所以首先要對前一幀進行基音檢測,然后以基音同步的方式重建丟失幀的話音部分,然后利用相關性得到類噪聲的增益,最后進行混合以重建整個殘差信號。

      在連續丟幀的情況下,為了減少各個補償幀之間的相關性,會將能量進行逐幀遞減,但依然會產生一定的聽覺噪聲。如果采用內插的方法,雖然可能音質會好些,但是卻會引入更大的延時。

 

四、iLBC PLC的缺點

 

      在連續丟幀的情況下,PLC所補償的各個語音幀具有相同的頻譜特性(相同的LPC造成)和基音頻率,非常容易引入一種可察覺的噪聲,尤其是當基音頻率較高的時候,這種因為過分的周期性所引起的。通過適當的內插可以緩解這一問題,但往往引入更大的延時。

 

參考資料:

1、IETF:RFC3951.txt

2、潘搏勝《iLBC解碼程序進階處理之研究》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM