Table of Contents

Vestec ASR

About

Vestec Inc.
125 Northfield Drive West, Suite 300
Waterloo, Ontario
N2L 6N8
Canada

http://www.vestec.com

Definition

Vestec provides sophisticated speech recognition for a wide variety of products and services in all major languages. Vestec Automatic Speech Recognition (ASR) and Natural Language Understanding (NLU) are fully compliant with Vxi* systems.

Languages

American English, Germany German, Australian English, Indian English, Brazilian Portuguese, Indian Hindi, British English, Italia, Canadian French, Japanese, Cantonese, Mexican Spanish, Castilian Spanish, Netherlands Dutch, Chinese Mandarin, Turkish, France French

Installation

Buy the ASR license or request a trial license (ASR engine + ASR language packages). You will receive a mail with a link to download the Vestec packages.

For Debian, (use apt-get -install to resolve the dependencies) :

dpkg -i *.deb && apt-get -f install

For CentOS : (The MRCP server can generate OpenSSL conflits, the option –nodeps can solve this issue) :

rpm -i *.rpm
vasre-lang-*
vasre-so*
vasre-tools*
vasre-rm*
vasre-server*
vasre-client*
vasre-mrcp* or vestec-mrcp-server

To request a license key you need to generate an Host ID from the server. Vestec provide a binary that generates an unique Host ID based on server and its hardware configuration. You need to download the binary associated to your OS server, and execute it locally.

root@demo:/home/user$ ./generate_host_id.CentOS.62-x86_64
Please select one of the network interfaces to generate the Host id: (enter the number)
1- MAC:005056900022 eth0
2- MAC:005056900031 eth1
>>1
Your Host id is 5e26d...............72afe82

Configuration

Register your installation with the Host ID, obtain the license file, and copy it to /opt/Vestec/license/..

# cp license.lic /opt/Vestec/license/

Edit the Vestec MRCP configuration file (/opt/Vestec/mrcp/conf/mrcpserver.xml), and set the IP/interface for the MRCP connector:

<properties>
    <!-- By default, network interface (IP address) to bind to will be implicitly identified.
         Alternatively, it can be explicitly set.
    -->
    <ip>192.168.200.109</ip>
    <!-- <ext-ip>a.b.c.d</ext-ip> -->
</properties>

Setup

Start the services (the order is important):

# /etc/init.d/vasre-rm start
# /etc/init.d/vasre-server start
# /etc/init.d/vasre-mrcp start (or /etc/init.d/vestec-mrcp-server start)

VoiceXML Browser Configuration

To enable speech recognition, change the main speech parameter in /etc/asterisk/vxml.conf . The “speech” parameter can get three values, “yes”, “automatic”, “no” or “emulation” (don’t generate errors if you enable speech grammars).

/etc/asterisk/vxml.conf

…
speech=automatic
speechprovider=unimrcp
…

In the VoiceXML browser configuration file :

/etc/openvxi/client.cfg

############################
# ASR server configuration #
############################

client.rec.resource.0.cacheDir              VXIString   /tmp/cacheContent
client.rec.resource.0.format                VXIString   grm

You must set Unimrcp default client profile ves1 for UnimrcpV1 and ves2 for V2

/etc/asterisk/unimrcp.conf

[general]
unimrcp-profile = ves2  ; Vestec MRCPv2 Server
log-level=DEBUG ;EMERGENCY 
log-output=10
returnnlsml=yes
cancelifqueue=false
setparams=yes
startinputtimers=yes
binarygrammars=yes
...

You need to specify VestecASR server IP

/usr/local/unimrcp/conf/client-profiles/vestec.xml

<server-ip>192.168.100.120</server-ip>

You need to restart the VXI and Asterisk to get all the changes.

Logs files from the ASR engine are generated here:

# ls /var/log/VestecASRE

VXML Examples

chocovan.vxml:

<?xml version="1.0"?>
<vxml xml:lang="es-ES" version="2.0"  xmlns="http://www.w3.org/2001/vxml">
  <property name="confidencelevel" value="0.6"/>
  <property name="inputmodes" value="voice"/>
  <form id="deck">
    <field name="name">
        <grammar xml:lang="es-ES" root="name">
          <rule id="name">
           <one-of>
            <item>chocolate<tag>chocolate</tag></item>
            <item>vainilla<tag>vainilla</tag></item>
           </one-of>
        </rule>
        </grammar>
        <prompt>¿Que prefiere, el chocolate o la vainilla ?</prompt>
    </field>
    <filled>
        <prompt>Usted ha dicho
        <value expr="name"/>
        </prompt>
    </filled>
  </form>
</vxml>

yesno.grm:

$Yesno = $Yes {si} | $No {no};

$Yes =
  si 
  | sip 
  | claro
  ;

$No =
  no 
  ;

sino.vxml:

<?xml version="1.0"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xml:lang="es-ES">
 <form>
  <property name="inputmodes" value="voice"/>
  <property name="timeout" value="5s"/>
  <field name="text">
   <grammar mode="voice" src="yesno.grm"/>
   <catch event="noinput nomatch">
    <reprompt/>
   </catch>
   <prompt>
    Por favor diga, si o no 
   </prompt>
  </field>
  <filled>
   <prompt>
    Ha dicho :
    <value expr="text.Yesno" />
   </prompt>
   <clear namelist="text" />
  </filled>
 </form>
</vxml>

Release Notes

Please contact us to get your own Vestec ASR licenses.

It could be necessary to disable a option in the Vestec engine : ( /opt/Vestec/vasre/conf/vasre-rm-config.xml):

  <param name="skip_rule_in_nlsml">
      <value>1</value>
  </param>

Or you can enable option “returnnlsml=yes” in the [general] section of /etc/asterisk/unimrcp.conf