Windows phone 8 WP8上的Speex AEC

Windows phone 8 WP8上的Speex AEC,windows-phone-8,speex,aec,Windows Phone 8,Speex,Aec,我正在为WindowsPhone8开发一个VoIP应用程序,我想取消使用扬声器时产生的回声。Speex提供了一个AEC模块,我曾尝试将其集成到我的应用程序中,但没有成功。我的应用程序工作正常,但回音仍然存在。我的代码基于MS Chatterbox VoIP应用程序,使用WASAPI进行捕获和渲染。这是相关章节的形式(我试图指出哪些内容已经存在并发挥了作用,哪些内容是新的): 初始化: 渲染(每10毫秒运行一次): 捕获(每10毫秒运行一次): 在阅读了Speex文档并查看了该站点上的一些帖子(W

我正在为WindowsPhone8开发一个VoIP应用程序,我想取消使用扬声器时产生的回声。Speex提供了一个AEC模块,我曾尝试将其集成到我的应用程序中,但没有成功。我的应用程序工作正常,但回音仍然存在。我的代码基于MS Chatterbox VoIP应用程序,使用WASAPI进行捕获和渲染。这是相关章节的形式(我试图指出哪些内容已经存在并发挥了作用,哪些内容是新的):

初始化:

渲染(每10毫秒运行一次):

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

在阅读了Speex文档并查看了该站点上的一些帖子(Wp8的Speex问题不多,但android的Speex问题很少)之后,我的印象是,这是或接近于他们API的正确实现。那它为什么不起作用呢


提前感谢

我已经使用了我的代码,将捕获和渲染线程结合在一起。这有助于实现渲染/捕获数据与处理数据的网络端之间的同步性。实际上我已经让Speex取消了很多echo,但现在我的问题在于一致性。我开始认为WASAPI不能很好地与Speex配合使用,因为它可能偶尔会有太多的延迟,这会影响Speex AEC的计时。现在我的问题是每次运行应用程序都会得到不同的结果。我要么得到1)连续几分钟的完全回音消除,要么在通话过程中得到间歇性回音消除,要么3)一开始就没有回音消除。除非任何人有任何补充或疑问,否则可能是时候为winndows手机寻求另一个AEC或音频API了。您是如何增加采样的?你使用过任何特定的库吗?我只是把每个字节复制了6次。
// 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);
Read 10ms (80 samples) data from network (8KHz, 16 bit, mono)

NEW - speex_echo_playback(echoState, networkData)

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

NEW - speex_echo_capture(echoState, downsampledData, echoCancelledData)

Send echoCancelledData to network