我目前正在研究一个应用程序,该应用程序正在观察麦克风的输入,但同时必须能够通过扬声器播放特定的MP3歌曲。我目前面临的问题是,一旦我播放MP3,麦克风当然会识别出这一点,并给我更多的数据返回,由于音量增加。
我需要取消MP3的回声,我试过Android自带的AcousticEchoCanceller,但它不起作用,因为我的Nexus 7和Nexus 4都不能用。现在我来到speex,但我不是很熟悉NDK,我不知道如何将其嵌入到我现有的代码中。
所以我发现了这个:https://github.com/mutantbob/ndk-speex NDK-Speex与Java包装类,但不幸的是,这些类似乎只用于编码和解码speex格式的声音,这似乎不会取消任何回声。我已经阅读了关于扩展Java包装器以添加回声消除的内容,但是我找不到正确的起点,有人可以为我指出正确的方向吗?或者我应该走另一条路去实现我的目标?
关于如何使用NDK有很多很好的例子。一旦您熟悉了NDK,您就可以集成任何回声消除软件,为您的应用程序提供最佳的音频质量。