DSPRelated.com
Forums

need help - Wiener filter

Started by hend...@web.de June 9, 2010
Hi,
I'm currently working on my bachelors thesis. I examine the noise reduction performance of the wiener filter in various transform domains.

I began with the FFT and the KLT (Karhunen–Loève Transform) domain. For each block I transform the block with the fft/klt and then compute the filter coefficients, filter the signal, inverse transform and then write it out.

My problem is now that I get some "noise" at the output signal (I'm sorry that I can't describte that in a better way) and I don't now where that comes from.

I'm not very familiar with effects that are possible but maybe you are. I upped it here:
http://www.loaditup.de/504774.html (hope the link works)

It would be very nice of you if you could download the file, listen to it and tell me if you have heard something like that before ;)

The input signal is a 10sec speech signal with 16kHz sampling rate.
Every block is of length 32, overlap is 50% and I use a hann window.

Is the noise maybe caused by the short blocklength ? If I use a bigger length it is not so intense any more - but still there.

I would be very happe if you could help me with that. If you need more information please feel free to ask ;)

Thank,
Hendrik
On Thu, Jun 10, 2010 at 2:02 AM, wrote:

> Hi,
> I'm currently working on my bachelors thesis. I examine the noise reduction
> performance of the wiener filter in various transform domains.
What are the input files to your program? How do you get an estimate of
noise? Are you following any reference paper/text ?

> I began with the FFT and the KLT (KarhunenLoe Transform) domain. For
> each block I transform the block with the fft/klt and then compute the
> filter coefficients, filter the signal, inverse transform and then write it
> out.
>
> My problem is now that I get some "noise" at the output signal (I'm sorry
> that I can't describte that in a better way) and I don't now where that
> comes from.
>
> I'm not very familiar with effects that are possible but maybe you are. I
> upped it here:
> http://www.loaditup.de/504774.html (hope the link works)
Link doesn't work for me.
> It would be very nice of you if you could download the file, listen to it
> and tell me if you have heard something like that before ;)
>
> The input signal is a 10sec speech signal with 16kHz sampling rate.
> Every block is of length 32, overlap is 50% and I use a hann window.
Generally for speech the window size should be 20 - 30 msecs, so choose
block-length accordingly.
Hi,

Unfortunately, the link doesn't work for me either. Anyway, I think I know
what your problem is.
The Wiener filter adaptively calculates the coefficients of a RIF or IIR
filter (I don't know which one are you using). Anyway, did you pay attention
to phase? At every block you filter, the phase characteristic of your FIR or
IIR filter is different, and the result is that your output file is
distorted.

I worked with some speech signals I have recorded myself and I have added
some simulated noise (rand and randn in MATLAB), and some real noise (what I
have recorded in traffic, in a hall and in the bus). Before I handled the
phases, my result was so distorted, that output noise was bigger than input.
You need to see that the filtered components are passed through an all-pass
filter such that the phase shifts are corrected.

Take a look on the mathworks homepage. They have a very good Wiener filter
example, and it is useful to understand the main points.

Regarding the SNR, I have estimated it as follows. I compute the maximum
power (that is signal+noise) and the noise power, and teh SNR is
20lg(Pmax/Pnoise).

Hope this was of any help. If you have further questions and I could help
you, then just let me know.

Paul

Hi,
>I'm currently working on my bachelors thesis. I examine the noise reduction performance of the wiener filter in various transform domains.
>
>I began with the FFT and the KLT (Karhunen–Loève Transform) domain. For each block I transform the block with the fft/klt and then compute the filter coefficients, filter the signal, inverse transform and then write it out.
>
>My problem is now that I get some "noise" at the output signal (I'm sorry that I can't describte that in a better way) and I don't now where that comes from.
>
>I'm not very familiar with effects that are possible but maybe you are. I upped it here:
>http://www.loaditup.de/504774.html (hope the link works)
>
>It would be very nice of you if you could download the file, listen to it and tell me if you have heard something like that before ;)
>
>The input signal is a 10sec speech signal with 16kHz sampling rate.
>Every block is of length 32, overlap is 50% and I use a hann window.
>
>Is the noise maybe caused by the short blocklength ? If I use a bigger length it is not so intense any more - but still there.
>
>I would be very happe if you could help me with that. If you need more information please feel free to ask ;)
>
>Thank,
>Hendrik