您好我正在尝试将VOIP功能添加到Android应用程序中。为此,我需要声学回声消除。
我已经看过AcousticEchoCanceler here的官方文档。
我正在使用这段代码进行声学回声消除:
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等)是不可能的(因为我正在处理现有项目)。
请尽快帮助。
非常感谢你。
答案 0 :(得分:0)
确保音频模式设置为MODE_IN_COMMUNICATION