Matlab implementation of adaptive noise canceler? - DSP

This is a discussion on Matlab implementation of adaptive noise canceler? - DSP ; I'm trying to filter out some nasty noise from an audio recording. It appears to be periodic from the sound of it - rather like a buzz saw.. Maybe 60Hz and 120Hz components from the look of it. It seems ...

+ Reply to Thread
Results 1 to 5 of 5

Matlab implementation of adaptive noise canceler?

  1. Default Matlab implementation of adaptive noise canceler?

    I'm trying to filter out some nasty noise from an audio recording. It
    appears to be periodic from the sound of it - rather like a buzz saw.. Maybe
    60Hz and 120Hz components from the look of it.

    It seems fairly constant in the background and is more noticeable in quiet
    sections. At least it sounds constant enough that subtracting it out might
    be a good strategy. The issue is getting a good replica for that purpose.

    So, I thought that an adaptive noise canceller with a big delay in one side
    or a looped source of a quiet section of suitable length as a noise
    reference might be a good idea.

    Whatever, I don't have a program to do it and I don't have the time to code
    it up from scratch - as I'd be dealing with mistakes, etc. etc.

    Suggestions would be appreciated.

    Fred



  2. Default Re: Matlab implementation of adaptive noise canceler?

    Fred Marshall wrote:
    > I'm trying to filter out some nasty noise from an audio recording. It
    > appears to be periodic from the sound of it - rather like a buzz saw.. Maybe
    > 60Hz and 120Hz components from the look of it.
    >
    > It seems fairly constant in the background and is more noticeable in quiet
    > sections. At least it sounds constant enough that subtracting it out might
    > be a good strategy. The issue is getting a good replica for that purpose.
    >
    > So, I thought that an adaptive noise canceller with a big delay in one side
    > or a looped source of a quiet section of suitable length as a noise
    > reference might be a good idea.
    >
    > Whatever, I don't have a program to do it and I don't have the time to code
    > it up from scratch - as I'd be dealing with mistakes, etc. etc.
    >
    > Suggestions would be appreciated.


    I'm not up to advising you, but I'll offer a thought you might pursue.
    You might average several selected periods of noise from a quiet
    section, much as astronomers average (sum) several exposures of star
    images, discarding those most disturbed by atmospherics. Flutter in the
    recording may be hard to deal with, but wow can probably be mitigated
    with time/pitch corrections. All more easily said than done, but better
    you to do it than me. :-)

    Jerry
    --
    Engineering is the art of making what you want from things you can get.
    ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
    ** Posted from http://www.teranews.com **

  3. Default Re: Matlab implementation of adaptive noise canceler?

    Jerry Avins wrote:
    >
    > I'm not up to advising you, but I'll offer a thought you might pursue.
    > You might average several selected periods of noise from a quiet
    > section, much as astronomers average (sum) several exposures of star
    > images, discarding those most disturbed by atmospherics. Flutter in
    > the recording may be hard to deal with, but wow can probably be
    > mitigated with time/pitch corrections. All more easily said than
    > done, but better you to do it than me. :-)
    >
    > Jerry


    Jerry,

    Thanks. Well, in the absence of adaptive noise cancelling code, I decided
    to do something very simple along the lines you suggest.. I think.

    Because the segments I'm interested in are low SNR to begin with (that's why
    I want to subtract out the noise), I decided to start by doing a circular
    "shift-subtract". To the extent that the noise is periodic, and to the
    extent that its amplitude doesn't change much, I should be able to find
    shift values where the noise is reduced. This would be the same as passing
    the signal through a 2-coefficient FIR filter of [1 -1] if I knew the delay
    between the taps.

    When I find the minima in the shift-subtract data then I will know the
    period of the noise. Preliminary results look pretty good - that is, there
    are some rather distinct minima it appears.

    Then, with the period of the noise, I may be able to select a segment of the
    signal of that length that is purely noise and use that segment as a period
    of a longer noise replica. Then I might subtract *that* "noise" from the
    signal - properly aligned in time.

    If the first method works at all, I have no idea what to expect from all
    those zeros in the transfer function is going to do to the output! Just
    like Lloyd's Mirror. I'm trying to extract speech so it will possibly sound
    a bit "echoey".

    In the case of the adaptive filter, the adapting FIR filter should pass the
    spectral lines in the noise and adjust their phases - while supressing any
    broadband noise (and perhaps voice signal). The output of the filter is
    added (i.e. subtracted) from the input signal with appropriate amplitude to
    cancel the noise. The trick is to delay either the input to the FIR
    adapting filter so that the broadband noise isn't correlated at the summing
    point and is shut off in the filter. So, in this case there's the delay of
    the FIR filter plus the added delay at its input - and some hope that the
    voice signal will be supressed by the filter. That makes it nearly the same
    as subtracting a quiet passage of "noise only" and should eliminate the
    zeros in the transfer function re: the voice part.

    Fred



  4. Default Re: Matlab implementation of adaptive noise canceler?

    Hi Fred,

    if you knew the exact frequency of your noise, you would remove it via an
    adaptive notch filter in which the input signal would be the noise and the
    reference signal would be the audio signal with noise. Then the adaptive
    filter would remove the noise from your audio signal.

    Since you estimate that the noise is in the low frequencies, why don't you
    lowpass filter the audio signal, see what low frequencies you have and use
    the most strong of them as an input signal to the adaptive notch filter?

    I have not tried it, but it could work under some conditions. Try it and
    please report your results.

    Manolis

  5. Default Re: Matlab implementation of adaptive noise canceler?

    If the noise is constant, and you are able to estimate its
    properties, why not use a Wiener Filter?

    > It seems fairly constant in the background and is more noticeable in quiet
    > sections.  At least it sounds constant enough that subtracting it out might
    > be a good strategy.  The issue is getting a good replica for that purpose.



+ Reply to Thread