cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
3679
Views
20
Helpful
8
Replies

UCCX speech recognition tag problem

Andrei Fokin
Level 1
Level 1

Hello! 

I have trouble with mapping tag from voice recognition result to CCX variable. Generic Recognition is  succesful and in next step  Get Recognition Interpretation I try to map tag data from Slots to CCX Variable.

 

My test grammar:

<?xml version="1.0" encoding="UTF-8"?>
<grammar xml:lang="ru-RU" version="1.0"
xmlns="http://www.w3.org/2001/06/grammar"
root="Digits"
tag-format="semantics/1.0-literals">
<rule id="Digits" scope="public">
<one-of>
<item>0<tag>out.digits="zero"</tag></item>
<item>1<tag>out.digits="one"</tag></item>
<item>2<tag>out.digits="two"</tag></item>
<item>3<tag>out.digits="3"</tag></item>
</one-of>
</rule>
</grammar>

 

My CCX script revert "null" value from Slot "digits" to Variable "Digits", although the CCX logs I see that the data from ASR system is transmitted successfully. For example (ASR recognize  "One" and revert  tag  "one"):

null.PNG

 

 

 

194994408: Jul 24 19:03:07.120 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPSpeechChannel(Channel id:7, Contact id:696, Task id:37000527026): processRecResults(): NLSLM Result is: <?xml version="1.0" encoding="utf-8"?><result><interpretation grammar="session:GenericRecognition@DialogObject.grammar" confidence="71"><input mode="speech" confidence="71" timestamp-start="2018-07-24T19:03:04.540" timestamp-end="2018-07-24T19:03:04.940">1</input><instance>out.digits="one"<SWI_meaning>out.digits="one"</SWI_meaning></instance></interpretation></result>
194994409: Jul 24 19:03:07.120 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPMediaManagerImpl: appId=2, confId=57592, parId=4, channelId=7, channelImplId=7, contactId=696, contactImplId=1513656/1 -> Closing TX Stream Manager
194994410: Jul 24 19:03:07.122 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPSpeechChannel(Channel id:7, Contact id:696, Task id:37000527026): Exiting playAndRecognize()
194994411: Jul 24 19:03:07.123 MSK %MIVR-SS_MRCP_ASR-7-UNK:RecognitionDialogImpl(Channel id:7, Contact id:696, Task id:37000527026):DialogObjectDTMF:Rec Results from playAndRecognize():
Result[
Number of Interpretations = 1
[
Interpretation[
confidence =71
grammar=session:GenericRecognition@DialogObject.grammar
Input[
text=1
mode=speech
confidence=71
noinput=false
nomatch=false
]
Number of Instances = 1
[
Instance[
SWI_meaning=out.digits="one"
]
]
]

 

Why does the Get Recognition Interpretation step return "null" instead of"one"?

8 Replies 8

Andrei Fokin
Level 1
Level 1

I change slot name to dgts and collect MIVR logs from RTMT again. For some reason, there is no value in the dgts slot of the recognition result variable. I see message - No value exists in interpretation for slot:dgts

 

200257068: Jul 27 12:42:22.355 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPClientImpl.processRecognitionComplete() : callbackHandler id = 7 : Recognition complete update for mrcp request id 102
200257069: Jul 27 12:42:22.355 MSK %MIVR-SS_MRCP_ASR-7-UNK:MrcpMessageChannel.run() : no partial response found
200257070: Jul 27 12:42:22.355 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPSpeechChannel(Channel id:7, Contact id:4734, Task id:37000543935): processRecResults(): NLSLM Result is: <?xml version="1.0" encoding="utf-8"?><result><interpretation grammar="session:GenericRecognition@DialogObject.grammar" confidence="38"><input mode="speech" confidence="38" timestamp-start="2018-07-27T12:42:16.420" timestamp-end="2018-07-27T12:42:17.000">2</input><instance>out.dgts=two<SWI_meaning>out.dgts=two</SWI_meaning></instance></interpretation></result>
200257071: Jul 27 12:42:22.355 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPMediaManagerImpl: appId=2, confId=59089, parId=4, channelId=7, channelImplId=7, contactId=4734, contactImplId=1519053/1 -> Closing TX Stream Manager
200257072: Jul 27 12:42:22.364 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPSpeechChannel(Channel id:7, Contact id:4734, Task id:37000543935): Exiting playAndRecognize()
200257073: Jul 27 12:42:22.365 MSK %MIVR-SS_MRCP_ASR-7-UNK:RecognitionDialogImpl(Channel id:7, Contact id:4734, Task id:37000543935):DialogObjectDTMF:Rec Results from playAndRecognize():
Result[
Number of Interpretations = 1
[
Interpretation[
confidence =38
grammar=session:GenericRecognition@DialogObject.grammar
Input[
text=2
mode=speech
confidence=38
noinput=false
nomatch=false
]
Number of Instances = 1
[
Instance[
SWI_meaning=out.dgts=two
]
]
]
]
]
200257074: Jul 27 12:42:22.365 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPSpeechChannel(Channel id:7, Contact id:4734, Task id:37000543935): Entering clearPrompts()
200257075: Jul 27 12:42:22.365 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPSpeechChannel(Channel id:7, Contact id:4734, Task id:37000543935): Entering clearPrompts0()
200257076: Jul 27 12:42:22.365 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPSpeechChannel(Channel id:7, Contact id:4734, Task id:37000543935): Exiting clearPrompts0()
200257077: Jul 27 12:42:22.365 MSK %MIVR-SS_MRCP_ASR-7-UNK:MRCPSpeechChannel(Channel id:7, Contact id:4734, Task id:37000543935): Exiting clearPrompts()
200257078: Jul 27 12:42:22.365 MSK %MIVR-SS_MRCP_ASR-7-UNK:MediaDialogChannel id=7,state=IN_USE MDC::clear com.cisco.wf.mrcp.asr.dialog.en.RecognitionDialogImpl@1ec33f0 abortWaiting=false
200257079: Jul 27 12:42:22.365 MSK %MIVR-STEP_MEDIA_CONTROL-7-UNK:Task:37000543935, Generic Recognition: Added result to private context
200257080: Jul 27 12:42:22.365 MSK %MIVR-ENG-7-UNK:Execute step of Task 37000543935 : Get Recognition Interpretation: (resultName: ASRResult, resultIndex:0, interpretationIndex:0)
200257081: Jul 27 12:42:22.365 MSK %MIVR-STEP_MEDIA_CONTROL-7-UNK:Task:37000543935 Get Recognition Interpretation Execution
200257082: Jul 27 12:42:22.365 MSK %MIVR-STEP_MEDIA_CONTROL-7-UNK:Task:37000543935 Value of result name is: ASRResult
200257083: Jul 27 12:42:22.365 MSK %MIVR-STEP_MEDIA_CONTROL-7-UNK:Value of result index is:0
200257084: Jul 27 12:42:22.365 MSK %MIVR-STEP_MEDIA_CONTROL-7-UNK:Value of interp index is:0
200257085: Jul 27 12:42:22.365 MSK %MIVR-STEP_MEDIA_CONTROL-7-UNK:Obtained the RecognitionDialog.Result object from the private context
200257086: Jul 27 12:42:22.365 MSK %MIVR-STEP_MEDIA_CONTROL-7-UNK:Obtained interpretation object from Result
200257087: Jul 27 12:42:22.365 MSK %MIVR-STEP_MEDIA_CONTROL-7-UNK:Value of slot name is:dgts
200257088: Jul 27 12:42:22.365 MSK %MIVR-STEP_MEDIA_CONTROL-7-UNK:No value exists in interpretation for slot:dgts

Andrei Fokin
Level 1
Level 1

The problem was incorrect grammar. The tag format should be tag-format= 'semantics / 1.0'>
An example of a working grammar

 

<?xml version="1.0" encoding="UTF-8"?>
<grammar xml:lang='ru-RU' version='1.0'
xmlns='http://www.w3.org/2001/06/grammar'
root='Digits'
mode='voice'
type='application/srgs+xml'
tag-format='semantics/1.0'>
<rule id="Digits" scope="public">
<one-of>
<item>Событие<tag>out.menu_item='Event'</tag></item>
<item>Расторжение<tag>out.menu_item='Cancellation'</tag></item>
</one-of>
</rule>
</grammar>

I'm happy you solved this on your own, and posted the answer. There's very little ASR talk on these forums.

I am having a really hard time over here with the same exact problem. Can you please let me see a complete working grammar of yours, so I can see all of the exact known good syntax. Much appreciated if you could. Thanks!

Hello Nanosynth!

I used Generic Recognition Step with combined grammar:  G[Grm1_DTMF.grxml] || G[Grm1_Voice.grxml]

Grammars and screenshots of steps in attachment.

m.liew
Level 1
Level 1

Working on a project that is using Nuance ASR to collect the alpha-numeric account numbers. If you have a copy of the Grammar and sample script and willing to share.  Please email mliew@eplus.com Thank you!!

I attached everything for anyone to use, as when I was hunting for this stuff it was like non-existent. This stuff is in production on the UCCX 10.6 and 11.6 so I know it works. The one main grammar DB51.grxml does a letter substitution. Say I needed to send a fixed combo such as DB51 and the 7 variable digits after it to a backend database in a web call. The person enters the # key and the last 7 digits (3344556) and this grammar converts that to DB513344556 on the output. This grammar NEEDS the ddigits.grxml supporting grammar in the UCCX grammar repo as well for it to work.

 

The ILWU.grxml is a voice recognition grammar. You speak in either 9 digits or 2 letters and 7 digits and it outputs what you spoke in. The ILWU main grammar needs the digits.grxml and the letters.grxml as supporting grammars as well.

 

The bare9.grxml just interprets 9 digits when keyed in by DTMF and spits them back at you in the martha variable. I found out the hard way when you have the Nuance part in your UCCX script, the simple things like menu choices and digits entered (like collecting digits) cease to work in the Script because you now have your script setup for ASR/TTS. A simple menu choice like 1 for this and 2 for that now requires the Nuance grammar to process that DTMF so you have to use a different step for menu choices. So I made a completely separate ASR/TTS script that only deals with the Nuance and then I have that script call my other scripts which then gets you back to regular life and the Cisco menus work again. Those Cisco menus use the built in Cisco grammars to decode your DTMF that you use for regular menu choices and when you have the Nuance in the same script it renders that Cisco step useless. That is why I included the menu1or2.grxml to give you an idea. When the grammar processes your input, it outputs the final product in my 'martha' variable, had to put the girlfriends name in there somewhere. The UCCX then needs to pick up on the martha variable to make decisions on what you just had Nuance process. I also went through all of this with Nuances competitor, Lumenvox, so I know all about that one too and I have grammars and scripts for that. I liked the Nuance better. I included my 'asrFrontEnd.aef' script. All this does it the Nuance work, regular scripts call into this on and this one then calls out to other scripts. This way I only use the Nuance for a brief time, and the Nuance license gets put back when you're out of this script

Thanks for sharing this.  Yeah, the amount of posts on the forums for ASR work is minimal if not basically non-existent.  In my 15 years working on UCCX, I've only ever been asked/tasked with configuring it once, and that was like 10 years ago.