My question is basically in regards to how to detect when (in time) a signal 'starts', and it might also be called 'transient detection', or, as I have read in some papers regarding music, the 'onset' of a signal.

The motivation here is ultimately a Time-Delay-Of-Arrival (TDOA) estimate between two signals, but suppose you do not have the luxury of doing a cross-correlation because the signals are either way too long, and/or there is so much multi-path corruption that the cross-correlation method doesnt work. In this case my belief is to look for where a signal 'starts' and go from there.

I am looking for more breadth than depth here, as in, a survey of possible/common methods used in doing such a thing.


  • $\begingroup$ By starts you mean goes from low amplitude noise to meaningful higher amplitude signal? $\endgroup$ – Phonon Jan 26 '12 at 19:06
  • $\begingroup$ @Phonon Yes, exactly. $\endgroup$ – Spacey Jan 26 '12 at 19:29
  • $\begingroup$ I believe it's generally knows as signal onset detection. $\endgroup$ – Phonon Jan 26 '12 at 19:30
  • $\begingroup$ @Phonon Yes, and as I am doing my research, I have come to learn it by 'onset', 'singularity', 'transient', 'edge' (for 2D) detections, etc. Also 'step' detection. There seems to be a lot of lexical definitions for this concept. $\endgroup$ – Spacey Jan 26 '12 at 19:38

If both signals are audio signals from the same source (just different paths to get there) you can do

  1. Calculate the envelope (various methods for that, depends on the signals and the accuracy you want)
  2. Down sample
  3. Do a running cross correlation (at the down sampled rate)

The application I'm working on (snore detection) uses "spectral difference" (also called "spectral flux") -- basically the sum of differences between two subsequent FFTs -- to detect snore onset.

  • $\begingroup$ Thanks for your reply Daniel - thats interesting - how do you set your threshold though? Hard arbitrarily high limit, or some other method? $\endgroup$ – Spacey Feb 1 '12 at 3:57
  • 1
    $\begingroup$ @Mohammad -- Ah!! That's the challenge! Basically we compare to a historical (over the past few minutes) average, and declare "onset" when the spectral difference exceeds the average by a certain % for a given amount of time. (With a bunch of other metrics thrown in.) But our input is really noisy, and we're more interested in simple detection than accurately determining time of onset. $\endgroup$ – Daniel R Hicks Feb 1 '12 at 18:48
  • $\begingroup$ Ah! I see - Yes, I find that this is one of the most hardest (annoying?) problems I have to always face. :-) $\endgroup$ – Spacey Feb 2 '12 at 0:50

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.