Re: [Asterisk] DTMF noise

Wolfgang Fritz (wolfgang.fritz@gmx.net)
Thu, 09 Jan 2003 14:31:55 +0100


David D. Hagood wrote:
> Wolfgang Fritz wrote:
>
>> Maybe it would be better to reenable harmonic checks but comparing
>> harmonic levels to the level of the fundamental instead of using
>> absolute values as in the present implementation.
>
>
> You mean the code DOESN'T normalize the signal to the total energy
> first?!?!? YEEP!

No. The original code used _absolute_ thresholds for the DTMF tones and
the harmonics. That did not work very well.

My simple patch added a relative energy comparision of the DTMF tones
and a simple plausibiltity check (DTMF is only accepted if there is
exactly one DTNF pair and no/low signal level on the other DTMF
frequencies. That worked with my (very limited) tests.

>
> The very FIRST thing you do is compute the total signal energy in the
> sample period, trivially reject if Etotal < MinETotal, then normalize
> all other signal energies to Etotal - that is a basic tenant of DSP.
>

My patch did a first step in that direction, but took only the energy
on the DTMF frequencies. That does not seem to be sufficient.

Another thing which may improve resistance against false DTMF detection
would be to require more than one consecutive samples to contain a valid
DTMF tone. See the link in one of my posts on lkml.

>
>> standard test procedure with a lot of test cases which are not
>> available to mortal humans (audio tapes from Bellcore IIRC)
>
>
> I think we may have the test cases as WAVs at work, and I think they are
> freely distributable - I'll kick a reminder to my work account off to
> check later today.
>

That would be nice. But that must be a rather big chunk of data - the
Mitel tape alone contains 30 minutes of speech, the Bellcore tapes even
more. Too much for my dialup line, I'm afraid.

Wolfgang

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/