嗨,我正在尝试将VOIP功能添加到android应用程序中。为此,我需要声学回声消除
我在这里看到了AcousticEchoCanceler的官方文档
我正在使用这段代码进行声学回声消除:
if(AcousticEchoCanceler.isAvailable()) {
echoCanceler = AcousticEchoCanceler.create(mAudioRecord.getAudioSessionId());
echoCanceler.setEnabled(true);
}
但这似乎一点帮助都没有。isAvailable()返回true,并创建echoCanceler对象。如果我查询echoCanceler.getEnabled(),它也会返回true
即使我使用AudioRecord和AudioTrack制作了一个示例应用程序,这也不起作用。我听到很多回音。
如果我将AudioRecord的来源设置为:
android.media.MediaRecorder.AudioSource.VOICE_COMMUNICATION
我看到在Nexus 5(适用于Android版本5和6)的情况下,回声会被取消
(当我将源设置为VOICE_COMMUNICATION时,我没有使用AcousticEchoCanceler)然而,对于相同的Android版本,相同的方法不适用于三星Galaxy S4和三星Note 4等设备。
使用echo取消库(如libspeexdsp等)是不可能的(因为我正在处理一个现有的项目)
请尽快提供帮助
非常感谢。
确保音频模式设置为MODE_IN_COMMUNICATION