Tuning Call Progress Analysis (CPA) templates for Dialogic® JCT, DM3 and Host Media Processing (HMP)-based boards

Reference: http://www.dialogic.com/support/helpweb/dxall/tn924.aspx

Summary:
This technote provides instructions for modifying the Positive Answering Machine Detection (PAMD) and Positive Voice Detection (PVD) qualification template parameters on Dialogic® Springware, DM3 and Host Media Processing (HMP)-based boards in seeking higher successful PAMD and PVD rates.

Overview:
Call Progress Analysis (CPA) is the process used to automatically detect whether an answering machine or live voice answered a call. Dialogic® products have the ability to detect these conditions with audio streams that can come over a Public Switched Telephone Network (PSTN) connection or IP connection. Positive Answering Machine Detection (PAMD) and Positive Voice Detection (PVD) are classifications of the Call Progress Analysis feature that enable the application to determine whether a call has been answered by an answering machine or a live person.
The original PAMD and PVD algorithms take into account variables such as the length of the greeting and the background noise level. The current business and home environments have significantly shifted from analog to digital / IP phones so that the original algorithms no longer produce satisfactory results. This technote provides instructions for modifying the PAMD and PVD qualification template parameters on Dialogic® Springware, DM3 and Host Media Processing (HMP)-boards to help accomplish higher successful PAMD and PVD rates. The same procedure can be followed for Windows® and Linux service releases as well as the dx_dial or GlobalCall method of initiating Call Progress.

Qualification Templates:
The Call Progress Qualification Templates are a set of parameter definitions that control voice and answering machine detection. The same parameters are present in Dialogic® product lines including Springware, DM3, HMP-based boards and control detections regardless of using the DX or GC method. The Qualification Templates are broken down into two sections: PVD and PAMD. Tables 1 and 2 below contain all the parameters for both PVD and PAMD sections as well as the default and recommended values for each parameter. (Note: default values may change with new Service Updates. Always check System Release Update Guide for more information).

image

Modifying Qualification Templates Dialogic Springware:
When using a Dialogic® Springware board, PVD and PAMD qualification template modifications are only available via an undocumented API and can be modified without restarting the Dialogic service. In addition, qualification template settings are reset to the defaults each time the Dialogic service is restarted. Thus, it is required that any modifications be done upon application initialization.
There are two undocumented functions that can be used to view and modify the PVD and PAMD qualification template parameters: dx_setqualtmplate and dx_getqualtmplate. To set the parameter values of the PVD and PAMD templates a data structure needs to be created with the values from Tables 1 and 2 above. Pass each of the qualification data structures to the dx_setqualtmplate function with the voice board device and template ID. NOTE: The dx_setqualtmplate and dx_getqualtmplate functions are both undocumented API’s and should be used at your own risk – Dialogic may change or remove the usage of these API’s without written notice.

tn_qlt.pvd_qual.qminsnr = qminsnr;
tn_qlt.pvd_qual.qmaxsnr = qmaxsnr;
tn_qlt.pvd_qual.maxpk = maxpk;
tn_qlt.pvd_qual.maxring = maxring;
tn_qlt.pvd_qual.ringthres = ringthres;
tn_qlt.pvd_qual.pvdwin = pvdwin;
tn_qlt.pvd_qual.pvdthresh = pvdthresh;
tn_qlt.pvd_qual.pvdrblow = pvdrblow;
tn_qlt.pvd_qual.pvdrbhig = pvdrbhig;
tn_qlt.amd_qual.maxansiz = maxansiz;
tn_qlt.amd_qual.maxans2 = maxans2;
tn_qlt.amd_qual.maxans3 = maxans3;
tn_qlt.amd_qual.lohiss = lohiss;
tn_qlt.amd_qual.hihiss = hihiss;
tn_qlt.amd_qual.bhparm = bhparm;
tn_qlt.amd_qual.cvthr1 = cvthr1;
tn_qlt.amd_qual.cvthr2 = cvthr2;
tn_qlt.amd_qual.maxcvth = maxcvth;
tn_qlt.amd_qual.nmaxbrod = nmaxbrod;
tn_qlt.amd_qual.nmaxerg = nmaxerg;
tn_qlt.amd_qual.maxsil = maxsil;
tn_qlt.amd_qual.voice_thres = voice_thres;
tn_qlt.amd_qual.sil_thres = sil_thres;
tn_qlt.amd_qual.bandf_low = bandf_low;
tn_qlt.amd_qual.bandf_high = bandf_high;
dx_setqualtmplate(dev, qual_template, &tn_qlt)
dx_getqualtmplate(dev, qual_template, &tn_qlt)
where…
dev – voice board device handle (dxxxB1)
qual_template – qualification template ID- PVD (5) or PAMD (11)
tn_qlt – pointer to the qualification template data structure

