Understanding the dtmfe option for CG cards
Introduction
This article describes how hardware and software echo cancellation interact with the dtmfe DSP code and answers the following questions:
Is it possible to use dtmfe with hardware echo cancellation?
Is it possible to use dtmfe with no echo cancellation?
Why do I want dtmfe in the first place?
What happens if I try to use dtmf with echo cancellation enabled?
Definition of 'dtmfe'
"dtmfe" means "DTMF detection for use with echo cancellation";  it doesn't matter whether the echo cancellation is software-based (like on a CG6000) or hardware based (like on a CG6565 board), or even if it's external, on a remote IP gateway, for example.6060 or CG
Background on DTMF detection
DTMF detection involves a balance between two different performance criteria which tend to work against each other, known as cut-through and talkoff.
Cut-through is the ability of the DTMF detector to accurately detect a DTMF while a prompt is playing. Because of echo, part of the outgoing prompt may be sent back into the DTMF detector, and act as a distortion of any incoming DTMF. To have good cut-through performance, a DTMF detector must be relatively accepting of imperfect signals.
Talkoff is a problem where a person's voice (a female voice in particular) will be falsely detected as a DTMF. DTMF tones themselves are specifically designed to be non-harmonic, so as to make them relatively immune to false triggers from voice, but they're not perfect, and some voices can trigger DTMF detectors. To have good talkoff performance, a DTMF detector must be very discriminating in what it accepts.
So if you want to have good cut-through performance, you open up your DTMF detector, but your talkoff performance will deteriorate and you start to get false DTMF detections. Or if you want to have good talkoff performance, you can narrow the sensitivity of your DTMF detector, and it won't get any false hits, but your cut-through performance deteriorates and sometimes a DTMF won’t interrupt a prompt properly.
Difference between 'dtmf' and 'dtmfe' DSP code implementations
The "dtmf" DSP code is tuned as a balance between these factors, so it accepts some amount of distortion of incoming DTMFs, but at the expense of an occasional false DTMF detection.
On the other hand, the "dtmfe" DSP code assumes that echo cancellation is mostly taking care of the cut-through problem by removing the echo which otherwise interferes with DTMF detection, so the DTMF detector doesn’t have to be as accepting of bad DTMFs. That allows the talkoff performance to be improved, so you should have fewer false DTMF detections.
So you can use "dtmfe" with any kind type of echo canceller, and that should improve your talkoff performance. On the other hand, if you don't have a talkoff problem, you should probably use the default "dtmf", whether you are using echo cancellation or not.
Configuring a CG board to use 'dtmfe'
To use dtmfe on CG boards, edit the board configuration file, find the Resource[x].Definitions line, and change dtmf.<function> to dtmfe.<function> (for example, from dtmf.det_all to dtmfe.det_all). Then reload the board. You may check \nms\oam\log\oam.rpt or /opt/nms/oam/log/oam.rpt to confirm that dtmfe was loaded:
 DSP [1..31]: C:\NMS\CG\LOAD\dtmfe.f54 14271 (02/22/09 23:48)