0% found this document useful (0 votes)
415 views20 pages

Nuance Vocalizer For Enterprise 6 Installation and Configuration Guide

Uploaded by

Peaky Blinderr
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
415 views20 pages

Nuance Vocalizer For Enterprise 6 Installation and Configuration Guide

Uploaded by

Peaky Blinderr
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

3/3/2015 Pages ­ Knowledge Base

Accounts Product & Support Information Partner Portal [email protected]

Give Feedback

Product & Support Information

Knowledge Base

Rate this Article

Nuance Vocalizer for Enterprise 6 Installation and Configuration Guide
Description:
This article will outline the installation and Configuration of Nuance Vocalizer for Enterprise (NVE) 6.0

Table of Contents

Installation
Java JRE *1

Installing Nuance Vocalizer for Enterprise 6

Installing Voices

Nuance License Manager 11.7

Nuance Speech Server 6.2 *2

Configuration
Configuring License Manager

Configuring Vocalizer

Basic NSS Configuration

Advanced NSS Configuration
Step 1 ­ Planning

Step 2 ­ Port Configuration

Step 3 ­ Startup Configuration

NSS Firewall Configuration

CIC SAPI Configuration

CIC MRCP Configuration

Testing
SAPI Testing

MRCP Testing

    *1 Vocalizer for Enterprise 6.0 requires the 32­bit version of Java JRE 1.7.0_13 (7u13) or higher.

    *2 The order of Vocalizer before NSS is recommended by the Nuance Speech Products Documentation in:

            “Installing, Migrating, and Administering”

            → ”Installing Speech Server”

                            → ”Installation Procedure”

Installing Java JRE
Procure a 32­bit version of Java JRE of version 1.7.0_13 (7u13) or higher, and run its setup wizard on the machine that will run Vocalizer and NSS.

Installing Nuance Vocalizer for Enterprise 6
In this section the following instructions will outline the installation of the NVE6 engine.
1.  Click Next to begin the installation wizard:

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 1/20
3/3/2015 Pages ­ Knowledge Base

2.  Accept the License Agreement and click Next:

3.  Choose the preferred install path and click Next:

4.  Set the JRE Folder Location and click Next:

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 2/20
3/3/2015 Pages ­ Knowledge Base

5.  Click Install:

6.  Click Finish:

7.  Click Yes to restart and complete the installation:

Installing Voices
In this section the following instructions provide an example of one TTS voice being installed. This section would need to be repeated for every voice required.
1.  Click Next to begin the installation wizard

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 3/20
3/3/2015 Pages ­ Knowledge Base

2.  Click Install:

3.  Click Finish:

Installing License Manager (NLM)
In this section the following instructions will outline the installation of the NLM. This software can be used for Vocalizer, and Recognizer. This software is not required to be co­
located on the same server as Vocalizer, and can be installed on a separate server and have one or more Vocalizer servers point to it. Also if Vocalizer is being installed on the same
server* as Recognizer, the same instance of NLM can be used for both products. In this case both licenses would need to be combined into one file. Please reference this knowledge
base article for instructions on how to complete this. For further information, refer to "Installing Licenses" in the Nuance documentation pack. 

* NOTE: ININ has not tested both NR10 and NVE6 on the same machine. While it is technically possible to do this if any more than 12 ports of either are to be use then they should
be separated on to different servers.
1.  Click Next to begin the installation wizard:

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 4/20
3/3/2015 Pages ­ Knowledge Base

2.  Choose the preferred install directory and click Next:

3.  Click Install:

4.  Click Finish to complete the installation:

Installing Nuance Speech Server
In this section the following instructions will outline the installation of the Nuance Speech Server (NSS). If Vocalizer is going to be installed local to the CIC Server and used through
the SAPI protocol then this section can be skipped and continue to Configuring the Nuance License Manager. Also if Nuance Recognizer 10 (NR10) is going to be installed on the
same server as NVE then that should be done prior to installing NSS. For more information on installing NR10 please reference this Knowledge Base Article.
1.  Click Next to begin the installation wizard:
https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 5/20
3/3/2015 Pages ­ Knowledge Base
1.  Click Next to begin the installation wizard:

2.  Click Next to install NSS with automatic configuration for Vocalizer:

3.  Accept the License Agreement and click Next:

4.  Select the preferred install path and click Next:

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 6/20
3/3/2015 Pages ­ Knowledge Base

5.  The Apache web server is only necessary for ease of access of log and waveform files. These files may also be accessed directly on the machine running Nuance software. If
accessing them through a web browser is not necessary, simply click Next:

6.  Click Install:

7.  Click Finish:

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 7/20
3/3/2015 Pages ­ Knowledge Base

