Share via


Fine-tune the Discrimination Timing and Grammar

This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.

After your answering machine detection application is in production for a number of calls, you might find through the trace logs (for more information, see How to: Enable Event Tracing of Call Activity) that a number of calls are incorrectly categorized. You can convert the .etl files produced by trace logging into text by using MssLogToText.exe, which is described in Log File Conversion to Text.

Useful Trace Logging Entries

Two of the trace log entries that are especially useful are the RecognitionCompleteEvent and the DetectAnsweringMachineResultEvent.

The RecognitionCompleteEvent entry contains information about the recognition result in the Answer field and the duration of the recognition result, in milliseconds, in the Duration field.

The DetectAnsweringMachineResultEvent entry contains information about the detection result (LivePerson or AnsweringMachine) in the DetectionResult field and when applicable, about the message result (Played, None, or UnableToPlay) in the MessageResult field.

Fine-tuning the Discrimination Timing

The DetectAnsweringMachineActivity class uses two properties to determine whether the called party is a human or an answering machine: MaximumUtteranceDurationToAssumePerson and MinimumUtteranceDurationToAssumeAnsweringMachine.

If the duration of the response from the called party is less than MaximumUtteranceDurationToAssumePerson, whose default value is one second, DetectAnsweringMachineActivity concludes that the called party is a human. On the other hand, if the duration of the response from the called party is greater than MinimumUtteranceDurationToAssumeAnsweringMachine, whose default value is four seconds, DetectAnsweringMachineActivity concludes that the called party is an answering machine. If the response duration falls between the values of these properties, DetectAnsweringMachineActivity uses the author-provided grammar to make its determination.

It should be clear from the preceding discussion that an answering machine response duration less than MaximumUtteranceDurationToAssumePerson is misclassified, as is a human response duration longer than MinimumUtteranceDurationToAssumeAnsweringMachine. Both values can be modified at design time in the Properties window for DetectAnsweringMachineActivity. In general, when these values are relatively far apart, the detection grammar is the main determiner of the response type, because more calls fall into this interval. Conversely, when the two values are relatively close together, the utterance duration is the main determiner of the call type.

Note

An application error is thrown if MaximumUtteranceDurationToAssumePerson is greater than MinimumUtteranceDurationToAssumeAnsweringMachine.

Fine-tuning the Grammar

As noted earlier, the detection grammar comes into play when the utterance duration falls between the values of MaximumUtteranceDurationToAssumePerson and MinimumUtteranceDurationToAssumeAnsweringMachine. For increased accuracy in distinguishing between human responders and answering machines for call durations in this band, increase the number of grammar matches. To increase the number of grammar matches, monitor the values in the Answer field in the RecognitionCompleteEvent entry in the trace log and ensure that these values are included in your grammar.