***************************************************************************************************************************
作者:EasyWave 時間:2013.01.26
類別:Linux 應用LinPhone組件speex 聲明:轉載,請保留連結
注意:如有錯誤,歡迎指正。這些是我學習的日誌文章......
***************************************************************************************************************************
在LinPhone這個系統中,第二個我們要介紹的第三方庫組件:speex,Speex是一套主要針對語音的開源免費,無專利保護的音頻壓縮格式。Speex工程著力於通過提供一個可以替代高效能語音編解碼來降低語音應用輸入門檻 。另外,相對於其它轉碼器,Speex也很適合網路應用,在網路應用上有著自己獨特的優勢,廢話少說,進入speex功能介紹吧,主要功能如下:
Speex是基於CELP並且專門為碼率在2-44kbps的語音壓縮而設計的。特點如下:
■ 窄帶(8kHz),寬頻(16kHz)和超寬頻(32kHz)壓縮於同一位流。
■ 強化立體編碼
■ 資料包丟失隱蔽
■ 可變位元速率(VBR)
■ 語音捕捉(VAD)
■ 非連續傳輸(DTX)
■ 定點運算
■ 感官回聲消除(AEC)
■ 噪音消除
對於噪音消除,這個功能,我做過測試,效果還是不錯的,雖然消噪之後,聲音會有一些.....但是,通過軟體和硬體處理,效果還是不錯的。
一:ARM Linux的編譯
1):libogg的編譯
如果想在ARM平台上編譯speex,需要用到libogg,這是因為speex的測試demo程式用到了libogg,當然具體的應用不一定會用到libogg,所以,首先需要下載libogg,同時也要先編譯libogg。http://www.xiph.org/downloads/ 是libogg的,我在解壓之後的libogg的目錄下建立了一個build.sh檔案,同時還建立一個_install的檔案夾,如下:
./configure --prefix= ./_install/ \ --host=arm-linux \ --target=arm-linux \ --disable-static \ --enable-fixed-point make make install
編譯完成之後,會在libogg的路徑下的_install目錄下,會有libogg的相關庫,之後將其拷貝到speex的_install的目錄下。
2):speex的編譯
speex的源碼是在www.speex.org 網站上下載,首先在speex目錄下先建立_install檔案夾,同時也在speex的目錄下建立一個build.sh檔案。其設定支援是通過Speex配置指令碼的:
-prefix=<path> 指定Speex安裝其本路徑(如 /usr)
-enable-shared/-disable-shared 是否編譯共用庫
-enable-static/-disable-static 是否編譯靜態庫
-disable-wideband 取消Speex的寬頻部分(典型的節省空間的)
-enable-valgrind 為調試目的啟用額外valgrind的命中率
-enable-sse 啟用SSE指令(只在 x86/浮點)
-enable-fixed-point 編譯Speex為無浮點單位(FPU)處理器
-enable-arm4-asm 啟用彙編指定為ARMv4架構(只在gcc)
-enable-arm5e-asm 啟用彙編指定為ARMv5E架構(只在gcc)
-enable-fixed-point-debug 只使用調試定點碼(非常慢)
-enable-epic-48k 啟用一個專門(不相容)4.8kbps窄帶模式(在1.1.x和1.2beta)
-enable-ti-c55x 啟用支援TI C5x族
-enable-blackfin-asm 啟動彙編指定為Blackfin DSP架構
-enable-vorbis-psycho 使編碼器使用Vorbis心理學模型。
如下所示:
#./configure --prefix=/_install/ \ --host=arm-linux \ --target=arm-linux \ --disable-static \ --enable-fixed-point \ --enable-arm-asm \ #make #make install
編譯之後,可以在_install的檔案夾下的bin檔案下,可以看到speexdec和speexenc兩個測試程式。