8.  Click Yes to restart and complete the installation:

Configuring the Nuance License Manager:
The only configuration required in the Nuance License Manager (NLM) is to load the license for NVE. For instructions on how to load a license please reference this Knowledge Base
Article. Also if Nuance Recognizer 10 (NR10) is going to be installed on the same server* as NVE 6.0 then the license for each product would need to be combined. For more
information on completing this, please refer to this Knowledge Base Article. 

* NOTE: ININ has not tested both NR10 and NVE6 on the same machine. While it is technically possible to do this if any more than 12 ports of either are to be use then they should
be separated on to different servers.

Configuring Nuance Vocalizer for Enterprise:
In this section the following instructions will outline the configuration of NVE6 engine by creating and activating a user configuration file to define both the license count and
license server information.

Creating the user configuration File

The user configuration XML file is used to override default configuration settings in baseline.xml. If there will be more than 192 ports of NSS used per TTS server then the user
configuration file setup will be covered in the NSS Advanced Config section, please skip to the next section, Basic NSS Configuration. 

First create a new xml file named "tts_config.xml". 

Next copy and paste the following xml code into that file: 

<?xml version="1.0" encoding="ISO­8859­1"?> 
<?xml­stylesheet type="text/xsl" href="ttsconfig.xsl"?> 
<ttsconfig version="5.7.0" xmlns="http://www.nuance.com/nvn57/ttsconfig"> 
<tts_license_ports>4</tts_license_ports> 
<license_servers><server>27000@localhost</server></license_servers> 
</ttsconfig>

This file can be located any where, but the default location for Vocalizer configuration files is here: "C:\Program Files (x86)\Nuance\Vocalizer for Enterprise\config\" 

The bold values in with in the "tts_license_ports" tags will need to be changed to match the number of NVE6 licenses in use.

If License Manager is on a different server then the "localhost" value will need to be changed to that server's address, and port 27000 (or other specified) will need to be
open between the vocalizer server and the license manager server. .

Activating the user configuration file

To activate the user configuration file, an environment variable will need to be created with in the windows system settings.
1.  Go to the system settings by right clicking on computer in the start menu, and select properties.

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 8/20
3/3/2015 Pages ­ Knowledge Base

2.  Click on Change settings in the right hand side of the system window.

3.  Select the Advanced Tab, and then click on the "Environment Variables..." button.

4.  In the "System variables" section click the "New..." button.

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 9/20
3/3/2015 Pages ­ Knowledge Base

5.  For the "Variable name:" put "VOCALIZER_USERCFG". For the "Variable value:" type the path to where the tts_config.xml file created before is located. 
For example: "C:\Program Files (x86)\Nuance\Vocalizer for Enterprise\config\tts_config.xml"

6.  To verify that the new Environment vairable has taken effect open a command prompt window and type: "set v". This will show the variables that start with the letter "v". 

If for any reason it doesn't show up try either logging out and back in to the server, or rebooting.

Basic NSS Configuration:
In this section the following instructions will outline the basic configuration of NSS. This will involve editing the NSSserver.cfg file to alter NSS configuration, and define a
custom logging directory. This section should be done for all NVE6 MRCP or non­SAPI installations regardless of the number of ports being used. If Vocalizer is going to be
installed local to the CIC Server and used through the SAPI protocol then this section can be skipped and continue to CIC SAPI configuration.

NSSserver.cfg file Configuration

Before making any configuration changes to NSS, a copy of the original NSSserver.cfg should be made. The default location for this file is: "C:\Program Files
(x86)\Nuance\Speech Server\Server\config". The installation will have made an environment variable, %NSSSVRSDK%, which points to the directory containing the config
directory, etc. A valid path to NSSserver.cfg should be %NSSSVRSDK%\config\NSSserver.cfg.

An important change for audio quality is the modification of RTP packetization. ININ Media Server is optimized to receive 20ms RTP packets, while NSS will by default send
30ms RTP packets. G.711 RTP packet size is defined by the number of 1/8000 second samples. Thus, for 20ms of audio, we need 160 samples. To accomplish this, the
following property is changed as shown:

server.mrcp2.rsspeechsynth.rtpPacketSamples     VXIInteger     160

Another change that should be done is to increase the number of sessions and threads NSS will handle such that they coordinate the licensed port count. Other changes,
such as logging levels and file sizes, etc. should be made at this time as well. Per Nuance's recommendation the max number of threads should be 1.2 times the number of
ports. Thus, for 192 ports, the following parameters below must be changed. If both NR10 and NVE6 are installed on the same server* then this will be a sum of the ports
for both products. 

