Speex 語音編解碼演算法概述
一、Speex是什麼?
Speex工程是由Jean-Marc Valin 在2002年啟動的一個專案,這個專案滿足了當時缺少開源的、自由版權的語音編解碼器的需求。因為當時大概只有G.711 等極少的語音編解碼器可以自由使用,這種情形大大限制了VOIP在Linux以及其它自由作業系統上的發展,所以Speex Codec應運而生,可見它是針對VOIP應用而開發的,當然也可以用於一般語音資料的儲存,但並不適合應用在無線通訊和行動通訊領域。因此,Speex Codec 具有低延時,對網路丟包也有較好的補償等特點,可以用在多種嵌入式裝置上。
二、Speex Codec 的特點
1、開源軟體,版權自由;
2、集成了窄帶和寬頻兩種模式;
3、非常寬的位元速率範圍:2.15kbps~44kbps;
4、實現動態位元速率切換和變速率操作;
5、具有VAD和DTX模組,整合在VBR模組中;
6、演算法複雜度可以調配;
7、嵌入的寬頻結構(可分級設定取樣率8KHZ、16KHZ);
8、具有超寬頻取樣率32KHZ;
9、具有增強立體聲編碼選項;
10、已經定點實現;
我個人對2~7、9、10都很感興趣,接下來會去好好研究一下。
三、Speex Codec的演算法模型
Speex Codec 是基於CELP演算法模型開發的,畢竟CELP模型在中低速率的語音編解碼器中已經成為了主流,音質可以得到保證。但是我比較好奇的是Speex Codec怎麼去避開一些具體技術的專利限制,例如就激勵訊號的量化技術來說,美國電信工業協會(TIA)有VSELP專利標準,日本的JDC有PSI-CELP標準,ITU有CS-ACELP標準,3GPP的AMR有ACELP方法,美國高通有QCELP專利。對於激勵訊號的描述好壞以及量化質量高低對重建語音的音質質量有著重要的影響,Speex既要設法避免以上的專利限制,還有保持重建語音訊號質量,它真的能做到嗎,讓我們在接下來的學習中驗證吧。
四、Speex Codec 的應用平臺
因為是針對嵌入式裝置,所以程式碼對某些平臺和作業系統也做了相應的調整,便於移植和進一步的優化。
平臺有:
1、x86 & x86-64
2、Power
3、SPARC
4、ARM
5、Blackfin
6、Coldfire(68k family)
7、TI C54xx & C55xx
8、TI C6xxx
9、TriMedia(experimental)
作業系統有:
1、Linux
2、uClinux
3、MacOS X
4、BSD
5、Other UNIX/POSIX variants
6、Symbian
參考資料
1、The Speex Codec manual Version 1.2 Beta 3