AaronZhangL / unimrcp

Automatically exported from code.google.com/p/unimrcp
Apache License 2.0
0 stars 0 forks source link

app_mrcprecog never calls recog_channel_start_input_timers #155

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Check source
2.
3.

What version of the product are you using? On what operating system?
CentOS 6.3

Please provide any additional information below.

When using MRCPRecog if I set the no input timer, and place my mic on mute, the 
call continues forever.  Seeing a similar issue in the tracker, I checked the 
source and sure enough, the input timers are never started...

I am a minimal C++ programmer, and will give this a go, thx.

Original issue reported on code.google.com by damiank...@gmail.com on 12 Apr 2013 at 9:12

GoogleCodeExporter commented 9 years ago
I added this to app_unimrcp and uncommented the start_timers method and in the 
debug log it says "Start Input Timers", but, nothing ever times out...  Not 
sure what else is needed here.

                                if (start_input_timers == 0)
                                {
                                    if (schannel->state != SPEECH_CHANNEL_PROCESSING)
                                    {
                                        start_input_timers = 1;
                                        ast_log(LOG_DEBUG, "Start input timers\n");
                                        recog_channel_start_input_timers(schannel);
                                    }
                                }

Original comment by damiank...@gmail.com on 12 Apr 2013 at 10:04

GoogleCodeExporter commented 9 years ago
Got a little further, not the mrcp messaage is sent to start input timers, 
however, a 402 complete is received and the log reads:

 app_mrcprecog.c: (ASR-0) timers failed to start, status code = 402

I will research this.

Original comment by damiank...@gmail.com on 12 Apr 2013 at 10:19

GoogleCodeExporter commented 9 years ago
Although the method START-INPUT-TIMERS is not implemented for the application 
MRCPRecog, you can still start the timers by specifying the corresponding 
header field Start-Input-Timers via application options: sit=true. 

For example,

MRCPRecog(builtin:grammar/number,p=default&t=5000&b=1&ct=0.7&spl=en-US&f=hello-w
orld&sit=true)

You may also look at how the method START-INPUT-TIMERS is implemented for 
SynthAndRecog and apply the same logic back to MRCPRecog. Patches are welcome.

Original comment by achalo...@gmail.com on 12 Apr 2013 at 10:38

GoogleCodeExporter commented 9 years ago
Thinking I may be incorrect about the start timers, I looked at the RFC and saw 
they may only be set during a RECOGNIZE request.  So, sending outside of the 
recognize explains the 402.  Also, I noticed the recognize request was not 
being sent until I hung up the phone.  Changing the b (bargein) flag from 2 to 
1 fixed this.

Also, when changing b to 1, the RECOGNIZE request initially sent has the 
no-input-timeout set to the timeout specified in the dialplan, however, the 
MRCP server seems to ignore the no-input-timeout.  

I'll keep looking.

Original comment by damiank...@gmail.com on 12 Apr 2013 at 10:38

GoogleCodeExporter commented 9 years ago
As you can see here the no-input-timer is set, and the session established, yet 
the mrcp server never times out.  I'll wait for a reply because I don't want to 
start combing through the unimrcp server code ;)

Thx.

MRCP/2.0 302 RECOGNIZE 2
Channel-Identifier: 441a3caaa3c411e2@speechrecog
Content-Type: text/uri-list
Recognition-Mode: false
No-Input-Timeout: 5000
Save-Waveform: true
Recognition-Timeout: 5000
Confidence-Threshold: 0.7
Speech-Language: en-US
Content-Length: 17

session:grammar-0
2013-04-12 17:56:56:298040 [INFO]   Process RECOGNIZE Request 
<441a3caaa3c411e2@speechrecog> [2]
2013-04-12 17:56:56:298072 [INFO]   Dispatch Request RECOGNIZE 
<441a3caaa3c411e2@pocketsphinx>
2013-04-12 17:56:56:298140 [INFO]   Open Waveform File 
[/tmp/utter-441a3caaa3c411e2-2.pcm] <441a3caaa3c411e2@pocketsphinx>
2013-04-12 17:56:56:298218 [INFO]   Process RECOGNIZE Response 
<441a3caaa3c411e2@speechrecog> [2]
2013-04-12 17:56:56:298229 [INFO]   State Transition IDLE -> RECOGNIZING 
<441a3caaa3c411e2@speechrecog>
2013-04-12 17:56:56:298286 [INFO]   Send MRCPv2 Stream 10.220.1.26:1544 <-> 
10.220.1.26:47606 [83 bytes]
MRCP/2.0 83 2 200 IN-PROGRESS
Channel-Identifier: 441a3caaa3c411e2@speechrecog

2013-04-12 17:56:57:396945 [INFO]   Get Recognition Partial Result [better] 
Score [-9265] <441a3caaa3c411e2@pocketsphinx>
2013-04-12 17:56:58:096914 [INFO]   Get Recognition Partial Result [pretty] 
Score [-14615] <441a3caaa3c411e2@pocketsphinx>

>
>
>2013-04-12 17:58:00:285985 [INFO]   Receive MRCPv2 Stream 10.220.1.26:1544 <-> 
10.220.1.26:47606 [72 bytes]
MRCP/2.0 72 STOP 3
Channel-Identifier: 441a3caaa3c411e2@speechrecog

2013-04-12 17:58:00:286078 [INFO]   Process STOP Request 
<441a3caaa3c411e2@speechrecog> [3]
2013-04-12 17:58:00:286111 [INFO]   Dispatch Request STOP 
<441a3caaa3c411e2@pocketsphinx>
INFO: cmn_prior.c(121): cmn_prior_update: from < -44.68  0.00  0.00  0.00  0.00 
 0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 >
INFO: cmn_prior.c(139): cmn_prior_update: to   < -44.69  0.00  0.00  0.00  0.00 
 0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 >
INFO: fsg_search.c(1032): 3199 frames, 76872 HMMs (24/fr), 136560 senones 
(42/fr), 38858 history entries (12/fr)

2013-04-12 17:58:00:287662 [INFO]   Process STOP Response 
<441a3caaa3c411e2@speechrecog> [3]
2013-04-12 17:58:00:287679 [INFO]   State Transition RECOGNIZING -> IDLE 
<441a3caaa3c411e2@speechrecog>
2013-04-12 17:58:00:287715 [INFO]   Send MRCPv2 Stream 10.220.1.26:1544 <-> 
10.220.1.26:47606 [108 bytes]
MRCP/2.0 108 3 200 COMPLETE
Channel-Identifier: 441a3caaa3c411e2@speechrecog
Active-Request-Id-List: 2

2013-04-12 17:58:00:288189 [INFO]   TCP/MRCPv2 Peer Disconnected 
10.220.1.26:1544 <-> 10.220.1.26:47606
2013-04-12 17:58:00:288658 [INFO]   Receive SIP Event [nua_i_bye] Status 200 
Session Terminated

Original comment by damiank...@gmail.com on 12 Apr 2013 at 11:00

GoogleCodeExporter commented 9 years ago
Realizing that the issue is with the No-Input-Timers rather than the start 
input timers, can we close this ticket.  I want to create an appropriately 
named ticket for No-Input-Timers...

Thx,

Original comment by damiank...@gmail.com on 13 Apr 2013 at 5:00

GoogleCodeExporter commented 9 years ago
BTW, the support for START-INPUT-TIMERS in MRCPRecog() was implemented in r1983.

Original comment by achalo...@gmail.com on 26 Sep 2013 at 1:46