Linear filtering is based on a set of basic resonators in which each resonator selects one frequency. This approach is specified in references [ADI Vol-1 (1990), Schmer (2000)]. The Goertzel algorithm efficiently estimates the Fourier transform of the signal at specific frequencies. This process is similar to computing the discrete Fourier transform (DFT) at any one of the selected frequencies and for any arbitrary block of samples. DTMF has a limited set of frequency tone combinations; hence, the Goertzel method is more efficient than the DFT-based method. The Goertzel algorithm may be considered as a second-order infinite impulse response (IIR) band-pass filter and work similarly to the DTMF tone generation resonator, with the main difference that filtering operates on actual input and the oscillator requires initialization. The Goertzel filter output yk(n) for input x(n) is given by the difference equation.


In this equation, yk(−1) = 0; yk(−2) = 0, Coef(k) = 2 cos (2πk/N) = 2 cos (2πf/fs), where f is the tone frequency of interest (697 Hz for the first row bin); fs is the sampling frequency usually at 8000 Hz; n = 0, 1,…N − 1; and N is the DTMF processing block size in samples. In practice, the frequency index k = Nf/fs is rounded to the integer value. It is suggested that the rounding operation on Coef(k) be applied after normalizing ...

Get VoIP Voice and Fax Signal Processing now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.