Please see attached QUAL.C source code for complete usage.
DM3:
When using a Dialogic® DM3 board, all PVD and PAMD qualification template modifications are ONLY available via config files and can NOT be modified without restarting the Dialogic® service. The following steps will be used to modify DM3 qualification templates:

  1. As a precaution, save a backup copy of the fcd, pcd and config files which you will be editing
  2. Scroll down to the bottom of the .config file to the [sigDet] section that begins with “!GENERIC QUAL TEMPLATE – For R4 User Defined Tones. Note: There are several [sigDet] sections in the .config file so be sure to find the correct one.
  3. Add “init iNNN” immediately below the [sigDet] line where iNNN is the following: Voice Channels iNNN
    E1 – 60 Voice Channels i60
    E1 – 120 Voice Channels i120
    T1 – 48 Voice Channels i48
    T1 – 96 Voice Channels I96
  4. Scroll down to the bottom of the [sigDet] section, and add “DeletePvd 128193”. The number represents the default PVD qualification ID defined for DM3 boards.
  5. On the next line, add the new PVD qualification template parameters followed by “CreatePvd”.
  6. On the next line, add “DeletePamd 106561”. The number represents the default PAMD qualification ID defined for Dialogic® DM3 boards.
  7. On the next line, add the new PAMD qualification template parameters followed by “CreatePamd”. 

    [sigDet]
    init i96
    !Delete the default PVD qualification template
    DeletePvd 128193
    !User defined Pvd template.
    PvdDesc signalId 128193
    PvdDesc signalLabel 0000
    PvdDesc minSnr 50
    PvdDesc maxSnr 600
    PvdDesc maxPk 2
    PvdDesc maxRing 5
    PvdDesc ringThresh 10000
    PvdDesc PvdWin 8
    PvdDesc PvdVthresh 5000
    PvdDesc PvdRbLow 380
    PvdDesc PvdRbHigh 510
    CreatePvd
    !Delete the default PAMD qualification template
    DeletePamd 106561
    !User defined PAMD template.
    PamdDesc signalId 106561
    PamdDesc signalLabel 0000
    PamdDesc minRing 190
    PamdDesc mask 1
    PamdDesc maxAnsiz1 159
    PamdDesc maxAnsiz2 159
    PamdDesc maxAnsiz3 159
    PamdDesc loHiss 22
    PamdDesc hiHiss 16
    PamdDesc bhParm 5
    PamdDesc cvThresh1 80
    PamdDesc cvThresh2 165
    PamdDesc maxCvThresh 390
    PamdDesc nMaxBroad 2
    PamdDesc nMaxErg 65
    PamdDesc maxSilence 45
    PamdDesc voiceThresh 25
    PamdDesc silenceThresh 5000
    PamdDesc rjFbandLow 0
    PamdDesc rjFbandHigh 0
    CreatePamd

  8. Save changes to the .config file and exit text editor.
  9. Using a text editor, open the .pcd file corresponding to the .config file you just modified.
  10. Scroll down to the [COMP sigdet] section and change the InitOption value from YES to NO. The section should be revised as follows:

    [COMP sigdet]
    {

    Attribute :std_ComponentType:0x07
    NumInstances :96
    StartInstanceNum :1
    ConfigOption :YES
    InitOption :NO                     <----------- Change from YES to NO
    DependentComp :waveAnalyser

    }

    Note: NumInstances will vary depending on the board in use. In this example, the value reflects a T1 board with 96 channels.

  11. Save your changes to the .pcd file and run the fcdgen utility to create an fcd file:
    fcdgen filename.config
  12. Restart DCM for changes to take effect
    Please see attached DM3 Config File for complete template changes.

