Nomprenom
Nomprenom

Reputation: 1

busy tone detection in audio PCM signal

I'm trying to detect tones in an phone audio signal (Busy and Ring to be exact). I used a Goertzel algorithm to detect one frquency in the signal. I dont need to search for multiple frquencies, it's only the one I want or not (1/0) (it's before the call starts)

On another side I wrote a pattern detector (on for 300ms, off for 100ms, on for 300ms, off for 100ms for example). I get a percentage of similitude to my pattern than I decide if I found it or not.

I worked with sample from one tone database web site but it seems to give generated signal : too much clean compared to the real sound you can get from a phone.

My goertzel filter gives something like this in reality: When I run this on one sample I got something like this:

https://i.sstatic.net/rZdgZ.png

How to convert this results so I can get 1 when the frequency is detected and 0 if not.

So far, I tried this:

What do you suggest ?

Thanks

Edit

I think I managed to get what I want. In real time:

  1. I compute the average of the last 20 goertzel magnitudes.
  2. I update the max of this average

The signal was found if avg > (max/2)

On the screenshot below the result is in gray

https://i.sstatic.net/L432s.jpg

Edit 2

source code:

https://github.com/nonprenom/tones_detector

Upvotes: 0

Views: 369

Answers (0)

Related Questions