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

Why is the speech recognition in my application slow?

Questions and answers about IVR programming for Plum DEV

Moderators: admin, support

interactivedigital
Posts: 13
Joined: Thu Nov 06, 2003 11:24 am

Why is the speech recognition in my application slow?

Post by interactivedigital »

Recognition times seem very slow for my application (on the order of 2 to 4 seconds per response). Is there anything I can do to speed this up? My input from the caller is limited to 0 - 9 and four or five other words. I use:

Code: Select all

<link event="help">
      <grammar type="application/x-jsgf" mode="voice">help</grammar>
      <grammar type="application/x-jsgf" mode="dtmf">0</grammar>
</link>
Any suggestions are much appreciated.

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

Re: Recognition speed on Murrow- new version of IVR platform

Post by support »

It is possible that the IVR issue you are experiencing is not performance related.
Here are some possibilities:


* It might be the timeout property in VXML that needs to be set. The default timeout value is 2 seconds, which seems to correspond with the amount of time you are waiting for the IVR grammar to be filled.


* If you are attempting speech recognition in very noisy or very quiet environments, it will confuse the silence detection algorithm that our engineers have developed, causing the recognition to take longer.


This is not to say that the problem is definitely not performance; Plum has recenty released a new version of their IVR platform. Even with rigorous testing, regression bugs do crop up on occasion as we all know.

One way to test this is to press the # key directly after speaking an utterance
if the significant pause is gone as a result of doing this, it has something to do with you timeout properties.
If on the other hand you get the same result when pressing pound after your utterance, it is probably a performance issue with the plumvp.

Please feel free to reply to this post when you narrow down the problem...

hope this helps! :)
Last edited by support on Thu Feb 25, 2010 3:53 pm, edited 3 times in total.

interactivedigital
Posts: 13
Joined: Thu Nov 06, 2003 11:24 am

Post by interactivedigital »

I tried pressing # after my replies and the delay is still present.

Could this have something to do with the recognition accuracy? I noticed for example, that the same application running on TellMe Studio executes faster with better digit recognition rates. For example, speaking a series of nine numbers slowly and clearly often comes back after the time delay with "invalid response", but the delay is there whether it recognizes or not, and whether you press # afterwards or not.....thanks again for your help here.

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

Send more IVR script

Post by support »

Please post on the IVR forum the vxml script you are using so that we may take a better look at how things are being declared.

Thanks!

Plum Staff
Last edited by support on Fri Jan 15, 2010 2:23 pm, edited 1 time in total.

interactivedigital
Posts: 13
Joined: Thu Nov 06, 2003 11:24 am

Post by interactivedigital »

interactivedigital wrote:Thanks - here's a piece of the vxml script I am using

Code: Select all

<?xml version="1.0" ?>
<vxml version="2.0">

<link event="help">
      <grammar type="application/x-jsgf" mode="voice">help</grammar>
      <grammar type="application/x-jsgf" mode="dtmf">0</grammar>
</link>


<script src="http://www.voicexl.com/VoiceXLPlumPortals.js"/>
<var name="account_number" />
    <form id="prompt_account_number">
        	<block>	
		<script> vl_init(3, 0) </script>	<!-- initialize VoiceXL  -->
		<audio src="http://naturalsound.svc.tellme.com/common-audio/help-se.wav"/>
		<audio expr="'http://www.voicexl.com/audio/' + vl_play('WelcomeTo.wav')"/>  <!--  <audio> tag processing for VoiceXL -->
              		<audio expr="'http://www.voicexl.com/audio/' + vl_play('ToLearn.wav')"/>
	</block>
        		<field name="account" type="digits?minlength=9;maxlength=9">
            	<prompt>
		<audio expr="'http://www.voicexl.com/audio/' + vl_play('ToContinue.wav')"/>
		<audio src="http://naturalsound.svc.tellme.com/common-audio/timeout.wav"/>
	</prompt>
	<help>
		<script> vl_help() </script>  <!--  Help processing for  VoiceXL -->
		<audio src="http://naturalsound.svc.tellme.com/common-audio/help-se.wav"/>
                		<audio expr="'http://www.voicexl.com/audio/' + vl_play('VoiceXLAutomatically.wav')"/>
		<audio expr="'http://www.voicexl.com/audio/' + vl_play('VoicePlaybackWords.wav')"/>
		<audio expr="'http://www.voicexl.com/audio/' + vl_play('ThisIs.wav')"/>
		<audio expr="'http://www.voicexl.com/audio/' + vl_play('VoiceXLHas.wav')"/>
		<audio expr="'http://www.voicexl.com/audio/' + vl_play('InThe.wav')"/>
		<audio expr="'http://www.voicexl.com/audio/' + vl_play('PleaseEnterAccount.wav')"/>
		<audio src="http://naturalsound.svc.tellme.com/common-audio/timeout.wav"/>
            	</help>
            	<noinput count="1">
		<script> vl_noinput() </script>  <!--  No Input processing for  VoiceXL -->
                		<audio expr="'http://www.voicexl.com/audio/' + vl_play('ImSorryYou.wav')"/>
		<reprompt />
	</noinput>
            	<noinput count="3">
		<script> vl_noinput() </script>
                		<audio expr="'http://www.voicexl.com/audio/' + vl_play('PleaseTry.wav')"/>
                		<exit />
            	</noinput>
           	<nomatch>
		<script> vl_nomatch() </script>  <!--  No Match processing for  VoiceXL -->
                		<audio expr="'http://www.voicexl.com/audio/' + vl_play('ThatIsAccount.wav')"/>
                		<reprompt />
            	</nomatch>
	<nomatch count="3">
		<script> vl_nomatch() </script>
                		<audio expr="'http://www.voicexl.com/audio/' + vl_play('PleaseTry.wav')"/>
                		<exit />
            	</nomatch>
            	<filled>
      		<script> vl_filled("account", 11) </script>  <!--  Field Filled processing for  VoiceXL -->
                		<goto next="#prompt_ss_number" />
            	</filled>
        	</field>
    </form>

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

