We've Moved! Please visit our new and improved forum over at our new portal: https://portal.plumvoice.com/hc/en-us/community/topics

ASR not working properly

Questions and answers about IVR programming for Plum DEV

Moderators: admin, support

Post Reply
zone24x7
Posts: 29
Joined: Fri May 19, 2006 7:50 am

ASR not working properly

Post by zone24x7 »

We are having some difficulties in getting the ASR feature properly
working on the plum system. Before deploying this to our customer
system, we have created a simple script to test our requirement.

This script was deployed on your test server (dialing 1 617-712-3156).
Even on your test server we were not able to get good results.
following is the scripts that we used

<?xml version="1.0"?>
<vxml version="2.0">
<property name="inputmodes" value="dtmf"/>
<var name="logincount" expr="1"/>
<form id="welcome">
<block>
<prompt>
This is a sample voice XML to test the server.
</prompt>
<goto next="#login"/>
</block>
</form>
<form id="login">
<field name="userid" type="digits">
<grammar type="application/x-jsgf">"*"</grammar>
<prompt bargein="false">
Now, Please enter your user number.
</prompt>
<noinput>
Sorry! I did't hear you.
</noinput>
<noinput count="3">
You didn't respond. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I did't understand.
<reprompt/>
</nomatch>
</field>
<field name="pwd" type="digits">
<grammar type="application/x-jsgf">"*"
</grammar>
<prompt bargein="false">
Please enter your password.
</prompt>
<noinput>
Sorry! I did't hear you.
</noinput>
<noinput count="3">
You didn't respond. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I did't understand.
<reprompt/>
</nomatch>
</field>
<filled>
<prompt >
Please wait! your login details are being sent for validation.
you entered <value expr="userid"/> for the user number and <value expr="pwd"/> for password..
</prompt>
<goto next="#loginsuccess"/>
</filled>
</form>

<form id="loginsuccess">
<field name="res" type="boolean">
<property name="interdigittimeout" value="2s" />
<grammar type="application/x-jsgf">1|2</grammar>
<prompt >
If you want to update your ticket number, please press 1,
Otherwise To exit press2
</prompt>
<noinput count="3">
You didn't enter any value. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I didn't understand.
<reprompt/>
</nomatch>
</field>
<filled>
<if cond="res==true">
<goto next="#frmTicket" />
<else />
<prompt >
Thank you for using voice Portals,
Good Bye!
</prompt>
<disconnect/>
</if>
</filled>
</form>
<form id="frmTicket">
<field name="tckno" type="digits">
<property name="interdigittimeout" value="2s" />
<prompt >
Please enter your Ticket number
</prompt>
<filled>
<assign name="ticketnumber" expr="tckno"/>
<prompt >
You entered, <value expr="tckno.replace(/(.)/g, '$1 ')"/> for the ticket number
</prompt>
</filled>
<noinput count="3">
You didn't enter any value. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I didn't understand.
<reprompt/>
</nomatch>
</field>
<filled>
<goto next="#sendconfirm" />
</filled>
</form>
<form id="sendconfirm">
<field name="res" type="digits">
<property name="interdigittimeout" value="2s" />
<grammar type="application/x-jsgf">1|2|3</grammar>
<prompt >
if the data you entered is correct, to proceed, press 1,
or, to cancel and enter data again, press 2,
Otherwise to exit press 3 .
</prompt>
<noinput count="3">
You didn't enter any value. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I didn't understand.
<reprompt/>
</nomatch>
</field>
<filled>
<if cond="res==1">
<goto next="#sendupdate"/>
<elseif cond="res==2"/>
<clear namelist="ticketnumber"/>
<goto next="#frmTicket"/>
<elseif cond="res==3"/>
<prompt >
Thank you for using voice Portals,
Good Bye
</prompt>
<disconnect/>
<else />
<prompt >
You should enter 1, 2 or 3.
</prompt>
<goto next="#sendconfirm"/>
</if>
</filled>
</form>

