DSPRelated.com
Forums

Single Sensor Active Noise cancellation

Started by Etay June 21, 2008
Hello,

I am doing a project in which i need to implement acoustic noise canceller
which uses only a single mic.(essentially it is a "Feedback ANC")
the algorithm is based on a Kalman filter combined with a parameter
estimation.
Also, because of the single sensor, the reference signal(the unwanted
noise) is extracted from the error signal.

the unwanted signal is modeled as autoregressive stochastic process of
order p.
The Kalman filter is actually used as a predictor to compensate for the
delay between the mic and the loudspeaker. ie. to predict future values of
the noise signal near the mic.
the parameter estimation is based on solving the Yule-Walker equations
using a gradient search method.(using Robbins-Monro method)
the algorithm is sequential(the samples are processeed one by one).


I have written this algorithm in MATLAB, my problem is how to test it on
real noises. and what kind of noises are best attenuated by this
algorithm.
also what kind of noises are considered as stationary ones?
letting MATLAB process .wav noise using this algorithm is very slow,
how can i simulate this algorithm???


any help would be appreciated, 
especially if someone know this algorithm and implemented it (or something
similar) before and can give me good advises regarding simulating it.

thanx in advance 
Etay.
















On Jun 22, 1:54 pm, "Etay" <ish...@gmail.com> wrote:
> Hello, > > I am doing a project in which i need to implement acoustic noise canceller > which uses only a single mic.(essentially it is a "Feedback ANC") > the algorithm is based on a Kalman filter combined with a parameter > estimation. > Also, because of the single sensor, the reference signal(the unwanted > noise) is extracted from the error signal. > > the unwanted signal is modeled as autoregressive stochastic process of > order p. > The Kalman filter is actually used as a predictor to compensate for the > delay between the mic and the loudspeaker. ie. to predict future values of > the noise signal near the mic. > the parameter estimation is based on solving the Yule-Walker equations > using a gradient search method.(using Robbins-Monro method) > the algorithm is sequential(the samples are processeed one by one). > > I have written this algorithm in MATLAB, my problem is how to test it on > real noises. and what kind of noises are best attenuated by this > algorithm. > also what kind of noises are considered as stationary ones? > letting MATLAB process .wav noise using this algorithm is very slow, > how can i simulate this algorithm??? > > any help would be appreciated, > especially if someone know this algorithm and implemented it (or something > similar) before and can give me good advises regarding simulating it. > > thanx in advance > Etay.
In real life virtually everything is non-stationary though the sound of a fan is near-periodic or narrowband. I suppose an engine idling is another example. K.
You want to obtain real world data. Anything you put together in the lab
will be a biased test.   Buy yourself a digital sound recorder and take it
to locations where background noise is a problem, say, a football game, an
airport, a railway station, driving down a freeway with the windows open, a
construction site, etc. You might also obtain sound clips of historic
events, such as the moon landing, the hindenberg crash, battle field
communications, etc. 
Good luck!
Steve 
On Jun 23, 4:22 am, "SteveSmith" <Steve.Smi...@SpectrumSDI.com> wrote:
> You want to obtain real world data. Anything you put together in the lab > will be a biased test. Buy yourself a digital sound recorder and take it > to locations where background noise is a problem, say, a football game, an > airport, a railway station, driving down a freeway with the windows open, a > construction site, etc. You might also obtain sound clips of historic > events, such as the moon landing, the hindenberg crash, battle field > communications, etc. > Good luck! > Steve
You could also get a commercial CD - say Noisex K
On 22 Jun, 03:54, "Etay" <ish...@gmail.com> wrote:

> I have written this algorithm in MATLAB, my problem is how to test it on > real noises. and what kind of noises are best attenuated by this > algorithm.
You do these things in the wrong order: Find out what signals the algorithm will work with and test it in the lab first. Start out with simulating noise which complies exactly to the nosie model and make sure it goes away from the data. Then try different types of data. Next try to use noise where the order is not known (well, where you don't 'tell' the algorithm what order of the noise model) and see how well it adapts. Wait with analyzing real-life measurements till you have experience with the algorithm from simulations If you do a good job in the lab first, you will gain enough experience to be able to evaluate the different data you come across, and make educated guesses about how things will perform. Of course, the interesting cases are when things *don't* perform as expected...
> also what kind of noises are considered as stationary ones? > letting MATLAB process .wav noise using this algorithm is very slow, > how can i simulate this algorithm???
Make sure to read the files into buffers in large chunks, and read them on a per-sample basis from the buffers. Reading data per sample from the file is a recipe for disaster. Rune