MRCP Configuration

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.

Configuring Pronexus MRCP Client's connection to an MRCP server:

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

Configuring Pronexus MRCP Client's connection to a VBVoice application:

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.

Control Messages/Replies, VBVoice applications to/from Pronexus MRCP Client:

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 passing between VBVoice apps and the Pronexus MRCP Client:

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.

Configuring connections to multiple MRCP servers:

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.

Considerations to configure TTS:

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).

Configuring ASR and TTS number of resources:

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:

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