【问题标题】:Acoustic Echo Cancellation on Android not workingAndroid上的声学回声消除不起作用
【发布时间】:2019-06-03 15:02:02
【问题描述】:

我们正在尝试启用已经实施的回声消除技术。

场景:

两台安卓设备已成功连接,两台设备上的语音都非常好。

Device-1 激活/停用免提电话:

AudioManager audioManager = ((AudioManager) getSystemService(AUDIO_SERVICE));
audioManager.setSpeakerphoneOn(false);

Device-2 在他们说话时听到自己的声音(面临这个问题)

我们将不胜感激任何帮助或指导。

【问题讨论】:

标签: android webrtc webrtc-android


【解决方案1】:

在我基于 WebRTC 的 Cordova 移动应用程序上测试视频通话时,我一直在努力解决 Android 上的声学回声消除问题。但是,在包括 IOS 在内的大多数移动设备上没有回声问题,但在三星 S10 和诺基亚设备上存在回声。

我还假设 WebRTC 支持默认启用的音频约束“echoCancellation:true”。但是,这种音频限制似乎不起作用。

我通过在 AudioManager 中设置模式来修复它

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setSpeakerphoneOn(true);

在音频模式明确设置为通信之前,某些移动设备似乎不会启动回声消除(即使支持)。

【讨论】:

    【解决方案2】:

    默认情况下,某些 Android 设备不支持回声消除。如果您使用的是 werbtc,Webrtc 提供了 api 来进行回声消除。请使用以下代码启用回声消除。

    WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(true);
    WebRtcAudioUtils.setWebRtcBasedNoiseSuppressor(true);
    

    【讨论】:

      【解决方案3】:

      假设您的 AEC 处于活动状态且正在运行,我建议您验证您的 AEC 是否支持 echo path

      【讨论】:

        【解决方案4】:

        您需要将AcousticEchoCanceler 附加到您正在创建的 AudioRecord 实例。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-09-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-21
          • 1970-01-01
          • 2011-08-31
          • 1970-01-01
          相关资源
          最近更新 更多