(1) Schlumberger Technology Corporation,
110 Schlumberger Dr., MD4,
Sugar Land, TX 77478
(2) Cicada Semiconductor,
Barton Oaks Plaza One,
901 South Mopac Expressway,
Austin, TX 78746.
(3) Department of Electrical and Computer Engineering,
Engineering Science Building,
The University of Texas at Austin,
Austin, TX 78712-1084 USA
Paper - Matlab code for 8-bit implementation
S. I. Shah, F. M. Kashif, J. Ahmad, and J. Khan, "In-band interference suppression in time-domain algorithms for DTMF detection", Proc. IEEE Int. Multitopic Conference, Dec. 2004, pp. 284-287.
extends our DTMF detection algorithm to work for Voice over Internet Protocol applications.
I. V. Andreyev, V. V. Babkin, V. A. Fouks, A. V. Kondroutski, A. A. Lanne, V. S. Zaborovski, and A. E. Zhamerovski, "DSP Units for IP-Telephony Systems", Proc. European DSP Education and Research Conf., Sept. 2000, Paris, France.
implements our DTMF detector using 16-bit data types and arithmetic for DTMF detection for Voice over Internet Protocol applications. They found that our algorithm not only is more efficient than a Goetzel-based algorithm but also "provides more accurate results".
Victor Kremin, "DTMF Detector", Cypress MicroSystems, Application Note 2122, May 6, 2003.
says the following about our DTMF detector:
"A very attractive decoder oriented on low-cost 8-bit processors is suggested in a recent paper . The decoder uses pair-adaptive notch filters to suppress one tone in the incoming signal and a direct frequency estimator to measure the frequency of other tone. This decoder meets all ITU specifications (both in time and frequency domains) and is characterized by very low speech resistance. The Bellcore talk-off test results are at the upper limit of allowable bounds and are much worse than a good DFT-based decoder with second harmonics analysis. The decoder consumes about 4.5 MISPs on an 8-bit CPU."
It appears that they never actually subject their detector to the Bellcore talk-off tests. Nor do they test our detector against their speech test.
^ ^ ^ F(n) = alpha * F(n-1) + (1-alpha)*F(n)
^ ^ F(n) = alpha * F(n-1) + (1-alpha)*F(n)
F(n)is the output of the two-tap averaging filter (first stage of estimator) and
^ F(n)is the output of the first-order IIR filter (second stage of estimator).
Last Updated 01/27/08.