* NOTE: ININ has not tested both NR10 and NVE6 on the same machine. While it is technically possible to do this if any more than 12 ports of either are to be use then they
should be separated on to different servers.

server.mrcp2.sip.maxCountOfSession     VXIInteger    192

server.threadmanager.maxcount       VXIInteger    230

Logging Configuration

To change the location where all NSS logging is written, the value for the environment variable "NUANCE_DATA_DIR" needs to be changed. This includes all logging that
takes place for ASR and TTS sessions that happen through NSS.

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 10/20
3/3/2015 Pages ­ Knowledge Base

After this is done the contents of the original path will need to be copied to the new path.

NSS Service Restart

Following any changes to NSSserver.cfg, restart the Nuance Speech Server service. Alternatively if Nuance Vocalizer 6 and Nuance Recognizer 10 are to be installed on the
same server then it is recommended that the Nuance Speech Server Service be disabled in the Services Control panel.

Instead follow the instructions in the NR10 Installation and Configuration guide under the section labeled: "Configure Nuance Watcher for NSS Startup".

QOS Setup

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 11/20
3/3/2015 Pages ­ Knowledge Base
Once this is complete is is also important to configure QoS on the windows server where NSS has been installed. This is because the NSS application does not apply any QoS to the
audio RTP packets it transmits. To complete this, please refer to this Knowledge Base Article. 

Advanced NSS Configuration:
For Vocalizer 6, NSS does not support more than 192 ports on a single physical machine with a single instance. In order to exceed 192 ports with one machine, it is
necessary to configure multiple instances of NSS. To accomplish this, a handful of configuration files must be modified.

If this situation does not apply to the current installation environment skip to firewall rule configuration.

Process Outline:

Step 1 ­ Planning

Step 2 ­ Port Configuration

Step 3 ­ Startup Configuration

Step 1 ­ Planning

Determine how many NSS instances are needed, and the TTS port distribution for them. To evenly distribute licensed ports per instance of NSS, the following algorithm may
be followed:

Where:
n = Number of ports available in license

192 = maximum number of ports per NSS instance

Determine:
d = number of NSS instances necessary = ⌈n/192⌉

p i = number of initial ports per NSS instance = ⌊n/d⌋

r = remaining ports to be distributed across instances = n mod d

Finally:
The final number of ports for each instance of NSS can be found by adding 1 to each p i for the length of r

Example:

n = 500 available ports

d = ⌈n/192⌉ = ⌈500/192⌉ = ⌈2.6⌉ = 3 instances of NSS

p i = ⌊n/d⌋ = ⌊500/3⌋ = ⌊166.67⌋ = 166 ports per instance

r = 500 mod 3 = 2 remaining ports

Then, adding r:
p 1  = 166 + 1 = 167 (r = r ­1 = 1)

p 2  = 166 + 1 = 167 (r = r ­1 = 0)

p 3  = 166 + 0 = 166

Thus, we have three instances of NSS, two each with 167 ports, and one instance with 166 ports.

With this knowledge, a user config file which overrides %VOCALIZER_SDK%\config\baseline.xml can be made for each instance of NSS with different port counts. For the
example, there would be one user config file for NSS instances with 167 ports, and one user config file for NSS instance with 166 ports.

Following the example:

userconfigfile1.xml

<?xml version="1.0" encoding="ISO­8859­1"?>
<?xml­stylesheet type="text/xsl" href="ttsconfig.xsl"?>

<ttsconfig version="5.7.0" xmlns="http://www.nuance.com/nvn57/ttsconfig">
  <!­­ Number of licenses to acquire ­­>
  <tts_license_ports>167</tts_license_ports>
</ttsconfig>

userconfigfile2.xml

<?xml version="1.0" encoding="ISO­8859­1"?>
<?xml­stylesheet type="text/xsl" href="ttsconfig.xsl"?>

<ttsconfig version="5.7.0" xmlns="http://www.nuance.com/nvn57/ttsconfig">
  <!­­ Number of licenses to acquire ­­>
  <tts_license_ports>166</tts_license_ports>
</ttsconfig>

* NOTE: If a user configuration file was created in the NVE config section of this document, this procedure will overwrite that so there is no reason to undo that configuration. 

Step 2 ­ Port Configuration
https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 12/20
3/3/2015 Pages ­ Knowledge Base

Modify the NSSserver.cfg files to incorporate the license counts, as well as avoid port conflicts between NSS instances. For each instance of NSS, create a new
NSSserver.cfg in %NSSSVRSDK%\config\, following a naming convention like NSSserver1.cfg, NSSserver2.cfg, etc. Then, for each NSSserver.cfg, modify the following
properties:

