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.
Single Sensor Active Noise cancellation
Started by ●June 21, 2008
Reply by ●June 22, 20082008-06-22
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.
Reply by ●June 22, 20082008-06-22
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
Reply by ●June 22, 20082008-06-22
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! > SteveYou could also get a commercial CD - say Noisex K
Reply by ●June 22, 20082008-06-22
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