Hello everybody.

Following on a discussion about cheap/time-domain spectral centroid
estimators, I thought it could have been interesting to also discuss
time-domain noisiness estimators.

I think that a common approach is the FFT-based spectral flatness
algorithm. In the time-domain, zero-crossing rate is another common
approach, although it seems to only work for specific cases like voiced Vs.
unvoiced sounds, or percussive Vs. non-percussive. A very high frequency
sinewave would also have a high ZCR, although it is not noisy.

I tried implementing a rudimentary noisiness estimator based on the idea
that a noisy signal is characterised by a varying ZCR, rather than a high
ZCR. What I did was to use a differentiator on successive averaging windows
of ZCR, and then I averaged the absolute value of differentiator's output
to obtain an index.

The algorithm seems to work fine for most cases, although some particular
frequencies of a sinusoidal input result in unexpected indexes. I guess
that a problem here is to find a good compromise in the averaging windows
of the ZCR. I am using 10-msec windows which seemed to work OK. I was also
thinking that I could make the averaging window time-variant, piloting it
based on a centroid estimation in order to optimes it according to the
spectral content of the signal.

Does any of the above make sense for you? Are you aware of other algorithms
using a similar technique?

If you're familiar with the Pure Data audio environment, you can have a
look at the patch here:
https://dl.dropboxusercontent.com/u/43961783/noisiness.jpg

Thanks,
Dario
_______________________________________________
dupswapdrop: music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp

Reply via email to