Dialogic Voice Cards - Audio files for issue diagnosis - format
Often an issue can be diagnosed by examing a recording of a call.
Example issues are: DTMF is not being detected, tones are not being detected, volume is too low, distorted, etc.
For Dialogic to be able to diagnose the issue, the recording must be supplied in the same format that was received by a dx_ channel (or was transmitted on a CT bus). For all Dialogic JCT cards (and indeed for any dx_ resources within Dialogic® Host Media Processing Software), this will be:
either A-law or Mu-law,
always 8kHz sampling rate.
Things to be avoided when taking diagnostic recordings are:
Automatic Gain Control (AGC), which will modify the volume of the recorded signal,
Data compression - encoding using ADPCM adds noise and removes information (and can affect DTMF analysis)
Sample rate conversion - again, we lose information and the recording is almost pointless.
The modes and flags to use are listed in pseudo-code below.
If possible, please save the data as a WAV file, since the WAV file header tells you how the data is encoded (hopefully A-law, 8kHz, but if not, at least we know what we're dealing with.) The "vox" file format is not a file format; it is simply a headerless file containing raw data (which may be very difficult to interpret unless you somehow know what it is).
////////////////////////////////////////////
// if using dx_rec:
mode = EV_ASYNC; // or EV_SYNC, whatever.
switch(GetCTBusMode())
{
case CTBUS_MODE_MULAW:
mode |= RM_SR8 | MD_NOGAIN;
break;
case CTBUS_MODE_ALAW:
mode |= RM_SR8 | PM_ALAW | MD_NOGAIN;
break;
default:
// error
}
dx_rec(..., mode);
////////////////////////////////////////////
// if using dx_reciottdata or dx_mreciottdata, or dx_recwav
DX_XPB xpb;
mode = EV_ASYNC // or EV_SYNC if preferred, or if using dx_recwav
mode |=| MD_NOGAIN;
xpb.wBitsPerSample = 8;
xpb.nSamplesPerSec = DRT_8KHZ;
switch(GetCTBusMode())
{
case CTBUS_MODE_MULAW:
xpb.wDataFormat = DATA_FORMAT_MULAW;
case CTBUS_MODE_ALAW:
xpb.wDataFormat = DATA_FORMAT_ALAW;
default:
// error
} |