Pergunta

Please, share your experience in using software echo cancellers on Android:

  1. Built-in (the one that appeared in v3.0, as I hear)
  2. Speex
  3. WebRTC
  4. Etc.
Foi útil?

Solução

I'm just finishing the AEC work on android, I tried speex/android-built-in-ec/webrtc-aec and webrtc-aecm(echo control on mobile), and finally choose the AECM module, and there are some tips:

  1. speex and webrtc-aec is not good for running on mobile(for low CPU perform reason).
  2. android built-in EC is working, but the effect is not ideal, can still heard some echos or lots of self-excitation(maybe I'm not using it right). and not all the android device at this time support built-in EC, so this situation is discarded.
  3. webrtc-aecm module is fine, it just took 1~2ms to process a 10ms frame. and the most important is the thing called delay, you should follow the description of it in audio_processing.h strictly, if you calculate a right value of delay, everything will be OK.

EDIT

  1. After a long long time working with WebRTC AECM(or APM), I still cannot make it work perfect on android. I think AECM need more optimazition, but Google seems no plan on it. Any way, I'll keep attention about Google WebRTC and its AECM(or AEC) performance on android.

  2. (Updated on 6/23/2020) Please refer to my GitHub project's README, my solution above was deprecated by myself years ago. I don't want to misleading others.

Outras dicas

There are two issues that relates to AEC on Android:

  1. CPU. Most AEC algorithms does not perform well with low CPU.

  2. Echo Path - many VoIP application on Android introduce echo delay that is higher than what the free algorithm can handle (efficiently).

Bottom line, I suggest that you first measure the echo delay (i.e. echo tail) in your VoIP application. If it does not exceed 16ms-64ms you can try using one of the above mentioned free solutions.

One more note, I believe Speex will not work good on mobile devices since as far as I know it does not have a fix-point version.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top