Algorithm Description The algorithm relies on the length of the salutation and the silence or lack thereof which follows the salutation. For example, a person typically answers the phone with a simple "Hello" followed by a period of silence. They may also have a slightly longer greeting such as "Hello, Johnson residence" followed by a period of silence. Answering machines typically have much longer greetings with no long periods of silence such as "Hello, you've reached the Miller's residence, please leave a message after the beep." Using a short time energy function, the algorithm determines when a person is speaking and when they have transitioned to silence and makes a determination as to whether the called party is a live person or an answering machine. The short time zero crossing rate is used to determine if the energy detected is speech or a sinusoidal tone (or a pair of tones such as with DTMF). The AMD algorithm will reject tones and not mistake them for possible speech. This is necessary because some answering machines may begin their message with a tone. Also, the Telezapper type products are now frequently used to attempt to fool predictive dialers by playing 1 or a series of tones (reorder tone) before either the answering machine or the person picks up. This algorithm needs to reject those tones and listen only for speech. Due to the nature of the detection process described here, it should be noted that the detection rate is not and can never be 100%. Answering machine messages can be very diverse, may include music or other noise, etc. all effecting the algorithm and its decision making process. Dialer CPA Registry Keys That Impact AMD Behavior Registry Key Recommended Value (units) Default Value (units) Definition CPAMinSilencePeriod 375 (ms) 608 (ms) Amount of time that the signal must be silent after speech detection to declare a live voice. CPAAnalysisPeriod 2500 (ms) 1592 (ms) Amount of time (from the moment the system first detects speech) that analysis will be performed on the input audio. CPAMaxTimeAnalysis 3000 (ms) 8000 (ms) The period in which CPAAnalysisPeriod must start and stop or voice will be declared. This timer starts at off-hook. CPAMaxTermToneAnalysis 12000 (ms) 30000 (ms) This is the amount of time the algorithm will look for a terminating "beep" once the algorithm has detected an answering machine. Other Dialer CPA Registry Keys Registry Key Recommended Value (units) Default Value (units) Definition CPANoiseThresholdPeriod 100 (ms) 32 (ms) Amount of time that the CPA algorithm uses to compute the noise floor. CPAMinimumValidSpeechTime 112 (ms) 112 (ms) Amount of time that energy must be active before declared speech. Anything less is considered a glitch. CPAMinimumValidSpeechTime 112 (ms) 112 (ms) Amount of time that energy must be active before declared speech. Anything less is considered a glitch. CPAMaxNoiseFloor 10000 10000 Noise threshold limit. Not allowed to exceed 10000 CPAMinNoiseFloor 1000 1000 Noise threshold limit. Not allowed to be less than 1000 CPAJitterBufferDelay 150 (ms) 100 (ms) Jitter buffer delay CPAActiveThreshold 32 (dB) 32 dB Signal must exceed CPAActiveThreshold*noiseThreshold to be considered active. For example 32 is 10 * log(32) = 15 dB Examples Notes: 1. CPAMaxTimeAnalysis starts at off-hook detection. 2. Once the AMD algorithm declares live voice the call is transferred to the route point. 3. CPAMaxTimeAnalysis is moot once voice is detected Notes: 1. Algorithm declares answering machine because after voice detection, there were no periods of silence of at least CPAMinSilencePeriod in length. 2. If no beep is detected during CPAMaxTermToneAnalysis period then call is transferred at end of period. 3. Algorithm will declare Answering machine and start looking for beep once CPAAnalysisPeriod has expired. 4. CPAMaxTimeAnalysis is moot once voice is detected.
... View more