面对在Android中使用speex取消声学回声的麻烦

时间:2012-05-17 05:28:00

标签: java android speex aec

我想取消回声,但即使使用一个非常简单的例子也无法取消。帧尺寸160瓷砖长度100

audioRecord.read(mic,0,mic.length);
audioData = speex.encode(mic,0,mic.length);
speakerData=speex.decode(audioData);
audioTrack.write(speakerData, 0, speakerData.length);
speex.DoAEC(mic,speakerData,outref);
fos.write(outref);

为什么上面的代码示例没有取消回声我错过了什么?当我播放文件时,没有删除回声。

也遵循简单的例子不起作用仍然是回声。

    short[] buf=new short[160];
audioRecord.read(buf,0,buf.length);
if(sData==null){
sData=buf;
}
short[] outref=new short[160];

speex.cancelecho(buf,sData,outref);
audioTrack.write(outref, 0, outref.length);
sData=buf;

1 个答案:

答案 0 :(得分:1)

您需要了解AEC的工作要求 - 所有这些都在Speex文档中记录 - 并且知道如何调试流程来实现这一目标。

你可以从我的答案中获得更多指示: Android Speex echo cancellation problems

另外,我有一个项目可以执行Speex AEC的环回示例 - 视频报道在这里: http://www.youtube.com/watch?v=e1-HwidHMy0

这是一个完整的项目,所以没有必要试图将其简化为答案,但我给出的指示应该给你一个开始 - 视频证明它是可能的。