Noise Cancellation using MATLAB

Started by nata...@hotmail.com December 3, 2009
Hello,
I'm Natasha and I'm doing my project on ' active noise cancellation in headsets'. I am new to MATLAB and have written a code for noise cancellation of an audio signal using a simple lms filter. However, the program shows errors,particularly in the lms filter designing area;
[d,r] = wavread('df3_n0H.wav.wav');
r 00
size(d)
ans B500
M = 32;
mu=0.004;
[b,a]= adaptfilt.lms(M,mu);
df= filter(b,a,d);
specgram(df,1024,r);
soundsc(df,r);
wavwrite(df,r,'tmp.wav');

I was hoping fr suggestions from someone more proficient in the filed. Many thanks.
Hey Natasha,

First of all, what is your assignment? I mean, what parameters/performance do you know/need since you're doing noise cancellation for headsets. That's the starting point for determining M and mu. (Maybe you already did this)
Now as I look on your code I find 1 mistakes (I think): You only filter the audio signal from an amplitude point of view. But, what happens with the phase spectrum? (I was doing a similar filtering project, and that was my bad. traditional lms approach doesn't handle the phase spectrum and that's where distortions come from)
If this the problem then I would suggest you try a different approach:
1. one possibility is spectral subtraction (I know it is successfully implemented in headsets, but i didn't use this method so far)
2. Wiener filtering. There are loads of documentation on the internet and there are a few wiener functions implemented on mathworks.
Hope this was of any help. If can can help you further on please let me know and I'll do my best.

Paul

Hello,
>I'm Natasha and I'm doing my project on ' active noise cancellation in headsets'. I am new to MATLAB and have written a code for noise cancellation of an audio signal using a simple lms filter. However, the program shows errors,particularly in the lms filter designing area;
>[d,r] = wavread('df3_n0H.wav.wav');
>r 00
>size(d)
>ans B500
>M = 32;
>mu=0.004;
>[b,a]= adaptfilt.lms(M,mu);
>df= filter(b,a,d);
>specgram(df,1024,r);
>soundsc(df,r);
>wavwrite(df,r,'tmp.wav');
>
>I was hoping fr suggestions from someone more proficient in the filed. Many thanks.
Hey Natasha,

First of all, what is your assignment? I mean, what parameters/performance do you know/need since you're doing noise cancellation for headsets. That's the starting point for determining M and mu. (Maybe you already did this)
Now as I look on your code I find 1 mistakes (I think): You only filter the audio signal from an amplitude point of view. But, what happens with the phase spectrum? (I was doing a similar filtering project, and that was my bad. traditional lms approach doesn't handle the phase spectrum and that's where distortions come from)
If this the problem then I would suggest you try a different approach:
1. one possibility is spectral subtraction (I know it is successfully implemented in headsets, but i didn't use this method so far)
2. Wiener filtering. There are loads of documentation on the internet and there are a few wiener functions implemented on mathworks.
Hope this was of any help. If can can help you further on please let me know and I'll do my best.

Paul

Hello,
>I'm Natasha and I'm doing my project on ' active noise cancellation in headsets'. I am new to MATLAB and have written a code for noise cancellation of an audio signal using a simple lms filter. However, the program shows errors,particularly in the lms filter designing area;
>[d,r] = wavread('df3_n0H.wav.wav');
>r 00
>size(d)
>ans B500
>M = 32;
>mu=0.004;
>[b,a]= adaptfilt.lms(M,mu);
>df= filter(b,a,d);
>specgram(df,1024,r);
>soundsc(df,r);
>wavwrite(df,r,'tmp.wav');
>
>I was hoping fr suggestions from someone more proficient in the filed. Many thanks.
Hello,
I'm Natasha and I'm doing my project on ' active noise cancellation in headsets'. I am new to MATLAB and have written a code for noise cancellation of an audio signal using a simple lms filter. However, the program shows errors,particularly in the lms filter designing area;
[d,r] = wavread('df3_n0H.wav.wav');
r 00
size(d)
ans B500
M = 32;
mu=0.004;
[b,a]= adaptfilt.lms(M,mu);
df= filter(b,a,d);
specgram(df,1024,r);
soundsc(df,r);
wavwrite(df,r,'tmp.wav');

I was hoping fr suggestions from someone more proficient in the filed. Many thanks.