android - 实时播放接收到的声音时回声

标签 android audio android-audiorecord

我正在尝试使用 AudioRecord 从耳机的麦克风接收音频,并使用 AudioTrack 将音频实时播放到耳机。我已经实现了所需的代码,但问题是有一个令人不安的回声。我没有使用扬声器,而是使用耳机。那么,是什么引起了这种回声?我使用了 API 级别 11 中引入的设备回声消除器,回声减少但没有消失。我知道 audio latency in android设备,但我无法理解延迟如何在我使用耳机时引起回声。请指导我正确的方向。

最佳答案

我认为这个问题没有通用的解决方案。 原因是

1)耳机质量可能不好,耳机线离得很近,麦克风和耳机之间可能存在内部耦合

2) android 中的回声消除器并不是所有设备都必须实现的。尝试先查询它并进行设置。回声消除器的实现也可能因设备而异

3) 延迟对回声消除器的性能影响很大,因为算法必须适应延迟并缓冲那么多音频。

4) 低版本的 android 有可怕的延迟问题,谷歌自己承认。您可能想要移动到更高的 android 版本,因为这些东西已经有了很大的改进。

一般而言,任何具有某些直接硬件访问权限的 API(例如麦克风和摄像头)的性能因设备而异,并且无法保证性能。

如果您正在考虑集成,您可能希望查看 openSLES 以获得更好的音频性能并更轻松地集成到 AEC 库。

请看—— https://source.android.com/devices/latency_design.html Low-latency audio playback on Android https://www.youtube.com/watch?v=d3kfEeMZ65c

希望对您有所帮助,

问候, 嘘

关于android - 实时播放接收到的声音时回声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15806406/

相关文章:

android - 如何通过Android应用程序设置铃声?

javascript - 是否可以将用javascript生成的html音频录制到后端的音频文件中?

android - AudioRecord:AudioFormat常量和麦克风选择

java - 如何调整颜色代码的色调?

ViewPager 和 FragmentPagerAdapter 中 Fragment 的 Android 生命周期管理

ios - 使用AVMutableCompositionTrack合并音频和视频时,为什么没有声音?

Android AudioRecord 支持的采样率

android - 在android中录制音频时调整麦克风灵敏度

android - GridView 中的进度对话框

android - 在 Linux 虚拟机中配置 Android Studio 和 SDK 时出错