speex開源項目的學習


    昨天講了speex編譯http://www.cnblogs.com/chef/archive/2012/07/19/2599067.html,今天又有空閑時間,簡單分析一下項目中各工程的作用,以下為學習筆記。

 

    項目是用C寫的。solution中包含了以下10個project:

1.libspeex

    speex動態庫,核心project,用戶使用的就是它,在solution中,接口頭文件很貼心的放在了一個單獨的文件夾中,名為Public Header Files。

2.libspeexdsp

    靜態庫,從頭文件名稱可以看出,功能應該是回音抑制、抗抖動等專業算法,本以為它是由libspeex抽離出來的一個下層庫,咱上層用戶跟它是非耦合的。仔細看了看,發現它們並沒有從屬關系。后面看到的project 4依賴於1、2,  7、8、9只依賴於1,說明2和1是平級的關系,2為1的補充,當需要使用speex的一些高級功能選項時,就需要使用到2了。

3.speexdec

    示例exe,功能比較全的speex解碼控制台程序,輸入是格式為raw PCM或者WAVE文件,輸出是speex編碼文件,我嘗試了一下,VLC可以播放。搜索到main函數,可以看到一堆控制台參數提示信息。

4.speexenc

    同上,只是編碼換成解碼了。

5.testdenoise

    測試libspeexdsp中的噪音消除功能。

6.testecho

    測試libspeexdsp中的AEC即回音抑制功能。

7.testenc

    測試窄帶編碼。

8.testenc_uwb

    使用SPEEX_MODEID_UWB初始化編碼。

9.testenc_wb

    測試寬帶編碼。

 

7、8、9的區別

    speex三種主要的采樣率8kHz、16kHz、32kHz,它們分別對應 narrowband、wideband、ultra-wideband(即7、9、8)。

    

那么7、8、9和4有什么區別呢?

    其實它們都是很小的測試或示例程序,3可以通過控制台參數來控制編碼選項(即上面所說的,使用了project 2)。個人感覺,看看9就可以動手寫自己的代碼了,日后需要用到一些選項時(應該是做優化工作)再去看manual手冊+project 4。

 

10.testresample

    這個工程有點搞,里面就一個名為testresample.c的文件,可是竟然不存在!這個工程依賴於libspeexdsp,個人感覺(我又開始猜了)應該是測試resample功能的。

 

manual手冊關於resamper的說明:

    在一些情況下,把音頻從一種抽樣率(sampling rate)轉化成另一種是很有用的。比如說以下場景:混合不同抽樣率的流,有的抽樣率聲卡不支持,轉碼等等。所以我們需要resampler。

 

后記:

    speex項目中各工程作用就簡單分析到這了,真要使用speex的話,看manual文檔是必不可少的。日后如果有時間繼續學習speex,我會把筆記分享上來的。

    


免責聲明!

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



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