gpt4 book ai didi

android取消扬声器输出。消除电话反馈

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:54 27 4
gpt4 key购买 nike

我正在开发一些语音识别应用程序。我需要在电话响起时识别单词,但为此我必须取消扬声器对麦克风的贡献。所以我希望麦克风忽略来自扬声器的所有音频。

我发现 AcousticEchoCanceler 用于 VoIP 应用程序以消除回声,但我尝试使用它,当手机响铃时没有任何区别。

我正在从名为“recorder”的 AudioRecord 对象中读取音频,然后应用 AcousticAudioCanceler

boolean isAvailable = AcousticEchoCanceler.isAvailable(); 
if (isAvailable) {
AcousticEchoCanceler aec = AcousticEchoCanceler.create(recorder.getAudioSessionId());
if(!aec.getEnabled())
aec.setEnabled(true);
Log.d("AEC", " AEC enabled : " + aec.getEnabled() + " . Has control: " + aec.hasControl());
}
else
Log.d("AEC", " AEC is not available");

我在应用和不应用 AcousticCanceler 时得到相同的输入。为什么?也许它不控制来自另一个应用程序的音频?我需要它来取消扬声器的任何输出,独立于它们来自哪个应用程序。

此外,AcousticAudioCanceler 是执行此操作的唯一方法吗?我的意思是,它只适用于 Android Jelly Bean,我需要它适用于所有设备...提前致谢

最佳答案

你的方法很好。但正如您已经注意到的那样,AcousticEchoCanceler 已添加到 API 级别 16 中。此外,制造商无需强制执行它。因此,在 API 级别 >=16 AcousticEchoCanceler.isAvailable() 的各种设备上产生 false

幸运的是,这并不一定意味着根本没有回声消除。由于您使用 AudioRecord,您可以选择 MediaRecorder.AudioSource.VOICE_COMMUNICATION 作为 API 11 中添加的输入,通常也具有主动降噪功能作为回声消除。

不幸的是,这也不能保证有效,所以如果您绝对需要它或需要您的应用程序使用 API <=10,那么您必须自己实现回声消除。

关于android取消扬声器输出。消除电话反馈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13823609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com