For TTS ports:

server.mrcp2.rsspeechsynth.userconfig.path  VXIString $(VOCALIZER_SDK)/config/userconfigfile1.xml

For session count:

server.threadmanager.maxcount       VXIInteger    x

server.mrcp2.sip.maxCountOfSession           VXIInteger    y

where x is the appropriate p value for the instance of NSS calculated above, and y is the product of (x * 1.2). This multiplier is the Nuance recommended value.

For logging:

server.log.performance.fileName VXIString $(NUANCE_DATA_DIR)/system/diagnosticLogs/watchdog01.log

server.log.filename VXIString $(NUANCE_DATA_DIR)/system/diagnosticLogs/nss01.log

For transport port conflict avoidance (see table below):
server.mrcp2.sip.transport.tcp.port VXIInteger 5060

server.mrcp2.sip.transport.udp.port VXIInteger 5060

server.mrcp2.sip.transport.tls.port VXIInteger 5061

server.mrcp2.transport.tcp.port VXIInteger 6075

server.mrcp2.transport.tls.port VXIInteger 6076

server.rtp.port VXIInteger 7892

server.mrcp1.transport.port VXIInteger 7900

server.callLog.tcp.port VXIInteger 10101

server.callLog.tls.port VXIInteger 10102

* NOTE: It can be helpful if these properties are copied to the top of the NSSserver.cfg file and commented out from where they were originally located.

Port Conflict Avoidance Table:

Property NSS1 NSS2 NSS3 NSS4 NSS5

server.mrcp2.sip.transport.tcp.port 5060 5070 5080 5090 5100

server.mrcp2.sip.transport.udp.port 5060 5070 5080 5090 5100

server.mrcp2.sip.transport.tls.port 5061 5071 5081 5091 5101

server.mrcp2.transport.tcp.port 6075 6085 6095 6105 6115

server.mrcp2.transport.tls.port 6076 6086 6096 6106 6116

server.rtp.port 7892 8492 8892 9292 9692

server.mrcp1.transport.port 7900 9100 10300 11500 12700

server.nrs.serverAddress 8200 8210 8220 8230 8240

server.callLog.tcp.port 10101 10111 10121 10131 10141

server.callLog.tls.port 10102 10112 10122 10132 10142

Port Conflict Avoidance Table (cont’d):

Property NSS6 NSS7 NSS8 NSS9 NSS10

server.mrcp2.sip.transport.tcp.port 5110 5120 5130 5140 15150

server.mrcp2.sip.transport.udp.port 5110 5120 5130 5140 15150

server.mrcp2.sip.transport.tls.port 5111 5121 5131 5141 15151

server.mrcp2.transport.tcp.port 6125 6135 6145 6155 16165

server.mrcp2.transport.tls.port 6126 6136 6146 6156 16166

server.rtp.port 10092 10492 10892 11292 111692

server.mrcp1.transport.port 13900 15100 16300 17500 118700

server.nrs.serverAddress 8250 8260 8270 8280 18290

server.callLog.tcp.port 10151 10161 10171 10181 110191

server.callLog.tls.port 10152 10162 10172 10182 10192

Step 3 ­ Startup Configuration

When NSS is installed it does create a windows service, however to better control the order in which process are started is recommended by Nuance that NSS is controlled
by the Nuance Watcher Service.

Before using Watcher a startup configuration file needs to be created. Name this new file "Watcher_Startup.txt", and save it to the configuration directory created earlier;
"D:\Configuration"
https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 13/20
3/3/2015 Pages ­ Knowledge Base
"D:\Configuration"

In order to have Nuance Watcher start multiple NSS instances, edit the Watcher_Startup.txt file and add these lines:

NSSserver.exe ­config d:/Configuration/NSSserver1.cfg
NSSserver.exe ­config d:/Configuration/NSSserver2.cfg

Once the editing of the Watcher Startup file is complete save it and find the "Nuance Watcher Daemon" Service in the windows services control panel, and start it. It is also
important to note that any future changes to the Watcher Startup file, NSSServer.cfg, or user config file will require the restart of the Nuance Watcher Daemon Service.

Once the Nuance watcher service starts it will again start all the defined NSS instances. You can see the status of this startup process by navigating to
http:\\TTSRSERVERNAME:7080.

Add Windows Firewall rule for Nuance Speech Server
The following steps show the creation of a Windows Firewall rule for the Nuance Speech Server application.

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 14/20
3/3/2015 Pages ­ Knowledge Base

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 15/20
3/3/2015 Pages ­ Knowledge Base

