This section explains the VBVoice settings (in the file VBVoice.ini found in C:\Windows directory and managed by VBVConfig.exe) that define the connections between Pronexus MRCP Client and the MRCP server or between Pronexus MRCP Client and the VBVoice application.
This connection is a standard connection that is used by MRCP Protocol. It is based on SIP and requires all the same requirements of SIP connection to work.
The configuration settings that are described here need to match those of the MRCP server to be used.
First we need to tell the Pronexus MRCP Client the address and ports the MRCP server is listening to and is expecting request for resources. There are separate settings for TTS and ASR resources:
Section |
Key |
Value Example |
Description |
MRCP |
AsrServerAddress |
192.168.0.10 |
the name or IP address of the machine running the MRCP server with the ASR resources |
MRCP |
AsrServerPort |
5060 |
the TCP or UDP port on the MRCP server listening to ASR resource requests |
MRCP |
TtsServerAddress |
192.168.0.10 |
the name or IP address of the machine running the MRCP server with the TTS resources |
MRCP |
TtsServerPort |
5060 |
the TCP or UDP port on the MRCP server listening to TTS resource requests |
MRCP |
VBVClientAddress |
|
the IP address of the machine running the IVR (Client side of the MRCP protocol). for direct connection through LAN to the MRCP server, this setting doesn't need to be anything but empty |
MRCP |
TtsRtpAudioPortsRanges |
41000-48999 |
a range of UDP ports to be used for TTS samples streamed back from the MRCP server. the default is using ports 41000 to 48999 |
The SIP setup connection is using TCP as default; however, it could be set to use UDP if the MRCP server is configured to use UDP. Use the following settings:
Section |
Key |
Value Example |
Description |
MRCP |
ASRServerPortIsTCP |
0 |
0 (default) to use TCP for ASR requests, 1 to use UDP |
MRCP |
TTSServerPortIsTCP |
0 |
0 (default) to use TCP for TTS requests, 1 to use UDP |
Pronexus MRCP Client communicates with a VBVoice application through TCP/IP sockets to pass control messages and get replies. Please note that the default values for all configurations involved in this section are good enough for most systems. Only when ports conflict or low voice quality is experienced may you be required to change some of them.
Messages between VBVoice applications and Pronexus MRCP Client are passed using TCP/IP sockets. Both sides are listening to a predefined port (one for each type of resource) and the other side connects to send its messages. The following list explains the settings involved:
Section |
Key |
Value Example |
Description |
MRCP |
AsrClientPort |
12500 |
the TCP port the VbvMrcpClient is listening on for ASR control messages, the default value is 12500 |
MRCP |
AsrVBVPort |
12510 |
the TCP port the VBVoice application is listening on for ASR reply messages, the default is 12510 |
MRCP |
TtsClientPort |
12520 |
the TCP port the VbvMrcpClient is listening on for TTS control messages, the default is 12520 |
MRCP |
TtsVBVPort |
12530 |
the TCP port the VBVoice application is listening on for TTS control messages, the default is 12530 |
Unless any of these ports are used by some other service on the same machine, none of them need to change from its default value.
Media samples are passed through shared memory. This memory is allocated at start up, and it is structured into several buffers; half of which are to pass media in one way and half for the other way. Also there are buffers for TTS playback samples and buffers for speaker samples sent to the recognition engine.
Configuring this part involves setting the sizes of these buffers and the maximum number of these buffers. The following list shows these settings:
Section |
Key |
Value Example |
Description |
MRCP |
AsrDialogicXferBufSize |
320 |
Dialogic buffer Size for ASR; a multiple of 160. the default is 320 |
MRCP |
AsrNrOfAudioBuffers |
400 |
the maximum number of ASR buffers. the default is 400 |
MRCP |
TtsNrOfAudioBuffers |
400 |
the maximum number of TTS buffers. the default is 400 |
The size of the RTP packets used by MRCP is 160 bytes. As a result, all these buffers are sized to 160 and the Dialogic transfer buffer for ASR is a multiple of 160. The default values presented above are carefully picked to resolve a trade-off between two sound quality factors: stuttering and late start of speech.
The stuttering happens if you have too small buffers, however, when you pick too big buffers it will take the system longer to start playing the samples which will lead to low IVR responsiveness, either in playing back TTS or start recognizing.
The number of buffers needed is dependent upon the length of spoken text or recognition maximum time. The Pronexus MRCP Client will reuse the transfer buffers when it runs out of them. The default values of the maximum number of these buffers implemented guarantee a speech of up to nearly 8 seconds, and unless there are huge delays in the system there will be no need to increase that number. Lowering the number, however, might be needed if memory is limited or the application data space is already huge.
Note: Do not modify the default values unless advised by Pronexus Support. Default values are recommended because they are the result of numerous rounds of tests and suit most scenarios.
Multiple servers could be used for load balancing. When using multiple MRCP servers the following settings are used to define the communications to these servers. They consist of comma (or semicolon) separated lists of values where the first item in each list is the address of the first server, the second item is the address of the second server and so on. All lists that configure the same type of resource should have the same number of items.
Section |
Key |
Value Example |
Description |
MRCP |
AsrServersAddresses |
192.168.0.10:5060,192.168.0.10:5070,192.168.0.11:5060 |
a comma separated list of IP address and port of the ASR MRCP servers |
MRCP |
TtsServersAddresses |
192.168.0.10:5060,192.168.0.10:5070,192.168.0.11:5060 |
a comma separated list of IP address and port of the TTS MRCP servers |
These settings are used for multiple MRCP servers as well as for single servers that provide multiple MRCP processes on the same server for redundancy, high availability and process recycling.
VBVoice automatically cycles through the list of provided servers to provide redundancy and load balancing. If MRCPClient fails to grab an MRCP engine from a server, it will try to get engine from the next server in the list; maximum amount of attempts equals to the number of servers. The same applies, if servers are set during the runtime.
Note: there are some limitations on the settings for multiple servers; all these servers should share the same type of sockets used for SIP control messages because the settings AsrServerPortIsTCP and TtsServerPortIsTCP are global. The same applies to the setting VBVClientAddress, which limits the MRCP servers location to the same sub-net.
The MRCP protocol does not provide a standard way of querying the server for available features installed on the server, for example a list of languages or speakers for TTS. VBVoice.ini provides settings the programmer could use to pick a native TTS speaker at development time, similar to the way other TTS engines pick speakers. Refer to VBVoice manual to see how the Language control helps to pick the TTS speaker.
The following should be filled by the developer to reflect what the MRCP server supports:
Section |
Key |
Value Example |
Description |
MRCP |
NrOfTTSSpeakers |
2 |
number of TTS speakers (and sometimes equals to languages) the MRCP TTS engine has installed |
MRCP |
TTSSpeaker_00 |
Samantha |
the name of the first TTS speaker supported by the MRCP TTS engine |
MRCP |
TTSSPeaker_01 |
Jose |
the name of the second TTS speaker supported by the MRCP TTS engine |
The setting NrOfTTSSpeakers sets the number of speakers available to the application. Each of settings TTSSpeaker_xx provides the name of one speaker to be used by the MRCP TTS server at runtime. When NrOfTTSSpeakers is N, xx should be a value between 00 and (N-1).
Note: This section is not MRCP specific and applies to any other engines.
The following two sections show how to configure using MRCP for ASR and TTS and how to limit the number of engines:
Section |
Key |
Value Example |
Description |
ASR |
EngineType |
MRCP |
select the ASR engine type |
ASR |
NumberOfEngines |
24 |
the number of required ASR engines |
ASR |
AllocEnginePerCall |
1 |
1 (default) to pre-allocate ASR engine for each call. 0 to delay engine allocation until it is required in VoiceRec control |
Note: with a value of 0, the AllocEnginePerCall provides the application developer with the flexibility to choose to allocate engines only when they are needed with the risk of not having an available engine when needed.
Section |
Key |
Value Example |
Description |
TTS |
EngineType |
MRCP |
select the TTS engine type |
TTS |
NumberOfEngines |
24 |
the number of required TTS engines |
TTS |
StreamPlay |
1 |
activate stream playing. see below for default values |
The StreamPlay setting has two different default values: for MRCP engine the default (and recommended) value is 1 which enables VBVoice to use streaming Dialogic API functions that assure a better performance and user experience.
VBVoice limits the number of ASR and TTS engines to the number provided in the ASR and TTS sections of VBVoice.ini the following way:
Number of ASR engines = minimum of number of channels, [ASR] NumberOfEngines, and number of ASR runtime licenses.
Number of TTS engines = minimum of number of channels, [TTS] NumberOfEngines, and number of TTS runtime licenses.
Sometimes developers want to start the IVR system with the number of channels and ASR and TTS engines set at runtime. To achieve this, it is recommended to follow this order:
Set NumberOfEngines to the maximum number of engine you anticipate to use.
Load the IVR application without any channel in LineGroup.LinesInGroup initial property.
Assign to LineGroup.LinesInGroup a number equal to the number of ASR and TTS engines you want to use.
Start the IVR system.
Assign more channels as you like by calling LineGroup.AddChannel.
To configure MRCPv2 client these fields must be set:
Section |
Key |
Value Example |
Description |
MRCP |
UniMrcpProfilePath |
C:\Program Files (x86)\Pronexus\MRCPClientV2\conf\client-profiles\file.xml |
Absolete path to the profile xml file |
MRCP |
UniMrcpRootDirectory |
C:\Program Files (x86)\Pronexus\MRCPClientV2 |
Path to MrcpV2 root directory |