请分享您在 Android 上使用软件回声消除器的经验:
- 内置(据我所知,在 v3.0 中出现的那个)
- 斯佩克斯
- 网络RTC
- 等等。
我刚刚完成了android上的AEC工作,我尝试了speex/android-built-in-ec/webrtc-aec和webrtc-aecm(echo control on mobile),最后选择了AECM模块,有一些tips:
delay
,你应该按照audio_processing.h strictly
中的描述,如果你计算一个正确的延迟值,一切都会好的。编辑
经过长时间使用 WebRTC AECM(或 APM)后,我仍然无法使其在 android 上完美运行。我认为 AECM 需要更多的优化,但谷歌似乎没有计划。无论如何,我会继续关注 Google WebRTC 及其在 android 上的 AECM(或 AEC)性能。
(2020 年 6 月 23 日更新)请参考我的 GitHub 项目的 README,我上面的解决方案在几年前被我自己弃用了。我不想误导别人。
有两个与 Android 上的 AEC 相关的问题:
中央处理器。大多数 AEC 算法在 CPU 较低的情况下性能不佳。
回声路径 - Android 上的许多 VoIP 应用程序引入的回声延迟高于免费算法可以(有效地)处理的延迟。
最重要的是,我建议您首先测量 VoIP 应用程序中的回声延迟(即回声尾)。如果不超过 16ms-64ms,您可以尝试使用上述免费解决方案之一。
还有一点需要注意的是,我相信 Speex 在移动设备上无法正常运行,因为据我所知它没有固定点版本。