In the audio domain, I am currently attempting to use MATLAB to distil:

  1. $\textrm{signal}$ from $\textrm{noise + signal}$

  2. $\textrm{noise}$ from $\textrm{noise + signal}$ using two adaptive filters $\rightarrow$ two results.

I get the first answer quite effectively using:

hFDAF1 = adaptfilt.fdaf(AdaptFiltLength,StepSize,Leakage,Delta,Lambda)

[Errors1, Adapt_Out_Audio] = filter(hFDAF1, NoisePlusAudio, Audio)

where NoisePlusAudio is a microphone in the room, and Audio is music playing through speakers in the room.

How do I get the adaptive filter to remove the Audio from NoisePlusAudio, just leaving the background noise of the room, much like an echo canceller? The following does not work, it just lets all the sound through.

[Errors2, Adapt_Out_Noise] = filter(hFDAF2, Audio, NoisePlusAudio)

I'd love to know the answer ....

  • $\begingroup$ I assume your hFDAF2 is similar settings to hFDAF1? $\endgroup$ – GameOfThrows Feb 5 '16 at 9:41
  • $\begingroup$ I use:AdaptFiltLength = 256 StepSize = 0.03 Leakage = 0.9 Delta = 1 Lambda = 0.96 $\endgroup$ – CrocoDSP Feb 6 '16 at 6:33
  • $\begingroup$ Would you support this: area51.stackexchange.com/proposals/94189/matlab Just up vote question with less than 10 votes. $\endgroup$ – Royi Jan 2 '17 at 12:10

Reason for it might be the continuous adaptation, even in non speech regions. So, you can try Voice Activity Detector (VAD) for knowing the exact regions for adaptation of filter, and processing will be frame wise (20 ms).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.