# How to remove salt & pepper noise from speech signal?

I'm having a lot of problems with my project:

1. I added salt and pepper noise by inbuilt function
2. I DWT function with Haar family
3. Now I want to remove noise from original speech signal.
4. I don't know how to do this
• Try moving median Jul 18, 2013 at 8:06
• Is this a homework problem? You are required to use Haar wavelets to solve it or can you use other methods? Jul 18, 2013 at 19:56

What's this for? How complex of a solution do you need? A simple solution (a moving average) or a complex solution?

There's a whole field dedicated to complex solutions: compressed sensing. It sounds like you're reconstructing from uniform projections. There's a PhD thesis called reconstructing from noisy random projections that might help you.

Any algorithm in compressed sensing is viable with wavelet transforms. Any function where the signal of interest is sparse is workable, since Candes proved (back in 2004) that any signal of mostly 0's is reconstructable.

I know for a fact that iterative soft thresholding works via some measurements, but I'm unsure about if noise is included in those measurements, so I tested it.

I used a 2D case, since that's what I had on hand. The noise is a uniform distribution from 0 to 25 (so +/- 5% of the maximum). The first graph is the results, and the second the reconstruction (only taking ~3 seconds on my machine).

If you are forced to use the Discrete Haar Transform, then note that the Discrete Haar Mother Wavelet is nothing but a [1 -1], or in other words, a discrete differentiator, as shown below:

As such, it can/will severely accentuate sudden transitions in your waveform, ie, salt and pepper noise.

Note, that the first dyadic scale of the DHT will be composed of coefficients computed from the signal correlated with the Haar Mother wavelet. At this level, salt&pepper noise will correlate very well, and will give you large wavelet co-efficients in the wavelet space. One can then simply null the large values out, and then perform an inverse Discrete Haar Wavelet Transform, (IDHT).

It is strange that you would be required to use the Discrete Haar Wavelet Transform, (over, say, the Stationary Wavelet Transform), because nulling co-efficients in the DWT space and inverse transforming can lead to aliasing. This effect might be small for the problem you describe however.

Another possibility would be to simply perform the DWT, identify the large wavelet co-efficients within the last half of the DWT transform, (corresponding to high correlations between SP noise and the Haar Mother Wavelet), identify those large co-efficients, and simply null them out in the time domain, without doing an inversion. This will get around the problem of aliasing in the inverse transform.