Forums

DTMF Detection using Goertzel Algorithm

Started by raghav May 3, 2006
Hi,

I am new here and to the DTMF. I need some clarifications....

1) What must be the minimum energy level for DTMF signal.
2) How can i validate the DTMF signal after Goertzel Algorithm.

can anyone help........

-Raghu



raghav wrote:
> Hi, > > I am new here and to the DTMF. I need some clarifications.... > > 1) What must be the minimum energy level for DTMF signal. > 2) How can i validate the DTMF signal after Goertzel Algorithm. > > can anyone help........ > > -Raghu
Did you try Google? (I know you didn't, because if you had you would have found a lot of useful information on this topic). Steve
>raghav wrote: >> Hi, >> >> I am new here and to the DTMF. I need some clarifications.... >> >> 1) What must be the minimum energy level for DTMF signal. >> 2) How can i validate the DTMF signal after Goertzel Algorithm. >> >> can anyone help........ >> >> -Raghu > >Did you try Google? (I know you didn't, because if you had you would >have found a lot of useful information on this topic). > >Steve > >
Hi Steve, It's not that i haven't searched in google. I had gone through few links and implemented the following procedure (long back) after Goertzel algorithm to validate the signal... 1) Find maximum row and column energy 2) Use Parseval's theorem to check for minimum energy. 3) Check the twist limits 4) Put a threshold and check for the number of peaks. The problem here is in step 2. Sum of maximum row and maximum column energy must constitute for 80%-90% of total energy(adding square of each sample). Here what's happenning is the total energy falls much below the sum of max row and max col energy always. Hence falls detection. If you can clarify and brief about the following steps, it will be of much help....... Thanks, -RAX
raghav wrote:
>> raghav wrote: >>> Hi, >>> >>> I am new here and to the DTMF. I need some clarifications.... >>> >>> 1) What must be the minimum energy level for DTMF signal. >>> 2) How can i validate the DTMF signal after Goertzel Algorithm. >>> >>> can anyone help........ >>> >>> -Raghu >> Did you try Google? (I know you didn't, because if you had you would >> have found a lot of useful information on this topic). >> >> Steve >> >> > > Hi Steve, > > It's not that i haven't searched in google. I had gone through few links > and implemented the following procedure (long back) after Goertzel > algorithm to validate the signal... > > 1) Find maximum row and column energy
Good first step
> 2) Use Parseval's theorem to check for minimum energy.
Good way to get excellent voice immunity, but consider the whole picture. You typically have more than just nice clean DTMF tones in the channel. Echo of the dial tone is the usual problem. The DTMF detectors looking for 2nd harmonic energy are trying to sidestep the effects of dial tone. If you use the Parseval approach (i.e. conservation of energy) you need to eliminate the dial tone by filtering or echo cancelling.
> 3) Check the twist limits
Yep, you have to do that.
> 4) Put a threshold and check for the number of peaks.
Looking for the peak row/column being much stronger than the others, rather than looking for the number of peaks, tends to work well. Just how much stronger is left as an exercise for the reader.
> The problem here is in step 2. Sum of maximum row and maximum column > energy must constitute for 80%-90% of total energy(adding square of each > sample). Here what's happenning is the total energy falls much below the > sum of max row and max col energy always. Hence falls detection.
Have you simply screwed up the scaling factors? Its pretty easy to do. If the sum of peak row and peak column always exceeds the total energy, shouldn't that always be a pass, rather than a fail? If seems like you should have too much rather than too little detection.
> If you can clarify and brief about the following steps, it will be of much > help.......
Maximising voice immunity requires some tweaking. When can get down to 10 total hits across all six sides of the Bellcore test tapes, stop. :-) Regards, Steve
raghav wrote:
> Hi, > > I am new here and to the DTMF. I need some clarifications.... > > 1) What must be the minimum energy level for DTMF signal. > 2) How can i validate the DTMF signal after Goertzel Algorithm. > > can anyone help........ > > -Raghu
Mitel used to sell a DTMF test tape. It is now available from Zarlink Semiconductor as a CD with .wav files. Get a hold of this, and when your decoder can pass all the tests then you are probably done. John
john wrote:
> raghav wrote: > >>Hi, >> >>I am new here and to the DTMF. I need some clarifications.... >> >>1) What must be the minimum energy level for DTMF signal. >>2) How can i validate the DTMF signal after Goertzel Algorithm. >> >>can anyone help........ >> >>-Raghu > > > Mitel used to sell a DTMF test tape. It is now available from Zarlink > Semiconductor as a CD with .wav files. Get a hold of this, and when > your decoder can pass all the tests then you are probably done. > > John >
or get the Bellcore tapes, which are a tougher test, and keep working. :-) Steve
>john wrote: >> raghav wrote: >> >>>Hi, >>> >>>I am new here and to the DTMF. I need some clarifications.... >>> >>>1) What must be the minimum energy level for DTMF signal. >>>2) How can i validate the DTMF signal after Goertzel Algorithm. >>> >>>can anyone help........ >>> >>>-Raghu >> >> >> Mitel used to sell a DTMF test tape. It is now available from Zarlink >> Semiconductor as a CD with .wav files. Get a hold of this, and when >> your decoder can pass all the tests then you are probably done. >> >> John >> >or get the Bellcore tapes, which are a tougher test, and keep working.
:-)
> >Steve >
Thanks, Friends your guidance helped me a lot.... I have ported the process to the microcontroller 'am working on. Yes Steve you are right, the noise immunity is very weak....(parseval's theorem). Is there any other way? John i got the wav files from one of the audio editing (Cool Edit) tools and ran it in simulation, will that be fine. I came to know Goertzel Algorithm introduces a gain of N/2 (N is buffer/bin length). So, while using Parseval's theorem i have to devide the maximum column and row energy by N/2 and sum up. This will be checked against 90%(this value is fine) of total energy( now, the sum falls within range). The Goertzel energy is squared magnitude (am i missing anything here in the process?) I am using a buffer length of 205 and 8000Hz sampling rate. As per the specifications the minimum tone length has to be 40ms but can be 23ms. Does that mean i have to detect the tone twice as i am using buffer length of 25ms. Able to detect DTMF signals with forward twist upto 4dB and reverse twist upto 6dB but not upto 8dB. Any feedbacks? -Raghu
"raghav" <rax.s.in@gmail.com> wrote in message 
news:kLOdnZL1695FQ8PZRVn-sQ@giganews.com...
> > Able to detect DTMF signals with forward twist upto 4dB and reverse twist > upto 6dB but not upto 8dB. Any feedbacks? > > -Raghu
Hello Raghu, While the Bellcor spec states +4 and -8 dB of twist allowed - remember this is defined for a phone to switch (one hop). For a two hop ( phone to switch to destination equipment) situation you actually have to allow for larger twists. Fortunately the use of digital networks diminishes the multihop effect, but if you have analog lines at both ends just be aware of this potential problem. Clay