Host Media Processing (HMP):
When using Dialogic® HMP-based boards (i.e., Dialogic® based on or otherwise incorporating Dialogic® HMP software), all PVD and PAMD qualification template modifications are ONLY available via config files and can NOT be modified without restarting the Dialogic® service. The following steps will be used to modify HMP qualification templates:
Note: 4r4v4e4c4s4f4i_hib_pur pcd/fcd/config file will be used as an example in this procedure. Your pcd/fcd/config file names likely will change based on license and system release used.

  1. As a precaution, save a backup copy of the fcd, pcd and config files which you will be editing
  2. Open the Host’s PCD file (4r4v4e4c4s4f4i_hib_pur.pcd) and search for “COMP sigdet”
  3. Once you’ve found this section change the InitOption from YES to NO
  4. Also, while here note the NumInstances, you will need to reference this in the config file.

    [COMP sigdet]
    {

    Attribute :std_ComponentType:0x07
    NumInstances :4                      <-------------Note this value
    StartInstanceNum :1
    ConfigOption :YES
    InitOption :NO                           <----------- Change from YES to NO
    DependentComp :waveAnalyser

    }

  5. Save and exit the PCD file and open the hosts config file (4r4v4e4c4s4f4i_hib_pur.config)
  6. Search for the “[sigDet]” section of the config file – if the section does not exist add it at the bottom of the config file
  7. Add “init iNNN” immediately below the [sigDet] line where iNNN is the NumInstances noted in the pcd file
  8. On the next line add “DeletePvd 128193”. The number represents the default PVD qualification ID defined for HMP.
  9. On the next line, add the new PVD qualification template parameters followed by “CreatePvd”.
  10. On the next line, add “DeletePamd 106561”. The number represents the default PAMD qualification ID defined for HMP.
  11. On the next line, add the new PAMD qualification template parameters followed by “CreatePamd”.

    [sigDet]
    init i4
    !Delete the default PVD qualification template
    DeletePvd 128193
    !User defined Pvd template.
    PvdDesc signalId 128193
    PvdDesc signalLabel 0000
    PvdDesc minSnr 50
    PvdDesc maxSnr 600
    PvdDesc maxPk 2
    PvdDesc maxRing 5
    PvdDesc ringThresh 10000
    PvdDesc PvdWin 8
    PvdDesc PvdVthresh 5000
    PvdDesc PvdRbLow 380
    PvdDesc PvdRbHigh 510
    CreatePvd
    !Delete the default PAMD qualification template
    DeletePamd 106561
    !User defined PAMD template.
    PamdDesc signalId 106561
    PamdDesc signalLabel 0000
    PamdDesc minRing 190
    PamdDesc mask 1
    PamdDesc maxAnsiz1 159
    PamdDesc maxAnsiz2 159
    PamdDesc maxAnsiz3 159
    PamdDesc loHiss 22
    PamdDesc hiHiss 16
    PamdDesc bhParm 5
    PamdDesc cvThresh1 80
    PamdDesc cvThresh2 165
    PamdDesc maxCvThresh 390
    PamdDesc nMaxBroad 2
    PamdDesc nMaxErg 65
    PamdDesc maxSilence 45
    PamdDesc voiceThresh 25
    PamdDesc silenceThresh 5000
    PamdDesc rjFbandLow 0
    PamdDesc rjFbandHigh 0
    CreatePamd

  12. Save and exit the config file and run the fcdgen utiltiy to create an fcd file:  fcdgen 4r4v4e4c4s4f4i_hib_pur.config
  13. Restart the Dialogic HMP services.

Please see attached config file HMP Config File for completed template changes.
Related Documentation:
It is also recommended to review the application note: Call Progress Analysis: Global Call API Usage and Protocol Configuration
Glossary of Acronyms and Terms:
Global Call CPA — Global Call API function calls perform CPA using an attached voice device and report CPA results via the GCEV_MEDIADETECTED and GCEV_DISCONNECTED events. 
Voice API CPA — The Voice API dx_dial() function performs CPA using a voice resource directly and reports results via the TDX_CALLP event.
Qualification template — Definitions used by the PAMD and PVD algorithms in detecting voice detection