Technical Helpweb

- more articles

Tuning CPA templates for Springware, DM3 and HMP

OVERVIEW:
Call Progress Analysis (CPA) is the process used to automatically detect whether an answering machine or live voice answered an outgoing call. Dialogic products have the ability to detect these conditions with audio streams that can come over PSTN connection or IP connection. Positive Answering Machine Detection (PAMD) and Positive Voice Detection (PVD) are classifications of the Call Progress Analysis feature that enables 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 environment has shifted from analog phones to digital / IP phones so that the original algorithms no longer produce satisfactory results. This tech-note provides instructions for modifying the PAMD and PVD qualification template parameters on HMP, Springware and DM3 boards to accomplish higher successful PAMD and PVD rates. The same procedure should be followed for Windows and Linux service releases as well as the dx_dial or Global Call 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 through all the Dialogic product lines including HMP, DM3 and Springware 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: The default values may change in SU’s – check System Release Update Guide for more information). 
 
Table 1: PVD Qualification Template Parameters

Parameters

Default

Recommended

qminsnr

50

50

qmaxsnr

600

600

maxpk

2

2

maxring

5

5

ringthres

10000

10000

pvdwin

8

8

pvdthresh

30

5000

pvdrblow

380

380

pvdrhig

510

510

   


Table 2: PAMD Qualification Template Parameters

Parameters

Default

Recommended

maxansiz

125

159

maxans2

50

159

maxans3

220

159

lohiss

22

22

hihiss

16

16

bhparm

5

5

cvthr1

80

80

cvthr2

165

165

maxcvth

390

390

nmaxbrod

2

2

nmaxerg

65

65

maxsil

30

45

voice_thres

25

25

sil_thres

30

5000

bandf_low

0

0

bandf_high

0

0

 

MODIFYING QUALIFICATION TEMPLATES
 
SPRINGWARE:
While using a Springware board, all 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 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 table 1 and 2 above. Then 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 source code (qual.c) for complete usage.


----------------------------------------------------------------------------------------------------------------------


DM3:
While using a 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 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 config file (ml2_qsa_ni2.config) for completed template changes.
 
----------------------------------------------------------------------------------------------
 
Host Media Processing (HMP):
While using HMP, 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 proceedure - your pcd/fcd/config file names will change based on license used and system release. 

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 (4r4v4e4c4s4f4i_hib_pur.config) for completed template changes.

Other Resources:
 
It is also recommended to review the application note regarding CPA programming.  


Glossary of Acronyms / 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 detections





Feedback

Please rate the usefulness of this page:  
0 - not useful at all
1 - potentially useful
2 - quite useful
3 - very useful
4 - exactly the information I needed     

Please enter a comment about this page:

First published: 06-Apr-2008
Last published: 20-Jan-2014
Open access: Product rule: ; Page rule: Auto

Service Center Logon