I am trying to implement a Acoustic Echo cancellation algorithm in Java for a VoIP system. This AEC will help to cancel the echo (coming from Speaker) in microphone input at the same PC. The sound frequency is 16 kHz mono and 16 bits PCM frame. At first I tested my codes with artificial sound stream. I use a sound file as speaker output, and then put 0.6 second delay on the same sound file to simulate microphone input. My AEC works well with and without double-talk. My problem is: my AEC can not work when I test it in a real scenario including two remote PCs. At the first a few minutes, there are a lot of high intensities noise. After I transfer the 16-bit PCM frames into SHORT in Java, these noises almost reach the maximum value of SHORT type. These noise will go down after a few minutes, but echos are not cancelled completely. I have tried to adjust the size of FFT (currently, it is 256), and the length of filer tail (Currently, it is 9600 frames for a 0.6 second standard echo delay in 16 kHz ) for a lot of different configurations, but none of them works to me.

Does someone have any clue or ideas on this problem? My implementation is mainly based on the two papers below.

  1. J. S. Soo, K. K. Pang Multidelay block frequency adaptive filter, IEEE Trans. Acoust. Speech Signal Process., Vol. ASSP-38, No. 2, February 1990.

  2. Valin, J.-M., On Adjusting the Learning Rate in Frequency Domain Echo Cancellation With Double-Talk. IEEE Transactions on Audio, Speech and Language Processing, Vol. 15, No. 3, pp. 1030-1034, 2007.

Additionally, there is an another question about my artificial testing data. If I use the sound of human being talking to simulate speaker output and microphone input, the 'echo' can be cancelled significantly. But the AEC can not converge completely if I use some repeating simple sound (like, calling sound of Skype). Initially, I thought that the bottom one would lead to a quick convergence, but it is not. Maybe this is relevant to my question about, but I am not sure. Also is there someone having any opinion on this? (I tried to post a image about these two sound types, but I do not have enough reputation to do that T_T, sorry for this)

  • 1
    $\begingroup$ Pictures of the signal, the signal with the echo, and the signal after echo cancelation would be helpful. $\endgroup$ – Jim Clay Nov 27 '12 at 23:35
  • $\begingroup$ I would recommend looking into straightforward LMS before multidelay block. It's easier to grasp. $\endgroup$ – Phonon Nov 28 '12 at 2:10
  • $\begingroup$ @JimClay I will do a more comprehensive test which will present my problem clearly, then I will put on the pictures. Thank you for the reply. $\endgroup$ – Jie Nov 28 '12 at 15:30
  • $\begingroup$ @Phonon , thanks for the reply. Could you tell me what aspects or things I should consider of with the LMS? or What information I need to provide about the LMS in my AEC? $\endgroup$ – Jie Nov 28 '12 at 15:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.