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