IVR speech recognition engine

Post by support »

We switched our IVR speech recognition engine this past summer from Sphinx to Speechworks. Are you still experiencing any recognition latency?
Last edited by support on Fri Jan 15, 2010 2:26 pm, edited 1 time in total.

interactivedigital
Posts: 13
Joined: Thu Nov 06, 2003 11:24 am

Slow recognition

Post by interactivedigital »

Yes - recognition times are still slow...here a segment of vxml code I am using...

<?xml version="1.0" ?>
<vxml version="2.0">
<property name="timeout" value="0s"/>
<link event="help">
<grammar type="application/x-jsgf" mode="voice"> help </grammar>
<grammar type="application/x-jsgf" mode="dtmf"> 0 </grammar>
</link>


<script src="http://www.voicexl.com/VoiceXLPlumPortals.js"/>
<var name="account_number" />
<property name="timeout" value="0s"/>
<form id="prompt_account_number">
<block>
<script> vl_init(3, 0) </script> <!-- initialize VoiceXL
<audio src="http://naturalsound.svc.tellme.com/comm ... elp-se.wav"/> -->
<audio expr="'http://www.voicexl.com/audio/' + vl_play('WelcomeTo.wav')"/> <!-- <audio> tag processing for VoiceXL -->
<audio expr="'http://www.voicexl.com/audio/' + vl_play('ToLearn.wav')"/>
</block>
<field name="account" type="digits?minlength=9;maxlength=9">
<prompt>
<audio expr="'http://www.voicexl.com/audio/' + vl_play('ToContinue.wav')"/>
<!-- <audio src="http://naturalsound.svc.tellme.com/comm ... imeout.wav"/> -->
</prompt>
<help>
<script> vl_help() </script> <!-- Help processing for VoiceXL -->
<!-- <audio src="http://naturalsound.svc.tellme.com/comm ... elp-se.wav"/> -->
<audio expr="'http://www.voicexl.com/audio/' + vl_play('VoiceXLAutomatically.wav')"/>
<audio expr="'http://www.voicexl.com/audio/' + vl_play('VoicePlaybackWords.wav')"/>
<audio expr="'http://www.voicexl.com/audio/' + vl_play('ThisIs.wav')"/>
<audio expr="'http://www.voicexl.com/audio/' + vl_play('VoiceXLHas.wav')"/>
<audio expr="'http://www.voicexl.com/audio/' + vl_play('InThe.wav')"/>
<audio expr="'http://www.voicexl.com/audio/' + vl_play('PleaseEnterAccount.wav')"/>
<!-- <audio src="http://naturalsound.svc.tellme.com/comm ... imeout.wav"/> -->
</help>
<noinput count="1">
<script> vl_noinput() </script> <!-- No Input processing for VoiceXL -->
<audio expr="'http://www.voicexl.com/audio/' + vl_play('ImSorryYou.wav')"/>
<reprompt />
</noinput>
<noinput count="3">
<script> vl_noinput() </script>
<audio expr="'http://www.voicexl.com/audio/' + vl_play('PleaseTry.wav')"/>
<exit />
</noinput>
<nomatch>
<script> vl_nomatch() </script> <!-- No Match processing for VoiceXL -->
<audio expr="'http://www.voicexl.com/audio/' + vl_play('ThatIsAccount.wav')"/>
<reprompt />
</nomatch>
<nomatch count="3">
<script> vl_nomatch() </script>
<audio expr="'http://www.voicexl.com/audio/' + vl_play('PleaseTry.wav')"/>
<exit />
</nomatch>
<filled>
<script> vl_filled("account", 11) </script> <!-- Field Filled processing for VoiceXL -->
<goto next="#prompt_ss_number" />
</filled>
</field>
</form>
<property name="timeout" value="0s"/>
<form id="prompt_ss_number">
<field name="pin" type="digits?length=5">

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

