2

请分享您在 Android 上使用软件回声消除器的经验:

  1. 内置(据我所知,在 v3.0 中出现的那个)
  2. 斯佩克斯
  3. 网络RTC
  4. 等等。
4

2 回答 2

5

我刚刚完成了android上的AEC工作,我尝试了speex/android-built-in-ec/webrtc-aec和webrtc-aecm(echo control on mobile),最后选择了AECM模块,有一些tips:

  1. speex 和 webrtc-aec 不适合在移动设备上运行(由于 CPU 性能低的原因)。
  2. android内置EC在工作,但效果不理想,仍然能听到一些回声或大量自激(可能是我没用对)。并且此时并不是所有的android设备都支持内置EC,所以这种情况被抛弃了。
  3. webrtc-aecm 模块很好,处理一个 10ms 的帧只需要 1~2ms。最重要的是那个东西delay,你应该按照audio_processing.h strictly中的描述,如果你计算一个正确的延迟值,一切都会好的。

编辑

  1. 经过长时间使用 WebRTC AECM(或 APM)后,我仍然无法使其在 android 上完美运行。我认为 AECM 需要更多的优化,但谷歌似乎没有计划。无论如何,我会继续关注 Google WebRTC 及其在 android 上的 AECM(或 AEC)性能。

  2. (2020 年 6 月 23 日更新)请参考我的 GitHub 项目的 README,我上面的解决方案在几年前被我自己弃用了。我不想误导别人。

于 2013-05-31T06:38:10.030 回答
1

有两个与 Android 上的 AEC 相关的问题:

  1. 中央处理器。大多数 AEC 算法在 CPU 较低的情况下性能不佳。

  2. 回声路径 - Android 上的许多 VoIP 应用程序引入的回声延迟高于免费算法可以(有效地)处理的延迟。

最重要的是,我建议您首先测量 VoIP 应用程序中的回声延迟(即回声尾)。如果不超过 16ms-64ms,您可以尝试使用上述免费解决方案之一。

还有一点需要注意的是,我相信 Speex 在移动设备上无法正常运行,因为据我所知它没有固定点版本。

于 2012-07-20T09:30:58.980 回答