Vestec ASR
About
Vestec Inc.
125 Northfield Drive West, Suite 300
Waterloo, Ontario
N2L 6N8
Canada
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