<form id="sendupdate">
<field name="res" type="boolean">
<property name="interdigittimeout" value="2s" />
<grammar type="application/x-jsgf">1|2</grammar>
<prompt >
If you want to update your ticket number, please press 1,
Otherwise to decline the ticket number and exit press 2.
</prompt>
<noinput count="3">
You didn't enter any value. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I didn't understand.
<reprompt/>
</nomatch>
</field>
<filled>
<if cond="res==true">
<prompt >
Please wait! your ticket number is being updated
</prompt>
<disconnect/>
<else />
<prompt >
Please wait! your ticket number is being declined.
</prompt>
<disconnect/>
</if>
</filled>
</form>
</vxml>


The things we require from this script is to


1. User should be able to voice in the user name and password (
this can be something like a 4-6 digit number)
2. User should be able to voice in a ticket number ( this can be
something like a 4-5 digit number)



ASR feature fails most of the time when we try about 2 or more digits
inputs. We have tried this with changing the inter digit time to 1-2
seconds. But it ends up with the same results.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

IVR application has no difficulty with speech recogntion

Post by support »

First, your initial form has inputmodes set to "dtmf" so in those fields, ASR won't be activated at all. Later in your IVR call flow, if you're having some difficulty with early truncation, you might consider setting the IVR global property, "incompletetimeout", to something like "2s".

However, we just tried calling in to the IVR application at the phone number below and did not run into any difficulties with speech recognition. We would recommend, in general, experimenting with ASR with a single simple field first to make sure you understand how all of the ASR related properties work.
Last edited by support on Thu Feb 25, 2010 12:30 pm, edited 4 times in total.

zone24x7
Posts: 29
Joined: Fri May 19, 2006 7:50 am

Post by zone24x7 »

Sorry i have pasted the wrong script as you said which was on dtmf mode but we changed that to voice mode last thursday and i think you have test that particular script which i have posted below. did you check using dtmf or ASR. for us the problem is having several digits in the ticket number which is a min of 6 digits. how did that work out for you when you dial in to the given number ? Following is the actual script you tested

<?xml version="1.0"?>
<vxml version="2.0">
<var name="logincount" expr="1"/>
<form id="welcome">
<block>
<prompt>
Welcome to your macy's south voice assistant.
</prompt>
<goto next="#login"/>
</block>
</form>
<form id="login">
<field name="userid" type="digits">
<grammar type="application/x-jsgf">"*"</grammar>
<prompt bargein="false">
Now, Please enter your user number.
</prompt>
<noinput>
Sorry! I did't hear you.
</noinput>
<noinput count="3">
You didn't respond. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I did't understand.
<reprompt/>
</nomatch>
</field>
<field name="pwd" type="digits">
<grammar type="application/x-jsgf">"*"
</grammar>
<prompt bargein="false">
Please enter your password.
</prompt>
<noinput>
Sorry! I did't hear you.
</noinput>
<noinput count="3">
You didn't respond. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I did't understand.
<reprompt/>
</nomatch>
</field>
<filled>
<prompt >
Please wait! your login details are being sent for validation.
you entered <value expr="userid"/> for the user number and <value expr="pwd"/> for password..
</prompt>
<goto next="#loginsuccess"/>
</filled>
</form>

<form id="loginsuccess">
<field name="res" type="boolean">
<property name="interdigittimeout" value="2s" />
<grammar type="application/x-jsgf">1|2</grammar>
<prompt >
If you want to update your ticket number, please press 1,
Otherwise To exit press2
</prompt>
<noinput count="3">
You didn't enter any value. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I didn't understand.
<reprompt/>
</nomatch>
</field>
<filled>
<if cond="res==true">
<goto next="#frmTicket" />
<else />
<prompt >
Thank you for using Macy's South voice Portals,
Good Bye!
</prompt>
<disconnect/>
</if>
</filled>
</form>
<form id="frmTicket">
<field name="tckno" type="digits">
<property name="interdigittimeout" value="2s" />
<prompt >
Please enter your Ticket number
</prompt>
<filled>
<assign name="ticketnumber" expr="tckno"/>
<prompt >
You entered, <value expr="tckno.replace(/(.)/g, '$1 ')"/> for the ticket number
</prompt>
</filled>
<noinput count="3">
You didn't enter any value. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I didn't understand.
<reprompt/>
</nomatch>
</field>
<filled>
<goto next="#sendconfirm" />
</filled>
</form>
<form id="sendconfirm">
<field name="res" type="digits">
<property name="interdigittimeout" value="2s" />
<grammar type="application/x-jsgf">1|2|3</grammar>
<prompt >
if the data you entered is correct, to proceed, press 1,
or, to cancel and enter data again, press 2,
Otherwise to exit press 3 .
</prompt>
<noinput count="3">
You didn't enter any value. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I didn't understand.
<reprompt/>
</nomatch>
</field>
<filled>
<if cond="res==1">
<goto next="#sendupdate"/>
<elseif cond="res==2"/>
<clear namelist="ticketnumber"/>
<goto next="#frmTicket"/>
<elseif cond="res==3"/>
<prompt >
Thank you for using Macy's South voice Portals,
Good Bye
</prompt>
<disconnect/>
<else />
<prompt >
You should enter 1, 2 or 3.
</prompt>
<goto next="#sendconfirm"/>
</if>
</filled>
</form>

