There seems to be a lot of interest in predictive dialler applications here recently. If you haven’t come across this concept, a predictive dialler is a machine that dials out from a call centre, and if the call is successful (that is, the call is answered by a person), then it connects the call with a waiting agent in the call centre. Obviously the main reason for a predictive dialler is to make the staff in the call centre more efficient, i.e. make sure they spend more time talking to people and not listening to busy tones, answering machine messages, etc.

Obviously there are a lot of technical challenges in making this work, detecting call progress and in-band tones, as well as looking at the energy on the line in order to detect human speech. The technical problem that interested me though, was detecting answering machines, which generate human speech without a real human present, and they also generate a bewildering variety of tones. One customer has been using the voice-activity-detection (VAD) features of Diva Server to detect human speech, and also they use a feature called Generic Tone Detection. This is a nice feature where you can ask the Diva Server to listen for any type of single tone, given a minimum length and minimum amplitude parameters. When the board hears a tone, it figures out the frequency and sends this information back to the app. What this customer found, is that different answer machines and voicemail services have tones of varying lengths, and all different frequencies, e.g. 700 Hz, 750, 850, 1400, so you end up with a database of potential tones that tell you whether an answer machine is present.

A useful tip for you, if you are testing with generic tones like this: Using the free software Audacity (, you load up a file (WAV etc) and analyze the frequencies (Analyze/Plot Spectrum) and see where the power peaks are.