Modular applications require some additional setup and configuration so that masters and slaves can find each other and share voice files.
Masters and slaves find each other using a VBVoice component known as the Arbiter (VBVArbiter.exe). It is a service that tracks the location of slave applications. When a slave starts, it registers its name and IP address with the Arbiter. When a master wants to invoke a slave, it looks up the slaves address from the arbiter.
All master and slave machines need to share the same arbiter. This is configured in the Modularity Section of the INI file (see Configuring Arbiter below).
You can configure the master and slave(s) in a number of ways. If you decide to have multiple applications (slaves, masters, or a mixture) running on the same machine, set the INI setting UsePrivateMemoryMap to 1.
In this scenario, the master and slave(s) are co-resident on the same machine. VBVoice supports this configuration directly out of the box. No additional setup is necessary.
However, note that you must set the UsePrivateMemoryMap INI setting (under Modularity section) to 1 in the single machine configuration.
Some (or all) of the slaves reside on a separate machine You must configure the slave machine to use the master's Arbiter.
Slaves reside on multiple machines. You must point each slave to the master's Arbiter
A set of slaves are shared by multiple master applications. You must pick one master machine to house the Arbiter, and then you must configure all master and slave machines to point to that Arbiter.
You configure the Arbiter location in the [Modularity] section of the VBVoice.INI file.
Setting |
Example |
Description |
ArbiterHost |
ArbiterHost |
Location of the arbiter. The value of this setting is a machine name or IP address. If no value is specified then localhost is used (i.e. this machine). |
ArbiterPort |
0 |
(Optional) The TCP/IP port used by the arbiter. 0 means use the default port 2710. Only change this setting if the port is used by other applications. |
OutdialHost |
Bob |
Location of the machine running the outdial master. The value of this setting is a machine name or IP address. This setting is only required if slaves are using bridging or outdial. |
OutdialPort |
0 |
(Optional) The TCP/IP port used by the arbiter. 0 means use the default port 2680. Only change this setting if the port is used by other applications. |
When a slave application needs to play a voice file (a VAP or WAV file), it passes the filename to the master, who opens and plays the file.
If the file is in the slave's VBVoice system directory, then the equivalent file in the master's system directory is used. That is, if the slave plays a phrase from VBVOICE30.VAP, the master opens its copy of the file from its own system directory. This gives a performance boost because the commonly used greetings will be played from the master's local hard drive and will not have to travel across the network from the slave machine.
Note: This assumes the files in the master and slave's system directories are identical. If not, a slave can disable this by setting [Modularity] UseSlaveSystemDir=1)
File paths mentioned in the [CustomShares] section of VBVOICE.INI are replaced with their UNC share name.
EXAMPLE
If VBVOICE.INI mentions a share called "TaxiApp" whose path is d:\apps\production\taxidial, then any file with this path (or its sub-directories) is replaced with \\<machineName>\TaxiApp
Custom Shares are described in Configuration below.
All other files on the slave's local hard drive(s) are accessed using the default network share. For example, a file d:\MyFiles\abc.wav on machine susan would be opened by the master as \\susan\d$\MyFiles\abc.wav.
Consult your LAN administrator to ensure these default shares are enabled on the slave machine.
Full UNC (Network Neighborhood) paths are opened directly since they be seen by both the master and slave (for example \\server\SusansPublicFiles\abc.wav).
We recommend using Custom Shares (rule 2), which allow the slave application to keep all its files on the slave machine, while keeping access to the machine limited to the custom share directories.
The Record control records audio messages into WAV files. Both the master and slave participate, therefore the files need to be visible to both master and slave.
The slave's Record controls must use Custom Shares or full UNC paths for the Filename property (eg. \\server\SusansPublicFiles\abc.wav).
With a Custom Share, a local hard drive directory is shared on the LAN. For example c:\TaxiApp might be shared under the name TaxiAppShare. Set the Filename property to the absolute path to the local hard drive directory, for example c:\TaxiApp\msg*.wav. The slave's Record control will create its recordings in this directory. The master will access the files using the share name, TaxiApp. Custom Shares are described are described in Configuration below.
The PlayMsgs control has the same requirement for its MessageDirectory property.
Directories on a local hard drive can be shared, making them visible to other machines in Network Neighborhood with a user-configurable name. For example, the directory D:\Apps\Production\TaxiDial could be shared under the name "TaxiApp". Shares are useful when masters and slaves need to share files, such as audio and ASR grammar files.
Create the share on the slave machine using My Computer or Explorer.
Set Permissions to Full Control.
Add an entry for the share in the [CustomShares] section of VBVoice.INI. The settings are named Share0, Share1, Share2, etc., and must be consecutively numbered. The value of the setting is
ShareName, ActualPath
Use a comma to separate the ShareName and ActualPath.
These settings are in the [CustomShares] section of the VBVoice.INI file.
Setting |
Example |
Description |
Share0 |
TaxiApp, d:\apps\production\taxidial |
The share TaxiApp exists for the given directory d:\apps\production\taxidial |
Share1 |
PizzaApp,c:\testapps\pizza |
A second custom share |
EXAMPLE
With the custom shares shown above, a slave request (on machine susan) to play d:\apps\production\taxidial\hello.wav would be sent to the master as \\susan\TaxiApp\\hello.wav. The master would open this path (to the slave machine) and play the file.
VBVoice now supports multiple INI files. See Configuration Files for more information.
All telephony, text-to-speech (TTS), and speech recognition (ASR) is done on the master. Therefore, the machines running distributed slaves need only install VBVoice.
All VBVoice controls and functionality are enforced through the Pronexus Runtime Manager (RTM). Only correctly licensed VBVoice controls can be added to either slave or master applications.
TTS and ASR is done on the master. Therefore, licensing is enforced on the master only. Slaves share the ASR and TTS licenses of the master(s).