5
$\begingroup$

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.

Thanks!

$\endgroup$
4
  • $\begingroup$ By starts you mean goes from low amplitude noise to meaningful higher amplitude signal? $\endgroup$
    – Phonon
    Jan 26, 2012 at 19:06
  • $\begingroup$ @Phonon Yes, exactly. $\endgroup$
    – Spacey
    Jan 26, 2012 at 19:29
  • $\begingroup$ I believe it's generally knows as signal onset detection. $\endgroup$
    – Phonon
    Jan 26, 2012 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, 2012 at 19:38

2 Answers 2

2
$\begingroup$

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)
$\endgroup$
2
$\begingroup$

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.

$\endgroup$
3
  • $\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, 2012 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$ Feb 1, 2012 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, 2012 at 0:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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