WP8上的Speex AEC

时间:2013-10-25 00:05:27

标签: windows-phone-8 speex aec

我正在为Windows Phone 8开发VoIP应用程序,我想取消使用扬声器时产生的回声。 Speex提供了一个AEC模块,我试图将其集成到我的应用程序中,但无济于事。我的应用程序工作正常,但回声仍然存在。我的代码基于MS Chatterbox VoIP应用程序,使用WASAPI进行捕获和渲染。这是相关部分的形式(我试图说明已存在和工作的内容,以及新内容):

初​​始化:

// I've tried tail lengths between 100-500ms (800-4000 samples @ 8KHz)
echoState = speex_echo_state_init (80, 800) 
speex_echo_ctl(echoState, SPEEX_ECHO_SET_SAMPLING_RATE, 8000);

渲染(每10ms运行一次):

Read 10ms (80 samples) data from network (8KHz, 16 bit, mono)

NEW - speex_echo_playback(echoState, networkData)

Upsample data to 48KHz
Render data

捕获(每10毫秒运行一次):

Capture 10ms of data (48KHz, 16 bit, mono)
Downsample to 8KHz

NEW - speex_echo_capture(echoState, downsampledData, echoCancelledData)

Send echoCancelledData to network

阅读Speex文档并查看本网站上的一些帖子(对于Wp8问题不是很多speex,而是一些针对android的问题),我的印象是这是正确的,或接近正确的实现其API。那么为什么它不起作用呢?

提前致谢

0 个答案:

没有答案
相关问题