spandsp: DTMF receiver

spandsp 0.0.6

DTMF receiver

# What does it do?

The DTMF receiver detects the standard DTMF digits. It is compliant with ITU-T Q.23, ITU-T Q.24, and the local DTMF specifications of most administrations. Its passes the test suites. It also scores very well on the standard talk-off tests.

The current design uses floating point extensively. It is not tolerant of DC. It is expected that a DC restore stage will be placed before the DTMF detector. Unless the dial tone filter is switched on, the detector has poor tolerance of dial tone. Whether this matter depends on your application. If you are using the detector in an IVR application you will need proper echo cancellation to get good performance in the presence of speech prompts, so dial tone will not exist. If you do need good dial tone tolerance, a dial tone filter can be enabled in the detector.

The DTMF receiver's design assumes the channel is free of any DC component.

# How does it work?

Like most other DSP based DTMF detector's, this one uses the Goertzel algorithm to look for the DTMF tones. What makes each detector design different is just how that algorithm is used.

Basic DTMF specs:

- Minimum tone on = 40ms
- Minimum tone off = 50ms
- Maximum digit rate = 10 per second
- Normal twist <= 8dB accepted
- Reverse twist <= 4dB accepted
- S/N >= 15dB will detect OK
- Attenuation <= 26dB will detect OK
- Frequency tolerance +- 1.5% will detect, +-3.5% will reject

TODO: