speex開源專案的學習

2021-09-23 01:07:26 字數 1227 閱讀 9478

專案是用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

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,我會把筆記分享上來的。

optee開源專案的學習

因為研究生階段選的是trustzone的研究方向,所以最近在一直看這方面的東西。前不久在github上找到這個optee的開源專案,於是fork來學習一下。發現optee有4個專案 optee os 包含了tee作業系統本身的源 提供了tee的內部介面。optee client 包含了tee客戶端庫...

學習開源專案的若干建議

隨著國內開源社群和專案的不斷發展,學習 應用 貢獻開源專案的開發人員越來越多。最近,研究過多個開源專案 包括kvm qemu libvirt openstack ceph zabbix等 的業內專家章宇在其部落格中分享了學習開源專案的若干建議,值得讀者借鑑。章宇認為,學習開源專案,可以劃分為五個層次...

開源專案的質量警鐘

開源專案越來越多的進入我們的視線,然而,關於開源專案的質量問題卻無人問津。前一陣子,我和一位同時討論關於開源專案質量安全的問題。他支援使用開源專案的原因很簡單,開源專案的參與者都是 高手 在他心目中何所謂高手,我無從可知,但是這種觀點的支持者卻大有人在。在google上以 開源專案 和 質量保障 為...