silk encoder

原創  Skype SILK codec overview 收藏

      最近簡單看了一下Skype SILK codec 算法, 基本原理和流程大體明白了, 以後有時間再仔細研究一下細節,今天就簡單說說. SILK Codec是一個語音和音頻編解碼算法, 對於音頻帶寬、網絡帶寬和算法複雜度都具有很好的彈性。支持4種採樣率:8KHz、12KHz、16KHz、24KHz;三種複雜度:低、中、高。編碼碼率在 6~40kbps(不同採樣率具有不同的碼率範圍)以及還支持VAD、DTX、FEC等模塊,感覺還是比較全面。最重要的一點是提供了定點C代碼,非常有利於向ARM、DSP移植和優化。

順便附上原理流程圖

看過SILK Codec 代碼,總覺得他是iLBC和Speex混合拼出來的,當然沒有這麼簡單,整體採用Source-filter經典模型,即對語音產生系統建模爲基礎,經過兩級濾波,第一級長時預測濾波器(LTP),去除濁音語音中的週期成分,當然對於清音就不需要這一步了;第二步進行短時濾波(LPC),去除近樣點之間的冗餘信息,這裏採用伯格(Burg)算法計算得到LPC係數(一般CELP Codec都採用自相關算法計算LPC),然後採用多級矢量量化的方法(一般CELP Codec都採用分裂式矢量量化方法);經過這兩級濾波就可以得到激勵信號,一般CELP Codec往往採用固定碼書+自適應碼書分別量化的方法,它們分別近似激勵信號中的近週期成分和類噪聲成分(這個模型簡直太經典了,所以CELP可以在8Kbps以上保持非常好的音質,在進一步對固定碼書的不同量化方法又引出了不同Celp的命名和變體,不能再說了否則就成介紹CELP了),這裏SILK也不同於iLBC,但是卻很相似也是在子幀中找到能量最大的點,然後進行增益量化和歸一化,對歸一化後的信號採用距離編碼(Range encode),這個距離編碼是無損壓縮算法,性能和原理類似算術編碼,用它主要是出於避開專利的原因。另外,對於VAD、DTX、FEC以及對於噪聲的抑制也很不錯,變碼率的編碼方式與Speex比較相似。

      好了,今天先到這裏,明天還要上班呢,以後再對細節仔細研究。

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