Pages from the fire

I came here to write software and chew bubblegum, and I'm all out of software.

Adaptive Filters

Filters are devices that emphasize some components of a signal and de-emphasize others. Most filters have fixed properties – they always filter their input signal in the same way. Adaptive filters are clever devices that change how they operate based on the characteristics of the input signals, thereby adapting (tuning) themselves to the task at hand. I used adaptive filtering in the domain of acoustic echo cancellation.

When you speak to someone who is using a speaker phone, or when you chat with some one else who is not using headphones, you can often get an annoying echo of your own voice. This occurs because whatever you say gets broadcast into the other person’s room, bounces around, gets picked up by their mike, and then gets played back to you along with whatever the other person is saying. This feedback can get extremely annoying.

Acoustic echo cancelers are adaptive filters that try and estimate the ‘room transfer function’ of someone else’s room. They try to estimate, based on whatever you just said, what the echo of that will sound like as it gets fed back to you. This estimate is then subtracted from the sound being fed to your speakers/headphones so that you will only hear the other person’s voice, and not the echo of your own voice.

I think of adaptive filters as a basic machine intelligence: a system that changes (“learns”) in response to its environment.