***************************************************************************************************************************
作者: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兩個測試程式。