VOCAL Print Logo
Swarm Coding >  PSO in AEC

Particle Swarm Optimization (PSO) in Acoustic Echo Cancellation

In the use of speakerphones, hands-free cellphones, and similar devices, a situation is created where sound coming out of a speaker is captured by a microphone after bouncing off of walls, windows, or whatever is in the vicinity of the speaker and microphone. Acoustic Echo Cancellation (AEC) is a term that refers to the collection of technologies that have been developed to deal with this problem. All of these technologies are based on modeling the acoustic environment with an adaptive filter. This allows us to apply the filter to the captured audio signal and simulate the echo. Thus, we can subtract the echo from the signal.

Mostly, Finite Impulse Response (FIR) filters are used in the modeling of the acoustic environment, because FIR filters are easier to implement. In many situations, an Infinite Impulse Response (IIR) filter would provide a better model, using fewer coefficients. This would lower the computational complexity of applying the filter to remove the echo, and would improve the quality of the resulting signal. The problem with IIR filters is that there is a higher computational cost to find the optimal filter coefficients. This can be overcome using Particle Swarm Optimization (PSO).

PSO is an algorithm first introduced in 1995 that was an outgrowth of a study of the flocking of birds. In PSO, we have "particles" which move in a semi-random manner in search of the optimum value of a function ƒ. The algorithm requires evaluation of ƒ at the position of each particle and then each particle's position needs to be updated based on its own history and the history of the entire group. The particles end up swarming around the optimum value of ƒ. This can be used to quickly find the optimal coefficients for the IIR filter in an AEC. This removes the added complexity and makes an IIR filter a feasible alternative to a FIR filter. In addition, we can further speed up the process of determining the optimal coefficients by implementing the PSO algorithm on an FPGA.