乙個開源的聲學回聲消除器

2021-04-01 06:16:54 字數 1030 閱讀 2292

class cspeexec

;#endif

//fine name:speexec.cpp

#include "speexec.h"

cspeexec::cspeexec()

cspeexec::~cspeexec()

void cspeexec::init(int frame_size, int filter_length, int sampling_rate)

else

m_pstate = speex_echo_state_init(m_nframesize, m_nfilterlen);

m_ppreprocessorstate = speex_preprocess_state_init(m_nframesize, m_nsamplerate);

m_pfnoise = new float[m_nframesize+1];

m_bhasinit = true;

}void cspeexec::reset()

if (m_ppreprocessorstate != null)

if (m_pfnoise != null)

m_bhasinit = false;

}void cspeexec::doaec(short* mic, short* ref, short* out)

可以看出,這個回聲消除器類很簡單,只要初始化一下就可以呼叫了。但是,要注意的是,傳給回聲消除器的兩個聲音頻號,必須同步得非常的好,就是說,在b端,接收到a說的話以後,要把這些話音資料傳給回聲消除器做參考,然後再傳給音效卡,音效卡再放出來,這有一段延時,這時,b再採集,然後傳給回聲消除器,與那個參考資料比較,從採集到的資料中把頻域和參考資料相同的部分消除掉。如果傳給消除器的兩個訊號同步得不好,即兩個訊號找不到頻域相同的部分,就沒有辦法進行消除了。

測試程式:

#define nn 160

void main()

fclose(ref_fd);

fclose(mic_fd);

fclose(out_fd);

}

opengoo乙個開源的web office系統

opengoo 是乙個開源的web office,它完全提供了常規的office功能,還能夠通過網路發布和管理文件,目前 支援 text documents spreadsheets coming soon presentations task lists e mails calendars web...

開源乙個CSV解析器(附設計過程 )

在excelreport支援csv的開發過程中,需要乙個netstandard的csv解析器。在nuget上找了幾個試用,但都不太適合。於是,便有了 axinlib.io.csv。讀出的資料 步驟一 了解csv格式規範 參考文章 理解csv格式規範 解析csv必備 總結 1 字段分隔符 2 行結束符...

乙個消除引用類名產生警告的方法

有時,在父類中需要提前用到子類的類名,來判斷方法的響應。一般情況下,直接檔案包含即可,但是因為子類一定會引用父類,如果在父類裡又引用子類,那肯定會重複引用。為了避免檔案重複引用,可以 在類前面用 class 類名的方式來宣告。class subclass self iskindofclass sub...