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...