Configure CIC for SAPI TTS
In this section the following instructions will outline the configuration of the CIC server to use the newly installed Nuance Vocalizer on the CIC server itself. If this installation
is for MRCP please skip to Configure CIC for MRCP TTS.
Now that Nuance Vocalizer and the License manager have been installed and configured, the voice will need to be set within windows before the CIC server is able to use it. To do
this navigate to this path "C:\Windows\SysWOW64\Speech\SpeechUX\" and open the file "sapi.cpl" to open the 32­bit speech control panel. Then select the voice from the "Voice
https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 16/20
3/3/2015 Pages ­ Knowledge Base
this navigate to this path "C:\Windows\SysWOW64\Speech\SpeechUX\" and open the file "sapi.cpl" to open the 32­bit speech control panel. Then select the voice from the "Voice
Selection" drop down to specify the default TTS voice for CIC to use.

This setting will define the default voice for the CIC server to use.

To enable the ability to change the voice from a handler, the voices must first be defined in the Text To Speech tab in "System Configuration" within Interaction Administrator.

From here specify the name, Registry location, and language for each voice that has been installed. An example registry path for Susan a Nuance Vocalizer 6 voice is:
"HKLM\SOFTWARE\Microsoft\Speech\Voices\Tokens\Vocalizer for Enterprise Samantha 8kHz"

For more information on this reference the TTS Engines Technical Reference in the CIC 4.0 Documentation Library.

Configure CIC for MRCP TTS
https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 17/20
3/3/2015 Pages ­ Knowledge Base
Configure CIC for MRCP TTS
In this section the following instructions will outline the configuration to point the CIC server to the newly created Nuance Vocalizer and Speech Server via MRCP. If there
are multiple instances of NSS in use on a single server then this section will need to be repeated for each instance of NSS.

Open the MRCP Servers Configuration in IA and ensure 'Use MRCP for TTS' is checked. Note that changes to the “Protocol” or “Address to use” will require restarting the
MRCP subsystem.

Following the servers configuration, the MRCP server must be added to the Servers container. Click on the Servers container, then right click in the panel and select New.

Then add a name for the server and select Third Party:

On the Configuration tab:
1.  Check the “Text to speech” checkbox under Capabilities.
2.  Check the “Enable Session TTL” checkbox.*
3.  Set SIP Address to “sip:mresources@SERVER_NAME_OR_IP:PORT”, where:
SERVER_NAME_OR_IP can be the NSS machine’s hostname or IP address; IP address is recommended if setting up in a domain where the NSS machine’s hostname
cannot be resolved

PORT is the port used by NSS to listen for SIP session requests. By default this is 5060; see NSSserver.cfg parameters:
server.mrcp2.sip.transport.tcp.port          VXIInteger    5060

server.mrcp2.sip.transport.udp.port         VXIInteger    5060

Examples:
sip:[email protected]:5060

sip:[email protected]:5060

4.  Set Location to the preferred location, in this case <Default Location>
5.  Set Priority to 1
6.  Set Vendor to “Nuance”

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 18/20
3/3/2015 Pages ­ Knowledge Base

*Currently, in situations where the same session is used for back­to­back TTS plays, Nuance Speech Server will send RTP packets later than their timestamps indicate they
should be. This causes gaps in audio as ININ Media Server resynchronizes the stream. To resolve this issue, this NSS 6.2.4 patch will need to be applied. Please follow the
README file included within the patch zip file for instruction on to apply it.

On the Voices tab:

Add the name of the Nuance Vocalizer voice installed; in this case “Samantha”

Set the Gender appropriately; in this case “Female”

Select the appropriate Supported Language; in this case “English – United States”

Click OK to save the configuration.

If multiple MRCP servers are to be used, they can be set active or not to control whether they are used. Their priority may also be set to control preference in selection.

This concludes the installation walkthrough. The NSS/Vocalizer server is ready to be tested.

Testing the Installation

SAPI Testing
In Development...

MRCP Testing
Please refer to this Knowledge Base Article for MRCP Testing with both TTS and ASR.

INTERACTIVE INTELLIGENCE SITE MAP WE'RE SOCIAL

7601 Interactive Way Contact Center Resources Careers Ideas


Indianapolis, Indiana 46278 Unified About Us Buy Twitter

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 19/20
3/3/2015 Pages ­ Knowledge Base
USA Communications Portals Privacy Policy Facebook
Call: +1 800.267.1364 Business Process Events Trust LinkedIn
Automation
Partner Programs Legal Google+
Solutions in the
Cloud Education Services News Room YouTube
Services

© 2014 Interactive Intelligence, Inc. All Rights Reserved 

https://my.inin.com/products/pages/kb­details.aspx?entryid=q138282540105555 20/20

You might also like