1

Currently our software is detecting tones using FFT and checking if there is only a single peak in frequency spectrum. Our software needs to know what kind of input it is before taking action. So we differentiate the case when tone is fed as input or if the input is music.

However we are trying to reduce the MIPS and wondering if there is any other better ways to detect tones.

I found correlation with previous data can be used but again don't know the right method to do it. Is there any better method?

noman pouigt
  • 165
  • 1
  • 6
  • By MIPS, do you mean the computational complexity of your algorithm? – MBaz Dec 04 '15 at 01:18
  • @MBaz: edited question. – noman pouigt Dec 04 '15 at 01:19
  • If you will describe in more details the two types of signals you are trying to differentiate we might be able to help you. What you mean by single peak? Are two peaks regarded as the other case? What is the closest distance between the case of two peaks (or more than one peak?... What length of FFT you use? Do you really need this length? – Moti Dec 04 '15 at 07:10
  • @Moti Currently we just detect sine or any tone by doing FFT. As FFT is nlogn complexity we just want to see if there is any other method we can possibly use to differentiate tone vs music. We just want to differentiate if the input is tone or music. – noman pouigt Dec 04 '15 at 07:18
  • As an alternative to Olli's answer, take a look at: https://en.wikipedia.org/wiki/Goertzel_algorithm – MBaz Dec 04 '15 at 18:18
  • You are not answering my question. Is the tone a known frequency or it is specified as a very narrow band frequency in the range. Is the music a wideband signal? What range? may be this will help - do not use a long FFT - just 4 or 8 point might be enough. Compute power, average and compare to average + threshold. You need also to define what probability of detection and false alarm rates are accepted. – Moti Dec 04 '15 at 21:30

1 Answers1

1

Assuming that the tones are sufficiently sinusoidal, here's a possible scheme, with a bandpass filter being controlled by a frequency estimator:

Scheme

If the tunable bandpass filter's output is at about the same power as the input signal, then the input consists mainly of a sinusoidal tone. It is perfectly fine if the frequency estimator is a simple one that only gives a meaningful output for the tone to be detected.

Olli Niemitalo
  • 12,226
  • 1
  • 25
  • 54
  • That looks like a perfectly good idea. No idea why it was down voted. – Hilmar Dec 04 '15 at 10:27
  • It is far from perfect, because it is a general theoretical response and it might be even wrong. What is the block of "estimate frequency"? An FFT? This is not a response to the question. – Moti Dec 04 '15 at 21:26
  • "estimate frequency" might be for example a zero crossing detector, returning the reciprocal of the interval between the same-way-going zero crossings – Olli Niemitalo Dec 04 '15 at 23:27