<form id="sendupdate">
<field name="res" type="boolean">
<property name="interdigittimeout" value="2s" />
<grammar type="application/x-jsgf">1|2</grammar>
<prompt >
If you want to update your ticket number, please press 1,
Otherwise to decline the ticket number and exit press 2.
</prompt>
<noinput count="3">
You didn't enter any value. You'll be disconnected.
Good bye!
<disconnect/>
</noinput>
<nomatch>
Sorry, I didn't understand.
<reprompt/>
</nomatch>
</field>
<filled>
<if cond="res==true">
<prompt >
Please wait! your ticket number is being updated
</prompt>
<disconnect/>
<else />
<prompt >
Please wait! your ticket number is being declined.
</prompt>
<disconnect/>
</if>
</filled>
</form>
</vxml>

zone24x7
Posts: 29
Joined: Fri May 19, 2006 7:50 am

Post by zone24x7 »

We tested the script with the above shown script and when it comes to long digits system was ok if we say something like 123456 but if we try to say a number like 555555 or 4234563 (random long number) it was only successfull 40-50% time. there wasnt any back ground noice either. And please advice on the test you did so that we can try it out from this end. we were testing the system continuously for 30 mins and we had to put a small voice dealy between numbers ( when we were inputing the voice from the phone) which is not something we can accept from a normal system user where they will directly give a number without any delays between digits from the phone.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

tried testing IVR script several times with no issue

Post by support »

Hello,

We have tried testing your IVR script several times using our hosting environment and have not experienced any IVR issues. You should not bother trying to adjust your speech rate when talking to the speech recognition engine. This will often lead to timeouts if you are pausing too much. Instead you should speak normally as you expect your customers would.

Also, unless it is a fixed requirement for your customers we would recommend using DTMF input in most cases since it is guaranteed to be 100% accurate all the time. Where speech recognition is more interesting it is often not the best solution to the data input problem.

Finally, speech recognition is highly dependent on the environment it is being used. This refers to both the caller's environment as well as the line quality running to the IVR. We have configured our IVR hosting site to have the highest possible call quality. In varying environments such as a PBX with untested T1 lines or using analog lines speech recognition reliability can degrade significantly.

Regards,
Plum Support
Last edited by support on Sat Feb 20, 2010 4:28 pm, edited 2 times in total.

zone24x7
Posts: 29
Joined: Fri May 19, 2006 7:50 am

Post by zone24x7 »

can you please give us the Bargein Threshold and Silence Threshold values you have set on this test server of yours. Thank you

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

SDU is default used on IVR hosting platform

Post by support »

Hello,

The Plum IVR platform detects speech bargein using two possible methods. The default bargein mode is via the default platform Speech Detection Unit (SDU). The SDU adjusts it's bargein sensitivity dynamically based on the callers environment. The is the default used on our IVR hosting platform. As such there are no default settings for the Bargein Threshold and Silence Threshold settings.

The alternative speech bargein method is using a decibel threshold based bargein. This setting must be turned on by a plum IVR engineer (or the customer can be guided through this process over the phone). There is currently no means to control this via the web interface. Once this mode is enabled the Bargein Threshold and Silence Threshold settings will be used.

Regards,
Plum Support

Post Reply