Forums

Re: wiener filter implementation.

Started by fara...@yahoo.co.uk November 5, 2008
Hi, I am also working on a Wiener Filtering project. I have also encountered a few difficulties. I have followed the suggestions from this thread as well. My Wiener Filter appears as an all-pass filter, so there is no diffrence between the noisy signel and my output prom the Wiener Filter. Could you please give me some suggestions?

Hi,
>I am currently working on a speech enhancement project. I am implementing a noise cancellation system using Wiener filter.
>> From what I read in the text books and from the net , I got the transfer function for the filter as
>
>h(f) = {psd(noisySignal) - psd(noiseSignal) }/psd(noisySignal).
>I implemented this in matlab ,but the result was a highly distorted signal.
>I have given my procedure, pls suggest me the right way of doing it,
>Assumption:First few samples are from pure noise segment.
>
>noise = noise.* hamming(FFT_SIZE)';
>FN = fft(noise,FFT_SIZE); %FFT
>psdN = (FN.*conj(FN)); % psd of noise.
>
>signal = signal.*hamming(FFT_SIZE)';
>FS = fft(signal,FFT_SIZE); %/FFT
>psdS = (FS.*conj(FS));
>
>numrtr = psdS.-psdN;
>denmntr = psdS;
>coef = numrtr./denmntr; % filter TF
>
>% filtering
>outF = FS.*coef;
>out = ifft(outF,FFT_SIZE);
>output = real(out);
>
>Thanks in Advance,
>Yajna.