2
$\begingroup$

I have a signal which consists of an onset and a release period.

The onset, sounding like a thud, excites frequencies across the entire frequency range (0-22 kHz). It lasts for about 0.1 s.

The release, sounding like a ring, excites 2-5 specific narrow frequency bands. Their amplitudes decay exponentially, albeit at slightly different rates.

I want to find the end of these narrow peak tracks. The method I am using now tracks the max amplitude in the narrow frequency bands and takes a windowed derivative. When this derivative passes through a threshold value, the end of the peak track is marked. This doesn't seem to be working consistently for particularly noisy signals.

My second idea was to track the amplitude of the peak tracks and compare them to the noise level. As soon as they reach the noise level, mark it as the end.

How do I estimate the noise level if there is no non-signal segment? The segment before the strike, is often very short or has some ramp in amplitude making it unsuitable as an average.

Edit: Here's the spectrogram:

enter image description here

$\endgroup$
  • 1
    $\begingroup$ Measure the noise outside of the narrow frequency bands? $\endgroup$ – geometrikal Aug 11 '13 at 10:45
  • $\begingroup$ Does the decay really end? Or does it just disappear below the noise as it exponentially decays theoretically forever? $\endgroup$ – hotpaw2 Aug 11 '13 at 14:20
  • $\begingroup$ I assume it decays through the noise level. $\endgroup$ – jessems Aug 11 '13 at 14:44
  • 1
    $\begingroup$ Could you post the spectrogram? Better yet the audio sample itself? $\endgroup$ – user13107 Aug 12 '13 at 1:54
2
$\begingroup$
  1. If you want to determine if the 2-5 narrowband frequencies are present use a matched filter with a threshold to determine their presence. In matlab the function is xcorr.
  2. If you want to determine what the noise level is when only signal is present, try filtering out the signal. Create a filter for each frequency then convolve the filters together to get a final filter.
$\endgroup$
  • $\begingroup$ I'm sorry I don't understand, could you elaborate on how that helps me? $\endgroup$ – jessems Aug 11 '13 at 18:20
2
$\begingroup$

Some possible approaches:

  • Compute the DFT of the decay segment, locate the 2-5 partials, eliminate them, and sum the energy in the remaining bands to get the noise level.
  • Fit a "sum of exponentially damped sinusoids + noise" model to your signal. This will actually give you the exponential decay factor for each partial, which I believe is the actual information you want to extract. And if you are only interested in the noise level, you don't even have to estimate all parameters of the model - just project on the noise subspace.
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.