您好我正在尝试将 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 等设备。
使用回声消除库(如 libspeexdsp 等)是不可能的(因为我正在处理现有项目)。
请尽快提供帮助。
非常感谢。