Use of IVR incompletetimeout property

Post by support »

The one thing that can decrease this percieved latency is to lower the IVR global property, incompletetimeout to 1 second. According to

Code: Select all

<property name="incompletetimeout" value="1s"/>
This will decrease the final silence timeout after the user stops speaking. To test the best case scenario you can simply speak the account number and press #. This will give you the current best possible speech recognition speed.

Hope This Helps :)

Plum Support
Last edited by support on Thu Feb 25, 2010 3:54 pm, edited 4 times in total.

interactivedigital
Posts: 13
Joined: Thu Nov 06, 2003 11:24 am

Post by interactivedigital »

Thanks - that helped.

Now I get early detection of very slight background being recognized as input. How do I tweak that?

interactivedigital
Posts: 13
Joined: Thu Nov 06, 2003 11:24 am

Post by interactivedigital »

Hi - i had a post on 8/12. Could someone at Plum Support reply?

Thanks!

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

IVR issue with bargein detection

Post by support »

Hello,

I'm not quite sure what your IVR issue is referring to. Is background noise causing a bargein? If that is the case you may want to disable bargein on an initial prompt.

Code: Select all

<?xml version="1.0"?>
<vxml version="2.0">

<form>
  <block>
    <prompt bargein="false">
      This audio is non-bargeable.
    </prompt>
  </block>
</form>
This allows the bargein detection to get a better profile of the background noise and will lessen the likelyhood of noise causing a bargein.

Hope This Helps!

Plum Support
Last edited by support on Fri Jan 15, 2010 2:30 pm, edited 2 times in total.

interactivedigital
Posts: 13
Joined: Thu Nov 06, 2003 11:24 am

Post by interactivedigital »

That did not seem to help much. My problem is background noise and any slight utterance I make prior to entering spoken digits, words etc. These get recognized as attempts to enter a string of 9 or 5 digits in my dialog for example, when it is clearly not that. Is there a way to trim the sensitivity on that so only spoken words (not slight grunts, throat clearing etc) are looked at by the rec engine?

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

IVR platform is constantly being improved

Post by support »

Unfortunately that is not currently a feature of the Plum IVR System. We are constantly making improvements to our IVR Platform regarding bargein and speech detection. You can continue to check back on the Plum IVR Support Site for update announcements for our IVR platform.

Regards,
Plum Support
Last edited by support on Thu Feb 25, 2010 3:55 pm, edited 2 times in total.

interactivedigital
Posts: 13
Joined: Thu Nov 06, 2003 11:24 am

Post by interactivedigital »

I receive the following error today with the same vxml script that has not changed in the last week:

error no_ani 2 [13/Dec/2004:08:40:15 -0500] 3627 000001;002;1102945172 DocumentParser::FetchDocument - Parse error in file "http://www.voicexl.com/VoiceXLPlumPortals.vxml", line 31, column 9 - Expected end of tag 'prompt'

I get the same line 31, column 9 regardless of where the error occurs (I padded extra lines in to move line 31 down in the script)

here are lines 14 - 34

<property name="incompletetimeout" value="1s"/>

<link event="help">
<grammar type="application/x-jsgf" mode="voice"> help </grammar>
<grammar type="application/x-jsgf" mode="dtmf"> 0 </grammar>
</link>

<script src="http://www.voicexl.com/VoiceXLPlumPortals.js"/>
<var name="account_number" />

<form id="prompt_account_number">
<block>
<script> vl_init(3, 0) </script> <!-- initialize VoiceXL -->
<audio expr="'http://www.voicexl.com/audio/' + vl_play('WelcomeTo.wav')"/> <!-- <audio> tag processing for VoiceXL -->
<audio expr="'http://www.voicexl.com/audio/' + vl_play('ToLearn.wav')"/>
</block>
<field name="account" type="digits?minlength=9;maxlength=9">
<prompt>
<audio expr="'http://www.voicexl.com/audio/' + vl_play('ToContinue.wav')"/>
</prompt>
<help>

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

<goto> forces IVR platform to fetch latest version of

Post by support »

Hello,

Plum's servers utilize caching to reduce network latency and improve overall performance (especially regarding audio files). The caching is performed with similar controls to a proxy server, and as such you have the same HTTP header options available to you. You should be able to adjust the behavior of your webserver to mark .vxml files as dynamic and uncachable. Alternatively you can add an attribute to the <goto> tag that will force the IVR platform to fetch the latest version of the file. If this is your initial page you could create a new scratchpad that simply forwards on to that initial page.

Code: Select all

<?xml version="1.0"?>
<vxml version="2.0">
<form>
  <block>
    <goto next="http://www.voicexl.com/VoiceXLPlumPortals.vxml" maxage="0"/>
  </block>
</form>
This will cause the IVR system to fetch a fresh copy of the file.

Hope This Helps,

Plum Support
Last edited by support on Thu Feb 25, 2010 3:56 pm, edited 3 times in total.

Post Reply