Git Product home page Git Product logo

asterisk-unimrcp's Introduction

INTRODUCTION
============

This document provides a brief description of the UniMRCP modules for Asterisk.

* Generic Speech Recognition API

The module res_speech_unimrcp.so is an implementation of the Generic Speech Recognition API of
Asterisk based on the UniMRCP client library.

* Dialplan Applications

The module app_unimrcp.so is a suite of speech recognition and synthesis applications for Asterisk.


INSTALLATION
============

See the file INSTALL for installation tips.


REFERENCES
==========

Websites:
   http://www.unimrcp.org/asterisk
   http://www.asterisk.org

Downloads:
   http://www.unimrcp.org/project/component-view/asterisk
   
GitHub:
   https://github.com/unispeech/asterisk-unimrcp
   
Issue Tracker:
   https://github.com/unispeech/asterisk-unimrcp/issues
   
Discussion Group:
   http://groups.google.com/group/unimrcp

Source Changes:
   https://github.com/unispeech/asterisk-unimrcp/commits/master
   http://groups.google.com/group/unimrcp-svn-commits

   
LICENSING
=========

Since Asterisk is distributed under the GPLv2 license, and the UniMRCP modules are loaded by and
directly interface with Asterisk, the GPLv2 license applies to the UniMRCP modules too.

See the file COPYING for more information regarding the license.

Copyright 2008 - 2022 Arsen Chaloyan

asterisk-unimrcp's People

Contributors

achaloyan avatar kkocaerkek avatar sfgeorge avatar thirionjwf avatar userator avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

asterisk-unimrcp's Issues

Return values from ${RECOG_COMPLETION_CAUSE}

All the help files for Asterisk for the SynthAndRecog "${RECOG_COMPLETION_CAUSE}" has only 3 values: 000=success, 001=No Match, 002=No Input.
What is the meaning of 003? And, are there any others?

same => n,gotoif($[${RECOG_COMPLETION_CAUSE}=001]?BadMenu)
same => n,gotoif($[${RECOG_COMPLETION_CAUSE}=002]?NoInput)

Continuous No-Input Error After a While

I want to do continuous speech recognition.

My dialplan:

[general]
autofallthrough = no

[from-internal]
exten = 200,1,Answer()
    same = n,Wait(1)
    same = n,SpeechCreate()
    same = n,SpeechBackground(hello)
    same = n,Verbose(0, Result is: ${SPEECH_TEXT(0)})
    same = n(record),SpeechBackground()
    same = n,Wait(1)
    same = n,Verbose(0, Result is: ${SPEECH_TEXT(0)})
    same = n,Goto(record)

It works fine but if you don't give input, after a while it continuously gives warning below and do not make any recognition:
image

It supposed to recognize again when I am talked.

Audio queue overflow

Im getting this warning time to time, what is the reason of a queue overflow?

WARNING[57182][C-00004386] audio_queue.c: (ASR-15473) Audio queue overflow!

(ASR-0) Can't find profile, default

I've configured asterisk, unimrcp and zoiper.
My mrcp.conf file -->

[general]
; Default ASR and TTS profiles.
default-asr-profile = speech-nuance5-mrcp2
default-tts-profile = speech-nuance5-mrcp2
; UniMRCP logging level to appear in Asterisk logs. Options are:
; EMERGENCY|ALERT|CRITICAL|ERROR|WARNING|NOTICE|INFO|DEBUG -->
log-level = DEBUG
max-connection-count = 100
offer-new-connection = 1
; rx-buffer-size = 1024
; tx-buffer-size = 1024
; request-timeout = 5000
; speech-channel-timeout = 30000
;
; Profile for Nuance Speech Server MRCPv1
;
[unimrcpv1]
; MRCP settings
version = 1
;
; RTSP settings
server-ip = 192.168.1.9
server-port = 1554
resource-location = media
speechsynth = speechsynthesizer
; RTP factory
rtp-ip = 192.168.1.9
rtp-port-min = 28000
rtp-port-max = 29000
;
; Jitter buffer settings
playout-delay = 50
max-playout-delay = 200
; RTP settings
ptime = 20
codecs = PCMU PCMA L16/96/8000 telephone-event/101/8000
; RTCP settings
rtcp = 0
;
; Profile for Nuance Speech Server MRCPv2
;
[unimrcpv2]
; MRCP settings
version = 2
;
; SIP settings
server-ip = 192.168.1.9
server-port = 8004
; SIP user agent
client-ip = 192.168.1.9
client-port = 60820
;client-port = 25097
sip-transport = udp
;
; RTP factory
rtp-ip = 192.168.1.9
rtp-port-min = 28000
rtp-port-max = 29000
; Jitter buffer settings
playout-delay = 50
max-playout-delay = 200
; RTP settings
ptime = 20
codecs = PCMU PCMA L16/96/8000 telephone-event/101/8000
; RTCP settings
rtcp = 0

My extensions.conf file -->

[from-internal]
exten => 6113,1,Answer()
exten => 6113,n,MRCPRecog(builtin:grammar/number,p=default&t=5000&b=1&ct=0.7&spl=en-US&f=hello-world)
exten => 6113,n,Verbose(1, ${RECOGSTATUS}, ${RECOG_COMPLETION_CAUSE}, ${RECOG_RESULT})
exten => 6113,n,Hangup

Then when I'm making the call using zoiper getting below error -->

== Setting global variable 'SIPDOMAIN' to '192.168.1.9'
-- Executing [6113@from-internal:1] Answer("PJSIP/6001-00000007", "") in new stack
> 0x7f2fb8033c30 -- Strict RTP learning after remote address set to: 192.168.1.9:8000
> 0x7f2fb8033c30 -- Strict RTP switching to RTP target address 192.168.1.9:8000 as source
-- Executing [6113@from-internal:2] MRCPRecog("PJSIP/6001-00000007", "builtin:grammar/number,p=default&t=5000&b=1&ct=0.7&spl=en-US&f=hello-world") in new stack
[Sep 8 21:05:59] NOTICE[28712][C-00000008]: app_mrcprecog.c:1086 app_recog_exec: MRCPRecog() grammar: builtin:grammar/number
[Sep 8 21:05:59] NOTICE[28712][C-00000008]: app_mrcprecog.c:1107 app_recog_exec: MRCPRecog() options: p=default&t=5000&b=1&ct=0.7&spl=en-US&f=hello-world
> [Sep 8 21:05:59] ERROR[28712][C-00000008]: app_mrcprecog.c:1166 app_recog_exec: (ASR-6) Can't find profile, default
[Sep 8 21:05:59] NOTICE[28712][C-00000008]: app_mrcprecog.c:1047 mrcprecog_exit: MRCPRecog() exiting status: ERROR on PJSIP/6001-00000007
== Spawn extension (from-internal, 6113, 2) exited non-zero on 'PJSIP/6001-00000007'

Please help me with this one. Thank you in advance

app_MRCPRecord for mrcp recorder capabilities

Hi,
There is no app_MRCPRecord for using the recorder MRCP resource.
Is this deliberate or is it something that is in pipeline or it can be achieved using the already available apps or someone has to implement their own app_MRCPRecord to use this functionality.
Thank you

asterisk module 1.5.1 not working for asterisk 16

Hi Arsen,

edit: sorry I just realised I posted this in the wrong repo (I think), so feel free to move the issue using the new github feature if possible

Any plans to support asterisk 16 anytime soon? I tried installing the asterisk module (1.5.1) with asterisk 16 and got the following error stack:

****************************** REPORT ******************************

Asterisk version.............. : 16.0.0
UniMRCP version............... : 1.5.0
UniMRCP modules version....... : 1.5.1

Compiler...................... : gcc
Compiler flags................ : -g -O2
Preprocessor definitions...... :
Linker flags.................. :

Modules install path...........: /usr/lib/asterisk/modules
Configuration install path.....: /etc/asterisk
XML doc install path...........: /var/lib/asterisk/documentation/thirdparty

Speech resource module.........: yes
Application module.............: yes

********************************************************************
Making all in res-speech-unimrcp
make[1]: Entering directory '/tmp/asterisk-unimrcp-1.5.1/res-speech-unimrcp'
  CC       res_speech_unimrcp.lo
In file included from /usr/include/asterisk.h:23:0,
                 from ../include/ast_compat_defs.h:30,
                 from res_speech_unimrcp.c:28:
res_speech_unimrcp.c: In function 'uni_recog_speech_result_build':
res_speech_unimrcp.c:778:27: error: 'Do_not_use_strdup__use_ast_strdup' undeclared (first use in this function)
     speech_result->text = strdup(text);
                           ^
res_speech_unimrcp.c:778:27: note: each undeclared identifier is reported only once for each function it appears in
Makefile:434: recipe for target 'res_speech_unimrcp.lo' failed
make[1]: Leaving directory '/tmp/asterisk-unimrcp-1.5.1/res-speech-unimrcp'
make[1]: *** [res_speech_unimrcp.lo] Error 1
Makefile:409: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

note: I tried the same thing on asterisk 15.6.1 and everything is working correctly

thank you,

Daan

Issue in Installing UniMRCP with Asterisk 16 in AWS EC2 instance

Hi,

I am trying to install UniMRCP packages with Asterisk 16 but system is not able to do, please find errors logs below:
In file included from ../include/ast_compat_defs.h:45:0,
from res_speech_unimrcp.c:28:
/usr/include/asterisk.h:20:1: error: unknown type name 'define'
define AST_MODULE_SELF_SYM
^~~~~~
In file included from /usr/lib/gcc/x86_64-amazon-linux/7/include/stdint.h:9:0,
from /usr/include/inttypes.h:27,
from /usr/include/asterisk/compat.h:31,
from /usr/include/asterisk.h:28,
from ../include/ast_compat_defs.h:45,
from res_speech_unimrcp.c:28:
/usr/include/stdint.h:36:1: error: expected '=', ',', ';', 'asm' or 'attribute' before 'typedef'
typedef signed char int8_t;
^~~~~~~
In file included from ../include/ast_compat_defs.h:45:0,
from res_speech_unimrcp.c:28:
/usr/include/asterisk.h:302:2: error: #error "Externally compiled modules must declare AST_MODULE_SELF_SYM."
#error "Externally compiled modules must declare AST_MODULE_SELF_SYM."
^~~~~
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:118:23: error: conflicting types for 'ast_channel_set_readformat'
static APR_INLINE int ast_channel_set_readformat(struct ast_channel *chan, ast_format_compat *format)
^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../include/ast_compat_defs.h:47:0,
from res_speech_unimrcp.c:28:
/usr/include/asterisk/channel.h:4144:6: note: previous declaration of 'ast_channel_set_readformat' was here
void ast_channel_set_readformat(struct ast_channel *chan, struct ast_format *format);
^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:122:23: error: conflicting types for 'ast_channel_set_writeformat'
static APR_INLINE int ast_channel_set_writeformat(struct ast_channel *chan, ast_format_compat *format)
^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../include/ast_compat_defs.h:47:0,
from res_speech_unimrcp.c:28:
/usr/include/asterisk/channel.h:4145:6: note: previous declaration of 'ast_channel_set_writeformat' was here
void ast_channel_set_writeformat(struct ast_channel *chan, struct ast_format *format);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h: In function 'ast_channel_get_rawreadformat':
../include/ast_compat_defs.h:140:2: warning: implicit declaration of function 'ast_format_copy'; did you mean 'ast_format_cmp'? [-Wimplicit-function-declaration]
ast_format_copy(format, ast_channel_rawreadformat(chan));
^~~~~~~~~~~~~~~
ast_format_cmp
res_speech_unimrcp.c: At top level:
res_speech_unimrcp.c:31:23: error: expected declaration specifiers or '...' before string constant
ASTERISK_FILE_VERSION(FILE, "$Revision: $")
^~~~~~~~
res_speech_unimrcp.c:31:33: error: expected declaration specifiers or '...' before string constant
ASTERISK_FILE_VERSION(FILE, "$Revision: $")
^~~~~~~~~~~~~~
res_speech_unimrcp.c:1205:2: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
uni_recog_change_results_type,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
res_speech_unimrcp.c:1205:2: note: (near initialization for 'ast_engine.get_setting')
res_speech_unimrcp.c:1206:2: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
uni_recog_get
^~~~~~~~~~~~~
res_speech_unimrcp.c:1206:2: note: (near initialization for 'ast_engine.change_results_type')
res_speech_unimrcp.c: In function 'load_module':
res_speech_unimrcp.c:1420:23: warning: implicit declaration of function 'ast_format_cap_alloc_nolock'; did you mean 'ast_format_cap_alloc'? [-Wimplicit-function-declaration]
ast_engine.formats = ast_format_cap_alloc_nolock();
^~~~~~~~~~~~~~~~~~~~~~~~~~~
ast_format_cap_alloc
res_speech_unimrcp.c:1420:21: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
ast_engine.formats = ast_format_cap_alloc_nolock();
^
res_speech_unimrcp.c:1426:20: error: storage size of 'format' isn't known
struct ast_format format;
^~~~~~
res_speech_unimrcp.c:1427:2: warning: implicit declaration of function 'ast_format_set'; did you mean 'ast_format_cmp'? [-Wimplicit-function-declaration]
ast_format_set(&format, AST_FORMAT_SLINEAR, 0);
^~~~~~~~~~~~~~
ast_format_cmp
res_speech_unimrcp.c:1427:26: error: 'AST_FORMAT_SLINEAR' undeclared (first use in this function); did you mean 'AST_FORMAT_CMP_EQUAL'?
ast_format_set(&format, AST_FORMAT_SLINEAR, 0);
^~~~~~~~~~~~~~~~~~
AST_FORMAT_CMP_EQUAL
res_speech_unimrcp.c:1427:26: note: each undeclared identifier is reported only once for each function it appears in
res_speech_unimrcp.c:1428:2: warning: implicit declaration of function 'ast_format_cap_add'; did you mean 'ast_format_cap_alloc'? [-Wimplicit-function-declaration]
ast_format_cap_add(ast_engine.formats, &format);
^~~~~~~~~~~~~~~~~~
ast_format_cap_alloc
make[1]: *** [res_speech_unimrcp.lo] Error 1
make[1]: Leaving directory /usr/src/uni-ast-package-1.1.0/modules/res-speech-unimrcp' make: *** [all-recursive] Error 1 Making install in res-speech-unimrcp make[1]: Entering directory /usr/src/uni-ast-package-1.1.0/modules/res-speech-unimrcp'
if /bin/sh ../libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME="asterisk-unimrcp" -DPACKAGE_TARNAME="asterisk-unimrcp" -DPACKAGE_VERSION="1.1.0" -DPACKAGE_STRING="asterisk-unimrcp\ 1.1.0" -DPACKAGE_BUGREPORT="" -DPACKAGE="asterisk-unimrcp" -DVERSION="1.1.0" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DUNIMRCP_DIR_LOCATION="/usr/local/unimrcp" -DASTERISK_MAJOR_VERSION=14 -DASTERISK_MINOR_VERSION=6 -DASTERISK_PATCH_VERSION=0 -I. -I. -I../include -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/unimrcp/include -I/usr/local/unimrcp/include/apr-1 -I/usr/include -g -O2 -MT res_speech_unimrcp.lo -MD -MP -MF ".deps/res_speech_unimrcp.Tpo" -c -o res_speech_unimrcp.lo res_speech_unimrcp.c; \
then mv -f ".deps/res_speech_unimrcp.Tpo" ".deps/res_speech_unimrcp.Plo"; else rm -f ".deps/res_speech_unimrcp.Tpo"; exit 1; fi
gcc -DPACKAGE_NAME="asterisk-unimrcp" -DPACKAGE_TARNAME="asterisk-unimrcp" -DPACKAGE_VERSION="1.1.0" "-DPACKAGE_STRING="asterisk-unimrcp 1.1.0"" -DPACKAGE_BUGREPORT="" -DPACKAGE="asterisk-unimrcp" -DVERSION="1.1.0" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DUNIMRCP_DIR_LOCATION="/usr/local/unimrcp" -DASTERISK_MAJOR_VERSION=14 -DASTERISK_MINOR_VERSION=6 -DASTERISK_PATCH_VERSION=0 -I. -I. -I../include -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/unimrcp/include -I/usr/local/unimrcp/include/apr-1 -I/usr/include -g -O2 -MT res_speech_unimrcp.lo -MD -MP -MF .deps/res_speech_unimrcp.Tpo -c res_speech_unimrcp.c -fPIC -DPIC -o .libs/res_speech_unimrcp.o
In file included from ../include/ast_compat_defs.h:45:0,
from res_speech_unimrcp.c:28:
/usr/include/asterisk.h:20:1: error: unknown type name 'define'
define AST_MODULE_SELF_SYM
^~~~~~
In file included from /usr/lib/gcc/x86_64-amazon-linux/7/include/stdint.h:9:0,
from /usr/include/inttypes.h:27,
from /usr/include/asterisk/compat.h:31,
from /usr/include/asterisk.h:28,
from ../include/ast_compat_defs.h:45,
from res_speech_unimrcp.c:28:
/usr/include/stdint.h:36:1: error: expected '=', ',', ';', 'asm' or 'attribute' before 'typedef'
typedef signed char int8_t;
^~~~~~~
In file included from ../include/ast_compat_defs.h:45:0,
from res_speech_unimrcp.c:28:
/usr/include/asterisk.h:302:2: error: #error "Externally compiled modules must declare AST_MODULE_SELF_SYM."
#error "Externally compiled modules must declare AST_MODULE_SELF_SYM."
^~~~~
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:118:23: error: conflicting types for 'ast_channel_set_readformat'
static APR_INLINE int ast_channel_set_readformat(struct ast_channel *chan, ast_format_compat *format)
^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../include/ast_compat_defs.h:47:0,
from res_speech_unimrcp.c:28:
/usr/include/asterisk/channel.h:4144:6: note: previous declaration of 'ast_channel_set_readformat' was here
void ast_channel_set_readformat(struct ast_channel *chan, struct ast_format *format);
^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:122:23: error: conflicting types for 'ast_channel_set_writeformat'
static APR_INLINE int ast_channel_set_writeformat(struct ast_channel *chan, ast_format_compat *format)
^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../include/ast_compat_defs.h:47:0,
from res_speech_unimrcp.c:28:
/usr/include/asterisk/channel.h:4145:6: note: previous declaration of 'ast_channel_set_writeformat' was here
void ast_channel_set_writeformat(struct ast_channel *chan, struct ast_format *format);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h: In function 'ast_channel_get_rawreadformat':
../include/ast_compat_defs.h:140:2: warning: implicit declaration of function 'ast_format_copy'; did you mean 'ast_format_cmp'? [-Wimplicit-function-declaration]
ast_format_copy(format, ast_channel_rawreadformat(chan));
^~~~~~~~~~~~~~~
ast_format_cmp
res_speech_unimrcp.c: At top level:
res_speech_unimrcp.c:31:23: error: expected declaration specifiers or '...' before string constant
ASTERISK_FILE_VERSION(FILE, "$Revision: $")
^~~~~~~~
res_speech_unimrcp.c:31:33: error: expected declaration specifiers or '...' before string constant
ASTERISK_FILE_VERSION(FILE, "$Revision: $")
^~~~~~~~~~~~~~
res_speech_unimrcp.c:1205:2: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
uni_recog_change_results_type,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
res_speech_unimrcp.c:1205:2: note: (near initialization for 'ast_engine.get_setting')
res_speech_unimrcp.c:1206:2: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
uni_recog_get
^~~~~~~~~~~~~
res_speech_unimrcp.c:1206:2: note: (near initialization for 'ast_engine.change_results_type')
res_speech_unimrcp.c: In function 'load_module':
res_speech_unimrcp.c:1420:23: warning: implicit declaration of function 'ast_format_cap_alloc_nolock'; did you mean 'ast_format_cap_alloc'? [-Wimplicit-function-declaration]
ast_engine.formats = ast_format_cap_alloc_nolock();
^~~~~~~~~~~~~~~~~~~~~~~~~~~
ast_format_cap_alloc
res_speech_unimrcp.c:1420:21: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
ast_engine.formats = ast_format_cap_alloc_nolock();
^
res_speech_unimrcp.c:1426:20: error: storage size of 'format' isn't known
struct ast_format format;
^~~~~~
res_speech_unimrcp.c:1427:2: warning: implicit declaration of function 'ast_format_set'; did you mean 'ast_format_cmp'? [-Wimplicit-function-declaration]
ast_format_set(&format, AST_FORMAT_SLINEAR, 0);
^~~~~~~~~~~~~~
ast_format_cmp
res_speech_unimrcp.c:1427:26: error: 'AST_FORMAT_SLINEAR' undeclared (first use in this function); did you mean 'AST_FORMAT_CMP_EQUAL'?
ast_format_set(&format, AST_FORMAT_SLINEAR, 0);
^~~~~~~~~~~~~~~~~~
AST_FORMAT_CMP_EQUAL
res_speech_unimrcp.c:1427:26: note: each undeclared identifier is reported only once for each function it appears in
res_speech_unimrcp.c:1428:2: warning: implicit declaration of function 'ast_format_cap_add'; did you mean 'ast_format_cap_alloc'? [-Wimplicit-function-declaration]
ast_format_cap_add(ast_engine.formats, &format);
^~~~~~~~~~~~~~~~~~
ast_format_cap_alloc
make[1]: *** [res_speech_unimrcp.lo] Error 1
make[1]: Leaving directory `/usr/src/uni-ast-package-1.1.0/modules/res-speech-unimrcp'
make: *** [install-recursive] Error 1

app_unimrpc (v 1.7.0): request-timeout setting not respected.

Hello,

I was testing the resilience of our system against different errors, and in a scenario where for some reason our MRCP server would not respond to an INVITE when establishing the MRCPv2 session, I noticed that whatever value I assign to the parameter request-timeout in mrcp.conf, the request timeout always occurs after about 30 seconds.

Note that In the log trace below I have set request-timeout to 5 but I have tried with other values (10, 10000) and the effect is always the same.

Can someone confirm that the request-timeout setting is being applied as expected on their installation?

In advance, thank you.

Asterisk version: 17.4.0
Asterisk Unimrcp version: 1.7.0

[2020-08-24 16:17:21] DEBUG[1]: ast_unimrcp_framework.c:827 load_mrcp_config: general.request-timeout=5
....
[2020-08-24 16:39:14] NOTICE[3676][C-00000001]: app_synthandrecog.c:1335 app_synthandrecog_exec: SynthAndRecog() prompt: <?xml version='1.0' encoding='UTF-8'?><speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.w3.org/2001/10/synthesis http://www.w3.org/TR/speech-synthesis/synthesis.xsd' xml:lang='de-DE'><p>Hallo ich bin ein Test</p></speak>
[2020-08-24 16:39:14] NOTICE[3676][C-00000001]: app_synthandrecog.c:1343 app_synthandrecog_exec: SynthAndRecog() grammar: http://some.server/nuance_package.json?nlptype=config
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_datastore.c:157 app_datastore_get: Create app datastore on PJSIP/+4911111111111-00000000
[2020-08-24 16:39:14] NOTICE[3676][C-00000001]: app_synthandrecog.c:1359 app_synthandrecog_exec: SynthAndRecog() options: p=default&spl=de-DE&sit=1&b=0&t=30000&nit=1000&sct=1000
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_synthandrecog.c:1159 synthandrecog_options_parse: Apply option p: default
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_synthandrecog.c:1159 synthandrecog_options_parse: Apply option spl: de-DE
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_synthandrecog.c:1159 synthandrecog_options_parse: Apply option sit: 1
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_synthandrecog.c:1159 synthandrecog_options_parse: Apply option b: 0
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_synthandrecog.c:1159 synthandrecog_options_parse: Apply option t: 30000
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_synthandrecog.c:1159 synthandrecog_options_parse: Apply option nit: 1000
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_synthandrecog.c:1159 synthandrecog_options_parse: Apply option sct: 1000
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_datastore.c:210 app_datastore_session_add: Add entry _default to datastore on PJSIP/+4911111111111-00000000
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: audio_queue.c:253 audio_queue_create: (ASR-0) Audio queue created
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: speech_channel.c:252 speech_channel_create: Created speech channel: Name=ASR-0, Type=RECOGNIZER, Codec=PCMU, Rate=8000 on PJSIP/+4911111111111-00000000
[2020-08-24 16:39:14] NOTICE[3676][C-00000001]: src/mrcp_application.c:117  Create MRCP Handle 0x7fd63c01feb8 [unimrcp-mrcp2]
[2020-08-24 16:39:14] NOTICE[3676][C-00000001]: src/mrcp_client_session.c:131  Create Channel ASR-0 <new>
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: src/apt_task.c:263  Signal Message to [MRCP Client] [0x7fd63c001400;4;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:335  Process Message [MRCP Client] [0x7fd63c001400;4;0]
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_client_session.c:385  Receive App Request ASR-0 <new> [2]
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_client.c:697  Add MRCP Handle ASR-0 <new>
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:1277  Dispatch App Request ASR-0 <new> [2]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:263  Signal Message to [MRCPv2ConnectionAgent] [0x7fd65c001a40;1;0]
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_client_session.c:717  Add Control Channel ASR-0 <new@speechrecog>
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:743  Add Media Termination ASR-0 <new@media-tm>
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:772  Add Media Termination ASR-0 <new@rtp-tm>
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:263  Signal Message to [MediaEngine] [0x7fd648006610;1;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_consumer_task.c:135  Wait for Messages [MRCP Client]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_poller_task.c:259  Process Poller Wakeup [MRCPv2ConnectionAgent]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_task.c:335  Process Message [MRCPv2ConnectionAgent] [0x7fd65c001a40;1;0]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_task.c:263  Signal Message to [MRCP Client] [0x7fd65c001ca0;2;0]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_poller_task.c:249  Wait for Messages [MRCPv2ConnectionAgent]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:335  Process Message [MRCP Client] [0x7fd65c001ca0;2;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:292  Control Channel Added ASR-0 <new@speechrecog>
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_consumer_task.c:135  Wait for Messages [MRCP Client]
[2020-08-24 16:39:14] DEBUG[3663]: src/apt_task.c:335  Process Message [MediaEngine] [0x7fd648006610;1;0]
[2020-08-24 16:39:14] DEBUG[3663]: src/mpf_context.c:180  Add Media Context ASR-0
[2020-08-24 16:39:14] DEBUG[3663]: src/apt_task.c:263  Signal Message to [MRCP Client] [0x7fd64c0018d0;3;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:335  Process Message [MRCP Client] [0x7fd64c0018d0;3;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:939  Media Termination Added ASR-0 <new@media-tm>
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:939  Media Termination Added ASR-0 <new@rtp-tm>
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_client_session.c:409  Send Offer ASR-0 <new> [c:1 a:1 v:0] to 127.0.0.1:8060
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_sofiasip_client_agent.c:357  Local SDP ASR-0 <new>
v=0
o=Asterisk 0 0 IN IP4 xxx.xxx.xxx.xxx
s=-
c=IN IP4 xxx.xxx.xxx.xxx
t=0 0
m=application 9 TCP/MRCPv2 1
a=setup:active
a=connection:new
a=resource:speechrecog
a=cmid:1
m=audio 10000 RTP/AVP 0 8 96 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 L16/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendonly
a=ptime:20
a=mid:1

[2020-08-24 16:39:14] DEBUG[3661]: src/apt_consumer_task.c:135  Wait for Messages [MRCP Client]
[2020-08-24 16:39:14] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:617  Receive SIP Event [nua_i_state] Status 0 INVITE sent [unimrcp-mrcp2]
[2020-08-24 16:39:14] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:555  SIP Call State ASR-0 [calling]
[2020-08-24 16:39:14] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:617  Receive SIP Event [nua_r_invite] Status 200  [unimrcp-mrcp2]
[2020-08-24 16:39:14] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:617  Receive SIP Event [nua_i_state] Status 200  [unimrcp-mrcp2]
[2020-08-24 16:39:14] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:555  SIP Call State ASR-0 [ready]
[2020-08-24 16:39:14] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:441  Remote SDP ASR-0 <new>
v=0
o=I4H_Server 1598287154879 1598287154879 IN IP4 127.0.0.1
s=-
c=IN IP4 127.0.0.1
t=0 0
m=application 8060 TCP/MRCPv2 1
a=setup:passive
a=connection:new
a=channel:9ab35de3-8722-4efa-b2dd-5011006ccde5@speechrecog
a=cmid:1
m=audio 40650 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=recvonly
a=ptime:20
a=mid:1

[2020-08-24 16:39:14] DEBUG[3664]: src/apt_task.c:263  Signal Message to [MRCP Client] [0x7fd654006990;1;0]
[2020-08-24 16:39:14] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:617  Receive SIP Event [nua_i_active] Status 200 Call active [unimrcp-mrcp2]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:335  Process Message [MRCP Client] [0x7fd654006990;1;0]
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_client_session.c:149  Receive Answer ASR-0 <new> [c:1 a:1 v:0] Status 200
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:1136  Modify Control Channel ASR-0 <9ab35de3-8722-4efa-b2dd-5011006ccde5>
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:263  Signal Message to [MRCPv2ConnectionAgent] [0x7fd6480090b0;1;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:1174  Modify Media Termination ASR-0 <9ab35de3-8722-4efa-b2dd-5011006ccde5@rtp-tm>
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:263  Signal Message to [MediaEngine] [0x7fd64c0018d0;1;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_consumer_task.c:135  Wait for Messages [MRCP Client]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_poller_task.c:259  Process Poller Wakeup [MRCPv2ConnectionAgent]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_task.c:335  Process Message [MRCPv2ConnectionAgent] [0x7fd6480090b0;1;0]
[2020-08-24 16:39:14] NOTICE[3662]: src/mrcp_client_connection.c:346  Established TCP/MRCPv2 Connection 127.0.0.1:37222 <-> 127.0.0.1:8060
[2020-08-24 16:39:14] NOTICE[3662]: src/mrcp_client_connection.c:456  Add Control Channel <9ab35de3-8722-4efa-b2dd-5011006ccde5@speechrecog> 127.0.0.1:37222 <-> 127.0.0.1:8060 [1]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_task.c:263  Signal Message to [MRCP Client] [0x7fd65c000900;2;1]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_poller_task.c:249  Wait for Messages [MRCPv2ConnectionAgent]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:335  Process Message [MRCP Client] [0x7fd65c000900;2;1]
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:309  Control Channel Modified ASR-0 <9ab35de3-8722-4efa-b2dd-5011006ccde5@speechrecog>
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_consumer_task.c:135  Wait for Messages [MRCP Client]
[2020-08-24 16:39:14] DEBUG[3663]: src/apt_task.c:335  Process Message [MediaEngine] [0x7fd64c0018d0;1;0]
[2020-08-24 16:39:14] NOTICE[3663]: src/mpf_rtp_stream.c:331  Enable RTP Session xxx.xxx.xxx.xxx:10000
[2020-08-24 16:39:14] DEBUG[3663]: src/mpf_bridge.c:153  Create Null Audio Bridge ASR-0
[2020-08-24 16:39:14] NOTICE[3663]: src/mpf_rtp_stream.c:921  Open RTP Transmitter xxx.xxx.xxx.xxx:10000 -> 127.0.0.1:40650
[2020-08-24 16:39:14] NOTICE[3663]: src/mpf_bridge.c:91  Media Path ASR-0 Source->[PCMU/8000/1]->Bridge->[PCMU/8000/1]->Sink
[2020-08-24 16:39:14] DEBUG[3663]: src/apt_task.c:263  Signal Message to [MRCP Client] [0x7fd648006610;3;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:335  Process Message [MRCP Client] [0x7fd648006610;3;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:980  Media Termination Modified ASR-0 <9ab35de3-8722-4efa-b2dd-5011006ccde5@rtp-tm>
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_client_session.c:453  Raise App Response ASR-0 <9ab35de3-8722-4efa-b2dd-5011006ccde5> [2] SUCCESS [0]
[2020-08-24 16:39:14] DEBUG[3661]: app_synthandrecog.c:232 speech_on_channel_add: (ASR-0) speech_on_channel_add
[2020-08-24 16:39:14] DEBUG[3661]: app_synthandrecog.c:252 speech_on_channel_add: (ASR-0) DTMF generator created
[2020-08-24 16:39:14] NOTICE[3661]: app_synthandrecog.c:271 speech_on_channel_add: (ASR-0) Channel ready codec=PCMU, sample rate=8000
[2020-08-24 16:39:14] DEBUG[3661]: speech_channel.c:109 speech_channel_set_state_unlocked: (ASR-0) CLOSED ==> READY
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_consumer_task.c:135  Wait for Messages [MRCP Client]
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: speech_channel.c:501 speech_channel_open: (ASR-0) channel is ready
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_synthandrecog.c:1504 app_synthandrecog_exec: (ASR-0) Determine grammar type: http://some.server/nuance_package.json?nlptype=config
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_synthandrecog.c:823 recog_channel_load_grammar: (ASR-0) Loading grammar name=grammar-0, type=text/uri-list, data=http://some.server/nuance_package.json?nlptype=config
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: app_synthandrecog.c:1541 app_synthandrecog_exec: (ASR-0) Add prompt: <?xml version='1.0' encoding='UTF-8'?><speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.w3.org/2001/10/synthesis http://www.w3.org/TR/speech-synthesis/synthesis.xsd' xml:lang='de-DE'><p>Hallo ich bin ein Test</p></speak>
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: audio_queue.c:253 audio_queue_create: (TTS-0) Audio queue created
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: speech_channel.c:252 speech_channel_create: Created speech channel: Name=TTS-0, Type=SYNTHESIZER, Codec=PCMU, Rate=8000 on PJSIP/+4911111111111-00000000
[2020-08-24 16:39:14] NOTICE[3676][C-00000001]: src/mrcp_application.c:117  Create MRCP Handle 0x7fd63c02ed68 [unimrcp-mrcp2]
[2020-08-24 16:39:14] NOTICE[3676][C-00000001]: src/mrcp_client_session.c:131  Create Channel TTS-0 <new>
[2020-08-24 16:39:14] DEBUG[3676][C-00000001]: src/apt_task.c:263  Signal Message to [MRCP Client] [0x7fd63c002d20;4;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:335  Process Message [MRCP Client] [0x7fd63c002d20;4;0]
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_client_session.c:385  Receive App Request TTS-0 <new> [2]
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_client.c:697  Add MRCP Handle TTS-0 <new>
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:1277  Dispatch App Request TTS-0 <new> [2]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:263  Signal Message to [MRCPv2ConnectionAgent] [0x7fd64800af60;1;0]
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_client_session.c:717  Add Control Channel TTS-0 <new@speechsynth>
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:743  Add Media Termination TTS-0 <new@media-tm>
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:772  Add Media Termination TTS-0 <new@rtp-tm>
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:263  Signal Message to [MediaEngine] [0x7fd648006610;1;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_consumer_task.c:135  Wait for Messages [MRCP Client]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_poller_task.c:259  Process Poller Wakeup [MRCPv2ConnectionAgent]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_task.c:335  Process Message [MRCPv2ConnectionAgent] [0x7fd64800af60;1;0]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_task.c:263  Signal Message to [MRCP Client] [0x7fd65c001d80;2;0]
[2020-08-24 16:39:14] DEBUG[3662]: src/apt_poller_task.c:249  Wait for Messages [MRCPv2ConnectionAgent]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:335  Process Message [MRCP Client] [0x7fd65c001d80;2;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:292  Control Channel Added TTS-0 <new@speechsynth>
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_consumer_task.c:135  Wait for Messages [MRCP Client]
[2020-08-24 16:39:14] DEBUG[3663]: src/apt_task.c:335  Process Message [MediaEngine] [0x7fd648006610;1;0]
[2020-08-24 16:39:14] DEBUG[3663]: src/mpf_context.c:180  Add Media Context TTS-0
[2020-08-24 16:39:14] DEBUG[3663]: src/apt_task.c:263  Signal Message to [MRCP Client] [0x7fd64c0018d0;3;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/apt_task.c:335  Process Message [MRCP Client] [0x7fd64c0018d0;3;0]
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:939  Media Termination Added TTS-0 <new@media-tm>
[2020-08-24 16:39:14] DEBUG[3661]: src/mrcp_client_session.c:939  Media Termination Added TTS-0 <new@rtp-tm>
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_client_session.c:409  Send Offer TTS-0 <new> [c:1 a:1 v:0] to 127.0.0.1:8060
[2020-08-24 16:39:14] NOTICE[3661]: src/mrcp_sofiasip_client_agent.c:357  Local SDP TTS-0 <new>
v=0
o=Asterisk 0 0 IN IP4 xxx.xxx.xxx.xxx
s=-
c=IN IP4 xxx.xxx.xxx.xxx
t=0 0
m=application 9 TCP/MRCPv2 1
a=setup:active
a=connection:new
a=resource:speechsynth
a=cmid:1
m=audio 10002 RTP/AVP 0 8 96 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 L16/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=recvonly
a=ptime:20
a=mid:1

[2020-08-24 16:39:14] DEBUG[3661]: src/apt_consumer_task.c:135  Wait for Messages [MRCP Client]
[2020-08-24 16:39:14] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:617  Receive SIP Event [nua_i_state] Status 0 INVITE sent [unimrcp-mrcp2]
[2020-08-24 16:39:14] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:555  SIP Call State TTS-0 [calling]
localhost*CLI> 
localhost*CLI> 
localhost*CLI> 
localhost*CLI> 
localhost*CLI> 
localhost*CLI> 
localhost*CLI> 
localhost*CLI> 
[2020-08-24 16:39:46] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:617  Receive SIP Event [nua_r_invite] Status 408 Request Timeout [unimrcp-mrcp2]
[2020-08-24 16:39:46] NOTICE[3664]: src/mrcp_sofiasip_client_agent.c:617  Receive SIP Event [nua_i_state] Status 408 Request Timeout [unimrcp-mrcp2]

Feature request RECOG_RAW()

Feature request.
Add the function "RECOG_RAW()" returning a raw NLSML document (XML)
For self-parsing NLSML.
Similar functions:
RECOG_CONFIDENCE(), RECOG_GRAMMAR(), RECOG_INPUT(), and RECOG_INSTANCE().

Empty recorded audio file from MRCPSynth

Greetings,

I use 'f' option of MRCPSynth to store synthesized audio in file but resulting file is empty. Audio generates correctly and I can hear it.

I am not sure but I think the reason is not writing data in app_mrcpsynth.c. fd is opened at line 567 and then closed at 472 without using.

Example:
same => n, MRCPSynth("Testing",f=synthtestrecord)

Everything works in asterisk-unimrcp-1.3.0

Versions:
Asterisk 11.22.0
unimrcp-1.3.0
asterisk-unimrcp-1.3.1

G.711 20ms packetized TTS streams on outbound channels are chopped into 10ms on Asterisk 13

Synopsis

Any currently available version of asterisk-unimrcp capable of being installed with Asterisk 13 produces RTP that violates the G.711 standard of 20ms packetization when TTS is sent on an outbound stream.

Asterisk/asterisk-unimrcp takes valid 20ms audio packets received from the TTS server and transcodes them into 10ms packets before sending them out.

Versions Tested

Asterisk asterisk-unimrcp SIP Channel Driver Symptoms
asterisk-1.8.13.0 asterisk-unimrcp-1.3.1 chan_sip Not affected
asterisk-13.19.1 asterisk-unimrcp-1.3.1 chan_sip Affected
asterisk-13.19.1 asterisk-unimrcp-1.5.2 chan_sip Affected
asterisk-13.19.1 asterisk-unimrcp-1.5.2 chan_pjsip Not affected

Requirements to Reproduce

  • 10ms packetization occurs with either MRCPSynth() or SynthAndRecog() only during TTS playback, not audio file. (If SynthAndRecog() plays an audio file immediately following the TTS the audio stream, that audio file is streamed with proper 20ms packetization.)
  • Occurs invoking one of the above 2 applications on an outbound leg of a call - either a pure outbound call (An Asterisk Originate action) or a bridged call using Dial(). Does not occur on an inbound into asterisk
  • Occurs with Asterisk 13, but only during asterisk-unimrcp involvement for TTS.
  • Occurs only with the deprecated chan_sip channel driver; switching to chan_pjsip resolves the issue.

TTS Server -> Asterisk/asterisk-unimrcp Audio Stream

TTS Server to Asterisk/asterisk-unimrcp Audio Stream: Graph of negligible jitter

TTS Server to Asterisk/asterisk-unimrcp Audio Stream: Packets

Above: TTS Server -> Asterisk/asterisk-unimrcp Audio Stream with proper 20ms packets and negligible sub-millisecond jitter.

Same Audio Stream transcoded and sent-out by Asterisk/asterisk-unimrcp

Asterisk/asterisk-unimrcp to Outbound Audio Stream: Graph of Extreme Jitter

Asterisk/asterisk-unimrcp to Outbound Audio Stream: Packets

Above: Asterisk/asterisk-unimrcp -> Outbound Audio Stream transitioning to improper 10ms packets and high jitter when TTS is sent out.

Configuration

mrcp.conf

[general]
default-tts-profile = tts-mrcp1
log-level = DEBUG
max-connection-count = 100
offer-new-connection = 1
; rx-buffer-size = 1024
; tx-buffer-size = 1024
request-timeout = 1000

[tts-mrcp1]
version = 1
server-port = 554
server-ip = tts.myserver.com
rtp-ip = 192.168.1.2;
rtp-port-min = 40000
rtp-port-max = 65535
speechsynth = synthesizer

Note: I've also tried with the following settings appended to the [tts-mrcp1] section, with no change in behavior

; === Jitter buffer settings ===
playout-delay = 0
max-playout-delay = 0
; === RTP settings ===
ptime = 20
codecs = PCMU telephone-event/101/8000

extensions.conf

Inbound calls are configured to route to [corrupted-audio-reproducible-case]

[corrupted-audio-reproducible-case]
exten => _X.,1,Answer
same => n,Wait(1)
; The following TTS media to the Caller is received and proxied in proper packets of ptime 20ms samples (size 160).
same => n,MRCPSynth(Hello Caller.  Please wait while we attempt to connect you to the Recipient.,p=default)
same => n,Set(outbound_proxy_ip=192.168.1.3) ; customize this
same => n,Set(recipient_number=15551231234) ; customize this
same => n,Set(dial_timeout=120)
same => n,Set(call_time_limit=28800000)
same => n,Set(recipient_welcome_macro=recipient-whisper)
same => n,Dial(SIP/${outbound_proxy_ip}/${recipient_number},${dial_timeout},L(${call_time_limit})M(${recipient_welcome_macro}))

[macro-recipient-whisper]
exten => s,1,NoOp(Note: Playing welcome whisper message to the recipient)
same => n,Wait(1)
; The following TTS media to the Recipient is received from the TTS server in ptime 20ms samples (size 160),
; but is unexpectedly transcoded into ptime 10ms samples (size 80) upon retransmission.
same => n,MRCPSynth(Hello Recipient.  We are connecting you to the Caller now.  Enjoy your conversation.,p=default)
same => n,NoOp(Note: Finished playing welcome whisper message to the recipient)

Notes

With verbose RTP debugging in Asterisk enabled (sudo asterisk -rx 'rtp set debug on'), it is clear to see that Asterisk transitions from ptime 20ms packets (size 160) to ptime 10ms packets (size 80) while proxying/transcoding TTS:

[...]

[2019-10-09 13:06:44.888] VERBOSE[25240][C-00000007] res_rtp_asterisk.c: Sent RTP packet to 192.168.1.3:39348 (type 00, seq 022490, ts 059520, len 000160)
[2019-10-09 13:06:44.908] VERBOSE[25240][C-00000007] res_rtp_asterisk.c: Sent RTP packet to 192.168.1.3:39348 (type 00, seq 022491, ts 059680, len 000160)
[2019-10-09 13:06:44.928] VERBOSE[25240][C-00000007] res_rtp_asterisk.c: Sent RTP packet to 192.168.1.3:39348 (type 00, seq 022492, ts 059840, len 000160)
[2019-10-09 13:06:44.948] VERBOSE[25240][C-00000007] res_rtp_asterisk.c: Sent RTP packet to 192.168.1.3:39348 (type 00, seq 022493, ts 060000, len 000160)
[2019-10-09 13:06:44.968] VERBOSE[25240][C-00000007] res_rtp_asterisk.c: Sent RTP packet to 192.168.1.3:39348 (type 00, seq 022494, ts 060160, len 000160)
[2019-10-09 13:06:45.411] VERBOSE[25240][C-00000007] app_dial.c: SIP/192.168.1.3-0000000c answered SIP/foobox-0000000b
[2019-10-09 13:06:45.411] VERBOSE[25240][C-00000007] pbx.c: Executing [s@macro-recipient-whisper:1] NoOp("SIP/192.168.1.3-0000000c", "Note: Playing welcome whisper message to the recipient"
) in new stack
[2019-10-09 13:06:45.411] VERBOSE[25240][C-00000007] pbx.c: Executing [s@macro-recipient-whisper:2] Wait("SIP/192.168.1.3-0000000c", "1") in new stack
[2019-10-09 13:06:46.411] VERBOSE[25240][C-00000007] pbx.c: Executing [s@macro-recipient-whisper:3] MRCPSynth("SIP/192.168.1.3-0000000c", "Hello Recipient. We are connecting you to the Caller now. Enjoy your conversation.,p=default") in new stack

[...]

[2019-10-09 13:06:46.433] NOTICE[22592] src/rtsp_client.c: Receive RTSP Data 192.168.1.2:44926 <-> 192.168.1.6:554 [131 bytes]
RTSP/1.0 200 OK
CSeq: 2
Session: 3264602811
Content-Type: application/mrcp
Content-Length: 30

MRCP/1.0 1 200 IN-PROGRESS

[2019-10-09 13:06:46.433] NOTICE[22592] src/rtsp_client.c: Pop In-Progress RTSP Request 0x7fe4e400d6c8 CSeq:2
[2019-10-09 13:06:46.433] DEBUG[22592] src/apt_task.c: Signal Message to [MRCP Client] [0x7fe4d4003c60;1;2]
[2019-10-09 13:06:46.433] DEBUG[22592] src/apt_poller_task.c: Wait for Messages [tts-mrcp1]
[2019-10-09 13:06:46.433] DEBUG[22589] src/apt_task.c: Process Message [MRCP Client] [0x7fe4d4003c60;1;2]
[2019-10-09 13:06:46.433] NOTICE[22589] src/mrcp_client_session.c: Raise App MRCP Response TTS-12 <3264602811>
[2019-10-09 13:06:46.433] DEBUG[22589] app_mrcpsynth.c: (TTS-12) REQUEST IN PROGRESS
[2019-10-09 13:06:46.433] DEBUG[22589] speech_channel.c: (TTS-12) READY ==> PROCESSING
[2019-10-09 13:06:46.433] DEBUG[22589] src/apt_consumer_task.c: Wait for Messages [MRCP Client]
[2019-10-09 13:06:46.468] VERBOSE[22591] res_rtp_asterisk.c: Sent RTP packet to 192.168.1.3:39348 (type 00, seq 022495, ts 184216, len 000080)
[2019-10-09 13:06:46.478] VERBOSE[22591] res_rtp_asterisk.c: Sent RTP packet to 192.168.1.3:39348 (type 00, seq 022496, ts 184296, len 000080)
[2019-10-09 13:06:46.488] VERBOSE[22591] res_rtp_asterisk.c: Sent RTP packet to 192.168.1.3:39348 (type 00, seq 022497, ts 184376, len 000080)
[2019-10-09 13:06:46.498] VERBOSE[22591] res_rtp_asterisk.c: Sent RTP packet to 192.168.1.3:39348 (type 00, seq 022498, ts 184456, len 000080)
[2019-10-09 13:06:46.508] VERBOSE[22591] res_rtp_asterisk.c: Sent RTP packet to 192.168.1.3:39348 (type 00, seq 022499, ts 184536, len 000080)

[...]

app_unimrcp (v 1.7.0): No timeout and channel freeze if INVITE transaction not completed after MRCP server responds with 100 TRYING

Hi,

as I am looking into the resilience of the UniMRCP Asterisk module against network errors, I found out that one can completely freeze a PJSIP channel if the MRCP server does not answer after responding 100 TRYING when establishing the SIP session.

MRCP Client                MRCP Server
     |                          |      
     |                          |      
     |---------INVITE --------->|      
     |                          |      
     |<--------TRYING-----------|      
     |                          |      
     |                          |      

After waiting over a minute for the timeout, nothing happened so I hanged up the call.

Note that this is a different case than #46 (where the server does not even reply with 100 TRYING).

[2020-08-26 07:27:46] NOTICE[62]: src/mrcp_sofiasip_client_agent.c:357  Local SDP TTS-0 <new>
v=0
o=Asterisk 0 0 IN IP4 xxx.xxx.xxx.xxx
s=-
c=IN IP4 xxx.xxx.xxx.xxx
t=0 0
m=application 9 TCP/MRCPv2 1
a=setup:active
a=connection:new
a=resource:speechsynth
a=cmid:1
m=audio 10002 RTP/AVP 0 8 96 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 L16/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=recvonly
a=ptime:20
a=mid:1

[2020-08-26 07:27:46] DEBUG[62]: src/apt_consumer_task.c:135  Wait for Messages [MRCP Client]
[2020-08-26 07:27:46] NOTICE[65]: src/mrcp_sofiasip_client_agent.c:617  Receive SIP Event [nua_i_state] Status 0 INVITE sent [unimrcp-mrcp2]
[2020-08-26 07:27:46] NOTICE[65]: src/mrcp_sofiasip_client_agent.c:555  SIP Call State TTS-0 [calling]
[2020-08-26 07:28:05] DEBUG[94]: threadpool.c:1169 worker_idle: Worker thread idle timeout reached. Dying.
[2020-08-26 07:28:05] DEBUG[7]: threadpool.c:1028 worker_thread_destroy: Destroying worker thread 22
[2020-08-26 07:28:14] DEBUG[47]: res_pjsip_registrar.c:1279 check_expiration_thread: Woke up at 1598426894  Interval: 30
[2020-08-26 07:28:14] DEBUG[47]: res_pjsip_registrar.c:1286 check_expiration_thread: Expiring 0 contacts
[2020-08-26 07:28:35] DEBUG[96][C-00000001]: audiohook.c:275 audiohook_read_frame_both: Read factory 0x555e099a6878 and write factory 0x555e099a72b8 both fail to provide 160 samples
[2020-08-26 07:28:40] DEBUG[90]: threadpool.c:1169 worker_idle: Worker thread idle timeout reached. Dying.
[2020-08-26 07:28:40] DEBUG[91]: threadpool.c:1169 worker_idle: Worker thread idle timeout reached. Dying.
[2020-08-26 07:28:40] DEBUG[93]: threadpool.c:1169 worker_idle: Worker thread idle timeout reached. Dying.
[2020-08-26 07:28:40] DEBUG[92]: threadpool.c:1169 worker_idle: Worker thread idle timeout reached. Dying.
[2020-08-26 07:28:40] DEBUG[33]: threadpool.c:1028 worker_thread_destroy: Destroying worker thread 18
[2020-08-26 07:28:40] DEBUG[33]: threadpool.c:1028 worker_thread_destroy: Destroying worker thread 19
[2020-08-26 07:28:40] DEBUG[33]: threadpool.c:1028 worker_thread_destroy: Destroying worker thread 21
[2020-08-26 07:28:40] DEBUG[33]: threadpool.c:1028 worker_thread_destroy: Destroying worker thread 20
[2020-08-26 07:28:44] DEBUG[47]: res_pjsip_registrar.c:1279 check_expiration_thread: Woke up at 1598426924  Interval: 30
[2020-08-26 07:28:44] DEBUG[47]: res_pjsip_registrar.c:1286 check_expiration_thread: Expiring 0 contacts
[2020-08-26 07:28:45] DEBUG[89]: threadpool.c:1169 worker_idle: Worker thread idle timeout reached. Dying.
[2020-08-26 07:28:45] DEBUG[33]: threadpool.c:1028 worker_thread_destroy: Destroying worker thread 17
[2020-08-26 07:29:14] DEBUG[47]: res_pjsip_registrar.c:1279 check_expiration_thread: Woke up at 1598426954  Interval: 30
[2020-08-26 07:29:14] DEBUG[47]: res_pjsip_registrar.c:1286 check_expiration_thread: Expiring 0 contacts
<--- Received SIP request (443 bytes) from UDP:xxx.xxx.xxx.xxx:63833 --->
BYE sip:[email protected]:5061 SIP/2.0
Via: SIP/2.0/UDP xxx.xxx.xxx.xxx:63833;rport;branch=z9hG4bKPjqVqCLfoWnEp53M070eSnnT6LCGmb29em
Max-Forwards: 70
From: <sip:[email protected];ob>;tag=A3OhTO3MsfQ7ejWA0OEmz.EjQ7AcwZvU
To: "Anonymous" <sip:[email protected]>;tag=71027622-f20e-45aa-8cfe-c5f7aa9ba1cb
Call-ID: f56c23ee-2cac-4a7f-bbaa-eac9992bf9b8
CSeq: 29426 BYE
User-Agent: Telephone 1.5
Content-Length:  0


[2020-08-26 07:29:19] DEBUG[35]: res_pjsip/pjsip_distributor.c:503 distributor: Searching for serializer associated with dialog dlg0x7f1a34009378 for Request msg BYE/cseq=29426 (rdata0x7f1a38002eb8)
[2020-08-26 07:29:19] DEBUG[35]: res_pjsip/pjsip_distributor.c:511 distributor: Found serializer pjsip/outsess/+4911111111111-00000058 associated with dialog dlg0x7f1a34009378
[2020-08-26 07:29:19] DEBUG[33]: threadpool.c:536 grow: Increasing threadpool pjsip/pool's size by 5
[2020-08-26 07:29:19] DEBUG[97]: netsock2.c:170 ast_sockaddr_split_hostport: Splitting 'xxx.xxx.xxx.xxx' into...
[2020-08-26 07:29:19] DEBUG[97]: netsock2.c:224 ast_sockaddr_split_hostport: ...host 'xxx.xxx.xxx.xxx' and port ''.
<--- Transmitting SIP response (427 bytes) to UDP:xxx.xxx.xxx.xxx:63833 --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP xxx.xxx.xxx.xxx:63833;rport=63833;received=94.223.85.136;branch=z9hG4bKPjqVqCLfoWnEp53M070eSnnT6LCGmb29em
Call-ID: f56c23ee-2cac-4a7f-bbaa-eac9992bf9b8
From: <sip:[email protected];ob>;tag=A3OhTO3MsfQ7ejWA0OEmz.EjQ7AcwZvU
To: "Anonymous" <sip:[email protected]>;tag=71027622-f20e-45aa-8cfe-c5f7aa9ba1cb
CSeq: 29426 BYE
Server: Asterisk PBX 17.4.0
Content-Length:  0


[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3507 __print_debug_details: Function session_inv_on_tsx_state_changed called on event TSX_STATE
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3521 __print_debug_details: The state change pertains to the endpoint '+4911111111111(PJSIP/+4911111111111-00000000)'
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3529 __print_debug_details: The inv session does NOT have an invite_tsx
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3532 __print_debug_details: The UAS BYE transaction involved in this state change is 0x7f1a5c037cc8
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3536 __print_debug_details: The current transaction state is Completed
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3538 __print_debug_details: The transaction state change event is TX_MSG
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3543 __print_debug_details: The current inv state is CONFIRMED
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3507 __print_debug_details: Function session_inv_on_state_changed called on event TSX_STATE
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3521 __print_debug_details: The state change pertains to the endpoint '+4911111111111(PJSIP/+4911111111111-00000000)'
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3529 __print_debug_details: The inv session does NOT have an invite_tsx
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3541 __print_debug_details: There is no transaction involved in this state change
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3543 __print_debug_details: The current inv state is DISCONNCTD
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3787 session_inv_on_state_changed: Source of transaction state change is RX_MSG
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3620 handle_incoming: Received request
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3553 handle_incoming_request: Method is BYE
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3507 __print_debug_details: Function session_inv_on_tsx_state_changed called on event TSX_STATE
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3521 __print_debug_details: The state change pertains to the endpoint '+4911111111111(PJSIP/+4911111111111-00000000)'
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3529 __print_debug_details: The inv session does NOT have an invite_tsx
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3532 __print_debug_details: The UAS BYE transaction involved in this state change is 0x7f1a5c037cc8
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3536 __print_debug_details: The current transaction state is Completed
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3538 __print_debug_details: The transaction state change event is RX_MSG
[2020-08-26 07:29:19] DEBUG[97]: res_pjsip_session.c:3543 __print_debug_details: The current inv state is DISCONNCTD
[2020-08-26 07:29:19] DEBUG[31]: manager.c:6123 match_filter: Examining AMI event:
Event: HangupRequest
Privilege: call,all
Channel: PJSIP/+4911111111111-00000000
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: <unknown>
CallerIDName: ??????????
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: en
AccountCode: 
Context: from-internal
Exten: 1
Priority: 5
Uniqueid: 1598426860.0
Linkedid: 1598426860.0
Cause: 16


[2020-08-26 07:29:19] DEBUG[88]: manager.c:6123 match_filter: Examining AMI event:
Event: HangupRequest
Privilege: call,all
Channel: PJSIP/+4911111111111-00000000
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: <unknown>
CallerIDName: ??????????
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: en
AccountCode: 
Context: from-internal
Exten: 1
Priority: 5
Uniqueid: 1598426860.0
Linkedid: 1598426860.0
Cause: 16


[2020-08-26 07:29:25] DEBUG[96][C-00000001]: audiohook.c:275 audiohook_read_frame_both: Read factory 0x555e099a6878 and write factory 0x555e099a72b8 both fail to provide 160 samples

After hanging up the call, the PJSIP channel is left active waiting on the SynthAndRecog application to finish. As far as I know, the only way to close it is to restart Asterisk, channel request hangup does not work.

localhost*CLI> channel request hangup PJSIP/+4911111111111-00000000
localhost*CLI> pjsip show channels

  Channel:  <ChannelId........................................>  <State.....>  <Time.....>
      Exten: <DialedExten.............>  CLCID: <ConnectedLineCID.......>
==========================================================================================

  Channel: PJSIP/+4911111111111-00000000/SynthAndRecog           Up            00:01:52   
      Exten: 1                           CLCID: "" <>


Objects found: 1

deadlock on latest release

Im experiencing a deadlock with the latest release 1.5

Channel Context Extension Prio State Application Data CallerID Duration Accountcode PeerAccount BridgeID
SIP/QUALITY1-0000005 functions FUNC_DIGITE_O_DI 5 Up MRCPRecog "/usr/local/unimrcp/data/ 912732278 07:26:42 QUALITY1

attached traces I will compile it with better debug options and add them

core-asterisk-running-2017-09-07T16-59-48+0200-brief.txt
core-asterisk-running-2017-09-07T16-59-48+0200-full.txt
core-asterisk-running-2017-09-07T16-59-48+0200-locks.txt
core-asterisk-running-2017-09-07T16-59-48+0200-thread1.txt

The RTP downstream of TTS is blocked by NAT

I have tested ASR and TTS functionity today,and my asterisk and mrcp server were all installed behind NAT, asterisk communicated with mrcp server remotely through the internet.I have setup the local IP and external IP of asterisk-unimrcp and mrcp server(all for sip and rtp), and mrcp server also setup the static NAT to pass through the NAT.ASR functionity worked fine but TTS functionity failed,i can hear nothing at user side.
I found that mrcp server had sent out the RTP packets but asterisk-unimrcp can't receive these RTP packets,but sip and mrcp signals worked fine at TTS case.The RTP downstream of TTS was blocked by NAT.
I think this was caused by the unidirectionality of TTS RTP stream.I think this can be solved by setup a static NAT at asterisk side, or put the asterisk server into the DMZ of router,or a ICE solution,but unfortunately these solutions are not allowed by my requirements.
Any other solution(s) to solve this issue?

unimrcp dont send "BYE"

Our dialplan in asterisk:

[test]
exten => 1000,1,NoOp(Test)
same => n,SynthAndRecog("This is a test. Press 1 for option A, Press 2 for option 2", "http://localhost/grm/hotword_void.bnf,http://localhost/grm/dtmf.abnf",sit=1&nit=30000&t=30000&spl=es&ct=1.0)
same => n,NoOp("FINAL OQ MRCP STATUS: "${RECOG_RESULT} - ${RECOG_INSTANCE()})
same = n,MRCPSynth("You press ${RECOG_INSTANCE()}",v=aurora)
same => n(fin),Hangup()
exten => h,1,Hangup

We have experienced problems with the calls when it hangup, leaving "channels" in the asterisk despite hanging up the call, until we have put this last line (exten => h,1,Hangup).

[2021-07-13 10:36:17] WARNING[8426][C-00000004] channel.c: Exceptionally long voice queue length queuing to Local/662211917@from-internal-00000002;1

Is this normal in unimrcp? Why our installation of unimrcd dont manage properly the calls with hangup result?

ERROR[17116][C-00029668] app_mrcprecog.c: (ASR-759827) Recognition terminated prematurely

Hi all!

I have one server with Asterisk with ASR service Verbio, in this environment I have a high flow of calls and at peak times I receive the log below and the recognition does not start.

[Jul 30 13:40:50] WARNING[17116][C-00029668] audio_queue.c: (ASR-759827) Audio queue overflow!
[Jul 30 13:40:50] ERROR[17116][C-00029668] app_mrcprecog.c: (ASR-759827) Recognition terminated prematurely
[Jul 30 13:40:50] WARNING[17116][C-00029668] app_mrcprecog.c: (ASR-759827) Unable to retrieve result
[Jul 30 13:40:51] NOTICE[17116][C-00029668] app_mrcprecog.c: MRCPRecog() exiting status: ERROR on PJSIP/sbc_endpoint-00029668

Any idea what it might be?

Best Regards!

Asterisk (in FreePBX environment) crashes

ISSUE:
When I install the packet asterisk-app-unimrcp my FreePBX (an Asterisk's based box) will be unstable: after a restart the asterisk process crasches continuosly
I annex the printscreen of my last attempt to install UniMCRP software.
I annex also the log file /var/log/asterisk/full

Please help me, thank

Regard
B. Cerri

troubleshooting 2.txt
full.zip

Grammar load failure Asterisk 13 Centos

Hi I have successfully installed unimrcp client,server and unimrcp asterisk on my new centOS 7 server with Asterisk but when I try to use speech recognition I can not perform because it says that grammar load failure. Here is my dialplan given below:

exten => 1235,1,Answer
exten => 1235,n,MRCPRecog(builtin:grammar/number,p=default&t=5000&b=1&ct=0.7&spl=en-US&f=hello-world)
same=>n,Verbose(1, ${RECOGSTATUS}, ${RECOG_COMPLETION_CAUSE},${RECOG_RESULT})
exten => 1235,Hangup

and the error what I receive is :

builtin:grammar/number
[Jun 10 08:34:07] NOTICE[2440]: src/mrcp_client_connection.c:633 : Receive MRCPv2 Data 10.0.0.117:48704 <-> 10.0.0.117:1544 [125 bytes]
MRCP/2.0 125 1 406 COMPLETE
Channel-Identifier: 6b2df9bddc39466b@speechrecog
Completion-Cause: 004 grammar-load-failure


[Jun 10 08:34:07] NOTICE[2439]: src/mrcp_client_session.c:498 : Raise App MRCP Response ASR-10 <6b2df9bddc39466b>
[Jun 10 08:34:07] ERROR[2755][C-00000010]: app_mrcprecog.c:1304 app_recog_exec: (ASR-10) Unable to start recognition

make on ubuntu 14.04 fatal error: asterisk/format.h: No such file or directory

the output of ./configure --with-asterisk-version=11.7.0 is good:

****************************** REPORT ******************************

Asterisk version.............. : 11.7.0
UniMRCP version............... : 1.4.0
UniMRCP modules version....... : 1.4.0

Compiler...................... : gcc
Compiler flags................ : -g -O2
Preprocessor definitions...... :
Linker flags.................. :

Modules install path...........: /usr/lib/asterisk/modules
Configuration install path.....: /etc/asterisk
XML doc install path...........: /var/lib/asterisk/documentation/thirdparty

Speech resource module.........: yes
Application module.............: yes

********************************************************************

but make give the folowing error:


Making all in res-speech-unimrcp
make[1]: Entering directory `/root/asterisk-unimrcp/res-speech-unimrcp'
  CC       res_speech_unimrcp.lo
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:85:29: fatal error: asterisk/format.h: No such file or directory
 #include "asterisk/format.h"
                             ^
compilation terminated.
make[1]: *** [res_speech_unimrcp.lo] Error 1
make[1]: Leaving directory `/root/asterisk-unimrcp/res-speech-unimrcp'
make: *** [all-recursive] Error 1

Add support for custom dir layout

Greetings,
I am a user of Alpine Linux
I compiled asterisk, unimrcp and asterisk-unimrcp from source. Unimrcp has support for dir layout configuration. I edited config.layout/dirlayout.xml and add LSB layout configuration, then configure with --prefix=/usr --enable-layout=lsb. Everything work flawlessly. But asterisk-unimrcp module pays no attention to these settings, and cannot load config unimrcpclient.xml. After some digging, I realized that the module uses apt_default_dir_layout_create function and without patching code no chance to get what I want.

My current layout is:

var value
confdir /etc/unimrcp
plugindir /usr/lib/unimrcp
logdir /var/log
datadir /usr/share/unimrcp
vardir /var/run/unimrcp

P.S. Unfortunately Alpine Linux build system prevents to isntall packages in other places than /{,usr}, e.g. /opt/unimrcp or /usr/local/unimrcp. I guess this is due to the fact that the Alpine is very simple and built on musl.

Issue with MRCPRecog function - Unimrcp

We are using the MRCPRecog function for speech recognition. We have a use case where on the same call we are taking speech 2 times.
It produces the correct result for one statement for the first time.
In the same call, if the user does not speak anything then also it will give a result of the previous statement. Here, no input result is expected when the user does not speak anything.
Also, we are getting the "OK" status in the RECOGSTATUS variable for the second time.

Attached the Logs for your reference.
speech_text.txt

SPEECH_CHANNEL_TIMEOUT_USEC is not enough to load large grammars

The process of loading a large grammar takes place with the error "Unable to load grammar"

For 16mb grammar, 30 seconds of the timeout for downloading specified in SPEECH_CHANNEL_TIMEOUT_USEC is not sufficient.

Please add the feature, using the config, set the value for SPEECH_CHANNEL_TIMEOUT_USEC

channel freeze

The problem seems to be related to the re-creation of Handle ASR-99752. No regularities were found in the appearance of this problem. the problem appears on different versions of asterisk and unimrcp-asterisk. in the dump attachment.
Desktop.zip

[Aug 5 10:39:50] NOTICE[3774][C-00004330] src/mrcp_client_session.c: Create Channel ASR-99752
[Aug 5 10:39:50] NOTICE[17137] src/mrcp_sofiasip_client_agent.c: Local SDP ASR-99752
[Aug 5 10:39:50] NOTICE[17141] src/mrcp_sofiasip_client_agent.c: Remote SDP ASR-99752
[Aug 5 10:39:55] NOTICE[17137] src/mrcp_application.c: Destroy MRCP Handle ASR-99752
[Aug 5 10:39:56] NOTICE[3774][C-00004330] src/mrcp_client_session.c: Create Channel ASR-99752
[Aug 5 10:39:56] NOTICE[17137] src/mrcp_sofiasip_client_agent.c: Local SDP ASR-99752
[Aug 5 10:39:56] NOTICE[17141] src/mrcp_sofiasip_client_agent.c: Remote SDP ASR-99752
[Aug 5 10:40:05] NOTICE[17137] src/mrcp_application.c: Destroy MRCP Handle ASR-99752
[Aug 5 10:40:27] NOTICE[3774][C-00004330] src/mrcp_client_session.c: Create Channel ASR-99752
[Aug 5 10:40:27] NOTICE[17137] src/mrcp_sofiasip_client_agent.c: Local SDP ASR-99752
[Aug 5 10:40:27] NOTICE[17141] src/mrcp_sofiasip_client_agent.c: Remote SDP ASR-99752
[Aug 5 10:45:22] NOTICE[17141] src/mrcp_sofiasip_client_agent.c: Remote SDP ASR-99752 <10a6e136d398425c>
[Aug 5 10:50:19] NOTICE[17141] src/mrcp_sofiasip_client_agent.c: Remote SDP ASR-99752 <10a6e136d398425c>
[Aug 5 10:55:18] NOTICE[17141] src/mrcp_sofiasip_client_agent.c: Remote SDP ASR-99752 <10a6e136d398425c>
[Aug 5 11:00:19] NOTICE[17141] src/mrcp_sofiasip_client_agent.c: Remote SDP ASR-99752 <10a6e136d398425c>
[Aug 5 11:05:15] NOTICE[17141] src/mrcp_sofiasip_client_agent.c: Remote SDP ASR-99752 <10a6e136d398425c>

Crash on Failure on SpeechEngine

Im having crahes easy to reproduce when the Speech engine crashes or stops.

Ubuntu 16.04, Asterisk 13.16, Verbio Engine

usage example:
exten=> _123,1,Answer()
exten=> _123,2,SpeechCreate(unimrcp)
exten=> _123,3,SpeechLoadGrammar(grammar,/usr/local/unimrcp/data/grammar.xml)
exten=> _123,4,SpeechActivateGrammar(grammar)
exten=> _123,5,SpeechBackground(MYSOUND},2)
exten=> _123,6,SpeechDeactivateGrammar(grammar)
exten=> _123,7,SpeechDestroy()

When I stop the Verbio Server I get a crash of unimrcp
Attached btfull of the core dump, this is easy to reproduce having

btfull.txt

Variable RECOG_COMPLETION_CAUSE not initialized when MRCP rejects MRCPRecog due to grammar empty

The scenario we are encountering, the Recognition fails and we do not receive a RECOG_RESULT. In this situation, UniMRCP is seeing the 005 completion cause. However, it never passes it through to us via AMI. Since we see it in other calls (RECOG_RESULT set), I suspect the logic may not be setting RECOG_COMPLETION_CAUSE in this flow. Would it be possible to modify it to give us this completion cause? That way we can pass along the failure (completion-cause) to the user without having to diagnose the Asterisk logs.

Below is the debug information from Asterisk for the failure. It shows the Recognition failed with a status of 407 and completion cause of 005. This completion cause is not being passed through to the RECOG_COMPLETION_CAUSE variable.

[11/08 10:47:27.515] DEBUG[1365] src/apt_task.c: Process Message [MRCP Client] [0x7f1c580008c0;2;3]
[11/08 10:47:27.516] DEBUG[1365] app_mrcprecog.c: (ASR-0) RECOGNIZE failed: status = 407, completion-cause = 005
[11/08 10:47:27.516] DEBUG[1365] speech_channel.c: (ASR-0) READY ==> ERROR
[11/08 10:47:27.516] DEBUG[1365] src/apt_consumer_task.c: Wait for Messages [MRCP Client]
[11/08 10:47:27.516] DEBUG[1674][C-00000000] speech_channel.c: Destroy speech channel: Name=ASR-0, Type=RECOGNIZER, Codec=PCMU, Rate=8000
[11/08 10:47:27.516] DEBUG[1674][C-00000000] src/apt_task.c: Signal Message to [MRCP Client] [0x7f1c78006640;4;0]
[11/08 10:47:27.516] DEBUG[1674][C-00000000] speech_channel.c: (ASR-0) Waiting for MRCP session to terminate
[11/08 10:47:27.516] DEBUG[1322] manager.c: Examining AMI event:
Event: VarSet^M
Privilege: dialplan,all^M
Channel: PJSIP/1002-00000000^M
ChannelState: 6^M
ChannelStateDesc: Up^M
CallerIDNum: 1002^M
CallerIDName: XYZ^M
ConnectedLineNum: ^M
ConnectedLineName: ^M
Language: en^M
AccountCode: 6^M
Context: IS^M
Exten: 2093^M
Priority: 6^M
Uniqueid: 1510159646.0^M
Linkedid: 1510159646.0^M
Variable: RECOG_SID^M
Value: 1^M
^M

[11/08 10:47:27.516] DEBUG[1365] src/apt_task.c: Process Message [MRCP Client] [0x7f1c78006640;4;0]
[11/08 10:47:27.516] DEBUG[1365] src/mrcp_client_session.c: Dispatch App Request ASR-0 <1> [1]
[11/08 10:47:27.516] DEBUG[1365] src/mrcp_client_session.c: Remove Control Channel ASR-0 <1>
[11/08 10:47:27.516] DEBUG[1365] src/apt_task.c: Signal Message to [MRCPv2ConnectionAgent] [0x1a42e30;1;0]
[11/08 10:47:27.516] DEBUG[1365] src/mrcp_client_session.c: Subtract Media Termination ASR-0 1@media-tm
[11/08 10:47:27.516] DEBUG[1365] src/mrcp_client_session.c: Subtract Media Termination ASR-0 1@rtp-tm
[11/08 10:47:27.516] DEBUG[1365] src/apt_task.c: Signal Message to [MediaEngine] [0x2f6e830;1;0]
[11/08 10:47:27.516] DEBUG[1365] src/apt_consumer_task.c: Wait for Messages [MRCP Client]
[11/08 10:47:27.516] DEBUG[1366] src/apt_poller_task.c: Process Poller Wakeup [MRCPv2ConnectionAgent]
[11/08 10:47:27.516] DEBUG[1366] src/apt_task.c: Process Message [MRCPv2ConnectionAgent] [0x1a42e30;1;0]
[11/08 10:47:27.516] DEBUG[1366] src/apt_task.c: Signal Message to [MRCP Client] [0x7f1c580008c0;2;2]
[11/08 10:47:27.516] DEBUG[1366] src/apt_poller_task.c: Wait for Messages [MRCPv2ConnectionAgent]
[11/08 10:47:27.516] DEBUG[1365] src/apt_task.c: Process Message [MRCP Client] [0x7f1c580008c0;2;2]
[11/08 10:47:27.516] DEBUG[1365] src/mrcp_client_session.c: Control Channel Removed ASR-0 1@speechrecog
[11/08 10:47:27.516] DEBUG[1365] src/apt_consumer_task.c: Wait for Messages [MRCP Client]
[11/08 10:47:27.522] DEBUG[1367] src/apt_task.c: Process Message [MediaEngine] [0x2f6e830;1;0]
[11/08 10:47:27.522] DEBUG[1367] src/mpf_bridge.c: Destroy Audio Bridge ASR-0
[11/08 10:47:27.522] DEBUG[1367] src/mpf_context.c: Remove Media Context ASR-0
[11/08 10:47:27.522] DEBUG[1367] src/apt_task.c: Signal Message to [MRCP Client] [0x1e1a270;3;0]
[11/08 10:47:27.522] DEBUG[1365] src/apt_task.c: Process Message [MRCP Client] [0x1e1a270;3;0]
[11/08 10:47:27.522] DEBUG[1365] src/mrcp_client_session.c: Media Termination Subtracted ASR-0 1@media-tm
[11/08 10:47:27.522] DEBUG[1365] src/mrcp_client_session.c: Media Termination Subtracted ASR-0 1@rtp-tm
[11/08 10:47:27.522] DEBUG[1365] src/apt_consumer_task.c: Wait for Messages [MRCP Client]
[11/08 10:47:27.618] DEBUG[1368] src/apt_task.c: Signal Message to [MRCP Client] [0x7f1c64001430;1;1]
[11/08 10:47:27.618] DEBUG[1365] src/apt_task.c: Process Message [MRCP Client] [0x7f1c64001430;1;1]
[11/08 10:47:27.618] DEBUG[1365] app_mrcprecog.c: (ASR-0) speech_on_session_terminate
[11/08 10:47:27.618] DEBUG[1365] app_mrcprecog.c: (ASR-0) DTMF generator destroyed
[11/08 10:47:27.618] DEBUG[1365] app_mrcprecog.c: (ASR-0) Destroying MRCP session
[11/08 10:47:27.618] DEBUG[1365] speech_channel.c: (ASR-0) ERROR ==> CLOSED
[11/08 10:47:27.618] DEBUG[1365] src/apt_consumer_task.c: Wait for Messages [MRCP Client]
[11/08 10:47:27.618] DEBUG[1674][C-00000000] audio_queue.c: (ASR-0) Audio queue destroyed
[11/08 10:47:27.619] DEBUG[1322] manager.c: Examining AMI event:
Event: VarSet^M
Privilege: dialplan,all^M
Channel: PJSIP/1002-00000000^M
ChannelState: 6^M
ChannelStateDesc: Up^M
CallerIDNum: 1002^M
CallerIDName: XYZ^M
ConnectedLineNum: ^M
ConnectedLineName: ^M
Language: en^M
AccountCode: 6^M
Context: IS^M
Exten: 2093^M
Priority: 6^M
Uniqueid: 1510159646.0^M
Linkedid: 1510159646.0^M
Variable: RECOGSTATUS^M
Value: ERROR^M
^M

[11/08 10:47:27.619] DEBUG[1322] manager.c: Examining AMI event:
Event: AGIExecEnd^M
Privilege: agi,all^M
Channel: PJSIP/1002-00000000^M
ChannelState: 6^M
ChannelStateDesc: Up^M
CallerIDNum: 1002^M
CallerIDName: XYZ^M
ConnectedLineNum: ^M
ConnectedLineName: ^M
Language: en^M
AccountCode: 6^M
Context: IS^M
Exten: 2093^M
Priority: 6^M
Uniqueid: 1510159646.0^M
Linkedid: 1510159646.0^M
Result: Unknown Result^M
CommandId: 1844242488^M
Command: EXEC MRCPRecog ____^M
ResultCode: 200^M

[11/08 10:47:27.619] DEBUG[1322] manager.c: Examining AMI event:
Event: AsyncAGIExec^M
Privilege: agi,all^M
Channel: PJSIP/1002-00000000^M
ChannelState: 6^M
ChannelStateDesc: Up^M
CallerIDNum: 1002^M
CallerIDName: XYZ^M
ConnectedLineNum: ^M
ConnectedLineName: ^M
Language: en^M
AccountCode: 6^M
Context: IS^M
Exten: 2093^M
Priority: 6^M
Uniqueid: 1510159646.0^M
Linkedid: 1510159646.0^M
CommandId: C20^M
Result: 200%20result%3D-1%0A^M
^M

Have a great day!

Dan

Thread is blocking

Using MRCPSynth causes lots of messages like this:
Thread LWP 12815 is blocking 'SIP/trunk_i6_allegro-0000000f', already blocked by thread LWP 25892 in procedure ast_waitfor_nandfds

In addition to filling the log file because it logs around 25 lines per second, I wonder if it cannot be a problem.
full_LogDebug.log

error: Externally compiled modules must declare AST_MODULE_SELF_SYM.

Hi,

I'm new to MRCP. I have the same problem as Amitaj. https://groups.google.com/forum/#!topic/unimrcp/xQDV4biw3S4

When I try to install the asterisk-unimrcp bridge, I run into compilation error.

./configure

.....
.....
****************************** REPORT ******************************

Asterisk version.............. : 14.3.0
UniMRCP version............... : 1.4.0
UniMRCP modules version....... : 1.4.0

Compiler...................... : gcc
Compiler flags................ : -g -O2
Preprocessor definitions...... :
Linker flags.................. :

Modules install path...........: /usr/lib/asterisk/modules
Configuration install path.....: /etc/asterisk
XML doc install path...........: /var/lib/asterisk/documentation/thirdparty

Speech resource module.........: yes
Application module.............: yes


make

Making all in res-speech-unimrcp
make[1]: Entering directory /usr/src/asterisk-unimrcp-1.4.0/res-speech-unimrcp' CC res_speech_unimrcp.lo In file included from ../include/ast_compat_defs.h:30:0, from res_speech_unimrcp.c:28: /usr/include/asterisk.h:300:2: error: #error "Externally compiled modules must d eclare AST_MODULE_SELF_SYM." #error "Externally compiled modules must declare AST_MODULE_SELF_SYM." ^ res_speech_unimrcp.c:31:1: error: expected declaration specifiers or ‘...’ befor e string constant ASTERISK_FILE_VERSION(__FILE__, "$Revision: $") ^ res_speech_unimrcp.c:31:33: error: expected declaration specifiers or ‘...’ befo re string constant ASTERISK_FILE_VERSION(__FILE__, "$Revision: $") ^ make[1]: *** [res_speech_unimrcp.lo] Error 1 make[1]: Leaving directory /usr/src/asterisk-unimrcp-1.4.0/res-speech-unimrcp'
make: *** [all-recursive] Error 1

Do you have any updates on this problem?

undefined symbol: ast_datastore_alloc

Dear community,

I'm using Asterisk 1.4 ,While this Asterisk UNIMRCP 1.1.0 is compiling correctly, I'm unable to load it from Asterisk, and got load Error message as below:
[Mar 22 11:53:01] WARNING[25676] loader.c: Error loading module 'app_unimrcp.so': /usr/lib/asterisk/modules/app_unimrcp.so: undefined symbol: ast_datastore_alloc
[Mar 22 11:53:01] WARNING[25676] loader.c: Module 'app_unimrcp.so' could not be loaded.
how can i fix this?

asterisk-unimrcp can't connect to MRCP server

I have compiled and installed asterisk-unimrcp with asterisk 15.1.2 successfully after apply the patch a966452,asterisk can start successfully, i have setup unimrcp client and asterisk-unimrcp correctly,i can connect to MRCP server with umc,and run synth and recog in umc can work.But if i call MRCPRecog in dialplan, i get a error:
Executing [59658008@internal:5] MRCPRecog("PJSIP/chatbot-00000000", "builtin:grammar/default, p=default&t=5000&b=1&ct=0.7&spl=zh-CN&sw=true&rm=normal&nit=8000&sct=300") in new stack
[Nov 22 15:43:38] NOTICE[2783][C-00000001]: app_mrcprecog.c:1086 app_recog_exec: MRCPRecog() grammar: builtin:grammar/default
[Nov 22 15:43:38] NOTICE[2783][C-00000001]: app_mrcprecog.c:1107 app_recog_exec: MRCPRecog() options: p=default&t=5000&b=1&ct=0.7&spl=zh-CN&sw=true&rm=normal&nit=8000&sct=300
[Nov 22 15:43:38] NOTICE[2783][C-00000001]: src/mrcp_application.c:117 : Create MRCP Handle 0x7f0000012cc8 [speech-nuance5-mrcp2]
[Nov 22 15:43:38] NOTICE[2783][C-00000001]: src/mrcp_client_session.c:131 : Create Channel ASR-0
[Nov 22 15:43:38] NOTICE[2760]: src/mrcp_client_session.c:385 : Receive App Request ASR-0 [2]
[Nov 22 15:43:38] WARNING[2760]: src/mrcp_client_session.c:1263 : Failed to Create Session ASR-0 [2]
[Nov 22 15:43:38] NOTICE[2760]: src/mrcp_client_session.c:531 : Raise App Response ASR-0 [2] FAILURE [1]
[Nov 22 15:43:38] ERROR[2760]: app_mrcprecog.c:294 speech_on_channel_add: (ASR-0) Channel error status=1, response code=0!
[Nov 22 15:43:38] NOTICE[2760]: src/mrcp_client_session.c:385 : Receive App Request ASR-0 [1]
[Nov 22 15:43:38] NOTICE[2760]: src/mrcp_client_session.c:453 : Raise App Response ASR-0 [1] SUCCESS [0]
[Nov 22 15:43:38] NOTICE[2760]: src/mrcp_application.c:203 : Destroy MRCP Handle ASR-0
[Nov 22 15:43:38] NOTICE[2783][C-00000001]: app_mrcprecog.c:1047 mrcprecog_exit: MRCPRecog() exiting status: ERROR on PJSIP/chatbot-00000000

i cannot connect to MRCP server in dialplan.What's wrong with this?

Dynamic Server IP UniMRCP

Hi guys, how are you?

I have a doubt, I'm using MRCPRecog within the Asterisk Dialplan and I wanted to somehow be able to pass the server-ip of my MRCP server as a parameter, today I leave it fixed inside the mrcp.conf file, I need to somehow leave this IP dynamic, because I'm implementing some speech recognition services, I wanted to be able to switch between these servers using the same asterisk/dialplan.

Have any of you been through this and can you help me on how to proceed?

Thanks.

multi prompt not supported with barge=1

multi prompt not supported with barge=1, MRCPRecog()
when
od=^&f=${PROMRTF_1}^${SPACEWAV}^${PROMRTF_2}&b=0
is ok, the three files can all played.

when
od=^&f=${PROMRTF_1}^${SPACEWAV}^${PROMRTF_2}&b=1
can only play PROMRTF_1, the other can not be played.

please help me, thank you

Asterisk 17 support

When I try to setup asterisk 17 with unimrcp I get the following error:

cd asterisk-unimrcp-1.5.2/
./configure
make
make install

....
configure: UniMRCP configuration
1.6.0
configure: Asterisk configuration
17.0.1
configure: error: Could not find asterisk.h, make sure Asterisk development package is installed

error while loading shared libraries: libsofia-sip-ua.so.0

I've installed unimrcp-master branch successfully. Asterisk 16, is already installed.
But while I'm trying to Test the setup using below command :-

./unimrcpserver
Getting below error :-

./unimrcpserver: error while loading shared libraries: libsofia-sip-ua.so.0: cannot open shared object file: No such file or directory

clear asterisk variables before "recog" and "synth" operations

I propose to implement the mechanism of preliminary purification of asterisk variables in order to prevent, in an asterisk variable, the values obtained from the penultimate query, in the case when the last query was unsuccessful.

variables value:

RECOGSTATUS
RECOG_STATUS
RECOG_COMPLETION_CAUSE
RECOG_RESULT
SYNTHSTATUS

variables used in functions:

RECOG_CONFIDENCE()
RECOG_GRAMMAR()
RECOG_INPUT()
RECOG_INSTANCE()

Not moving to next sound if RIFF headers present

If the audio file to reproduce has RIFF headers

Example:
WAVE properties:

Non-canonical header: yes

Extra RIFF chunks: yes (2692 bytes)

the length of the sound is not correctly recognized so will stop at the first sound and wont pass to the next one, removing this header using sox fix the issue but I think it should get the Extra RIFF chunks and add it in

app_mrcprecog.c . line 1348

if (read_filelength + read_filestep > max_filelength) {....

so it knows the file is over

what do you think?

--libdir is ignored

For CentOS 7/x86_64, the correct path for 64-bit libraries is /usr/lib64, not /usr/lib:

# ./configure --libdir=/usr/lib64
...
************ REPORT ************
Modules install path...........: /usr/lib/asterisk/modules
...

# make && make install
...
Libraries have been installed in:
   /usr/lib/asterisk/modules

Thus, after installation, one has to manually move the libs out of /usr/lib/asterisk/modules/ into /usr/lib64/asterisk/modules/ in order for Asterisk to load Unimrcp.

configure: error: Only installed dir location is supported now

I tried running the command sudo apt-get install unimrcp-client-dev first. But it's giving below error ->

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package unimrcp-client-dev

Same goes for sudo apt-get install asterisk-app-unimrcp. Error ->

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package asterisk-app-unimrcp

And for sudo apt-get install asterisk-res-speech-unimrcp. Error ->

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package asterisk-res-speech-unimrcp

Need your help. Thanks in advance

Doesnt compile on fresh ubuntu 14.04

****************************** REPORT ******************************

Asterisk version.............. : 11.7.0~dfsg-1ubuntu1
UniMRCP version............... : 1.3.0
UniMRCP modules version....... : 1.3.1

Compiler...................... : gcc
Compiler flags................ : -g -O2
Preprocessor definitions...... :
Linker flags.................. :

Modules install path...........: /usr/lib/asterisk/modules
Configuration install path.....: /etc/asterisk
XML doc install path...........: /var/lib/asterisk/documentation/thirdparty

Speech resource module.........: yes
Application module.............: yes

********************************************************************

Making all in res-speech-unimrcp
make[1]: Entering directory `/root/unimrcp/asterisk-unimrcp-1.3.1/res-speech-unimrcp'
  CC     res_speech_unimrcp.lo
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:56:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(1,8,0)
     ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:65:6: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if !AST_VERSION_AT_LEAST(11,0,0)
      ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:84:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(10,0,0)
     ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:92:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(1,8,0)
     ^
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:100:24: error: conflicting types for ‘ast_format_clear’
 static APR_INLINE void ast_format_clear(ast_format_compat *format)
                        ^
In file included from /usr/include/asterisk/abstract_jb.h:35:0,
                 from /usr/include/asterisk/channel.h:126,
                 from ../include/ast_compat_defs.h:32,
                 from res_speech_unimrcp.c:28:
/usr/include/asterisk/format.h:312:6: note: previous declaration of ‘ast_format_clear’ was here
 void ast_format_clear(struct ast_format *format);
      ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:106:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(13,0,0)
     ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:176:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(13,0,0)
     ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:177:7: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #elif AST_VERSION_AT_LEAST(10,0,0)
       ^
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h: In function ‘ast_channel_set_readformat’:
../include/ast_compat_defs.h:189:2: warning: passing argument 2 of ‘ast_set_read_format’ makes pointer from integer without a cast [enabled by default]
  ast_set_read_format(chan, format->id);
  ^
In file included from ../include/ast_compat_defs.h:32:0,
                 from res_speech_unimrcp.c:28:
/usr/include/asterisk/channel.h:1802:5: note: expected ‘struct ast_format *’ but argument is of type ‘int’
 int ast_set_read_format(struct ast_channel *chan, struct ast_format *format);
     ^
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h: In function ‘ast_channel_set_writeformat’:
../include/ast_compat_defs.h:193:2: warning: passing argument 2 of ‘ast_set_write_format’ makes pointer from integer without a cast [enabled by default]
  ast_set_write_format(chan, format->id);
  ^
In file included from ../include/ast_compat_defs.h:32:0,
                 from res_speech_unimrcp.c:28:
/usr/include/asterisk/channel.h:1827:5: note: expected ‘struct ast_format *’ but argument is of type ‘int’
 int ast_set_write_format(struct ast_channel *chan, struct ast_format *format);
     ^
../include/ast_compat_defs.h: At top level:
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:197:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(11,0,0)
     ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:216:7: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #elif AST_VERSION_AT_LEAST(10,0,0)
       ^
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h: In function ‘ast_channel_get_speechreadformat’:
../include/ast_compat_defs.h:238:22: error: dereferencing pointer to incomplete type
  raw_format.id = chan->rawreadformat;
                      ^
../include/ast_compat_defs.h: In function ‘ast_channel_get_speechwriteformat’:
../include/ast_compat_defs.h:245:22: error: dereferencing pointer to incomplete type
  raw_format.id = chan->rawwriteformat;
                      ^
../include/ast_compat_defs.h: In function ‘ast_channel_get_readformat’:
../include/ast_compat_defs.h:252:19: error: dereferencing pointer to incomplete type
  format->id = chan->readformat;
                   ^
../include/ast_compat_defs.h: In function ‘ast_channel_get_writeformat’:
../include/ast_compat_defs.h:259:19: error: dereferencing pointer to incomplete type
  format->id = chan->writeformat;
                   ^
../include/ast_compat_defs.h: In function ‘ast_frame_get_dtmfkey’:
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:270:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(1,8,0)
     ^
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:273:2: error: incompatible types when returning type ‘union ast_frame_subclass’ but ‘int’ was expected
  return f->subclass;
  ^
../include/ast_compat_defs.h: In function ‘ast_frame_get_data’:
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:279:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(1,6,1)
     ^
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:282:2: error: cannot convert to a pointer type
  return (void *)(f->data);
  ^
../include/ast_compat_defs.h: In function ‘ast_frame_set_data’:
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:288:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(1,6,1)
     ^
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:291:10: error: incompatible types when assigning to type ‘union <anonymous>’ from type ‘void *’
  f->data = data;
          ^
../include/ast_compat_defs.h: In function ‘ast_frame_set_format’:
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:297:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(13,0,0)
     ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:299:7: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #elif AST_VERSION_AT_LEAST(10,0,0)
       ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:301:7: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #elif AST_VERSION_AT_LEAST(1,8,0)
       ^
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:304:14: error: incompatible types when assigning to type ‘union ast_frame_subclass’ from type ‘int’
  f->subclass = format->id;
              ^
../include/ast_compat_defs.h: In function ‘ast_uri_encode_http’:
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
../include/ast_compat_defs.h:313:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(10,0,0)
     ^
In file included from res_speech_unimrcp.c:28:0:
../include/ast_compat_defs.h:316:2: error: incompatible type for argument 4 of ‘ast_uri_encode’
  return ast_uri_encode(string, outbuf, buflen, 1);
  ^
In file included from /usr/include/asterisk/config.h:30:0,
                 from /usr/include/asterisk/channel.h:143,
                 from ../include/ast_compat_defs.h:32,
                 from res_speech_unimrcp.c:28:
/usr/include/asterisk/utils.h:280:7: note: expected ‘struct ast_flags’ but argument is of type ‘int’
 char *ast_uri_encode(const char *string, char *outbuf, int buflen, struct ast_flags spec);
       ^
res_speech_unimrcp.c: At top level:
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
res_speech_unimrcp.c:145:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(1,8,0)
     ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
res_speech_unimrcp.c:172:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(10,0,0)
     ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
res_speech_unimrcp.c:177:7: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #elif AST_VERSION_AT_LEAST(1,6,0)
       ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
res_speech_unimrcp.c:669:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(12,0,0)
     ^
res_speech_unimrcp.c: In function ‘uni_recog_speech_result_build’:
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
res_speech_unimrcp.c:719:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(1,6,0)
     ^
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
res_speech_unimrcp.c:766:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(1,6,0)
     ^
res_speech_unimrcp.c:769:17: error: ‘struct ast_speech_result’ has no member named ‘next’
    speech_result->next = last_speech_result;
                 ^
res_speech_unimrcp.c: At top level:
res_speech_unimrcp.c:1208:2: warning: initialization from incompatible pointer type [enabled by default]
  uni_recog_create,
  ^
res_speech_unimrcp.c:1208:2: warning: (near initialization for ‘ast_engine.create’) [enabled by default]
res_speech_unimrcp.c:1210:2: warning: initialization from incompatible pointer type [enabled by default]
  uni_recog_load_grammar,
  ^
res_speech_unimrcp.c:1210:2: warning: (near initialization for ‘ast_engine.load’) [enabled by default]
res_speech_unimrcp.c:1211:2: warning: initialization from incompatible pointer type [enabled by default]
  uni_recog_unload_grammar,
  ^
res_speech_unimrcp.c:1211:2: warning: (near initialization for ‘ast_engine.unload’) [enabled by default]
res_speech_unimrcp.c:1212:2: warning: initialization from incompatible pointer type [enabled by default]
  uni_recog_activate_grammar,
  ^
res_speech_unimrcp.c:1212:2: warning: (near initialization for ‘ast_engine.activate’) [enabled by default]
res_speech_unimrcp.c:1213:2: warning: initialization from incompatible pointer type [enabled by default]
  uni_recog_deactivate_grammar,
  ^
res_speech_unimrcp.c:1213:2: warning: (near initialization for ‘ast_engine.deactivate’) [enabled by default]
res_speech_unimrcp.c:1217:2: warning: initialization from incompatible pointer type [enabled by default]
  uni_recog_change,
  ^
res_speech_unimrcp.c:1217:2: warning: (near initialization for ‘ast_engine.change’) [enabled by default]
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
res_speech_unimrcp.c:1218:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(12,0,0)
     ^
res_speech_unimrcp.c: In function ‘uni_engine_config_load’:
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
res_speech_unimrcp.c:1284:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(1,6,0)
     ^
res_speech_unimrcp.c:1288:60: error: macro "ast_config_load" requires 2 arguments, but only 1 given
  struct ast_config *cfg = ast_config_load(UNI_ENGINE_CONFIG);
                                                            ^
res_speech_unimrcp.c:1288:27: error: ‘ast_config_load’ undeclared (first use in this function)
  struct ast_config *cfg = ast_config_load(UNI_ENGINE_CONFIG);
                           ^
res_speech_unimrcp.c:1288:27: note: each undeclared identifier is reported only once for each function it appears in
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
res_speech_unimrcp.c:1294:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(1,6,2)
     ^
res_speech_unimrcp.c: In function ‘load_module’:
<command-line>:0:25: error: missing binary operator before token "~"
../include/ast_compat_defs.h:43:20: note: in expansion of macro ‘ASTERISK_PATCH_VERSION’
      && (patch) <= ASTERISK_PATCH_VERSION))
                    ^
res_speech_unimrcp.c:1448:5: note: in expansion of macro ‘AST_VERSION_AT_LEAST’
 #if AST_VERSION_AT_LEAST(10,0,0)
     ^
res_speech_unimrcp.c:1471:21: warning: assignment makes pointer from integer without a cast [enabled by default]
  ast_engine.formats = AST_FORMAT_SLINEAR;
                     ^
make[1]: *** [res_speech_unimrcp.lo] Error 1
make[1]: Leaving directory `/root/unimrcp/asterisk-unimrcp-1.3.1/res-speech-unimrcp'
make: *** [all-recursive] Error 1

Invalid flags masks

The rigth formt to set the bits for the flags masks is (from the Voximal fork):

MRCPSYNTH_PROFILE        = (1 << 0),
MRCPSYNTH_INTERRUPT      = (1 << 1),
MRCPSYNTH_FILENAME       = (1 << 2),
MRCPSYNTH_KEEPSESSION    = (1 << 3),
MRCPSYNTH_ASTERISKVOLUME = (1 << 4),
MRCPSYNTH_SENDDTMF       = (1 << 5)

and not

MRCPSYNTH_PROFILE        = (1 << 0),
MRCPSYNTH_INTERRUPT      = (2 << 0),
MRCPSYNTH_FILENAME       = (3 << 0)

Error compiling

I have a lot of problems compiling on Ubuntu and debian distro
You have a pay deb version cause if i try to use it have to be a subscription.
I only need try if this solution with watson service work fine.
Need to know if is a possible compile this or the way is pay for a deb or rpm version.

thx

DTMF duplication

Hello.
There is a dump with a problem in the attachment. The problem appears to be due to a long DTMF signal from the upstream station. Unimrcp takes one button for two.
1.zip

Module not loading with Asterisk 15.2

Dear community,

I'm using Asterisk 15.2 on a Wazo distribution. While this Asterisk uniMRCP is compiling correctly, I'm unable to load it from Asterisk.

xivo*CLI> module load res_speech_unimrcp.so
Unable to load module res_speech_unimrcp.so
Command 'module load res_speech_unimrcp.so' failed.
[Feb 23 09:54:26] WARNING[7365]: loader.c:580 load_dlopen: Error loading module 'res_speech_unimrcp.so': /usr/lib/asterisk/modules/res_speech_unimrcp.so: undefined symbol: ast_speech_change_state
[Feb 23 09:54:26] WARNING[7365]: loader.c:1184 load_resource: Module 'res_speech_unimrcp.so' could not be loaded.

The other module app_unimrcp.so is loading correctly.

I'm not developper and able to provide a fix. Does anybody is able to propose a patch for this issue?

Thanks

Obitwo

Audible pop when playing wav file using MRCPRecog

Hi, I somehow bumped into the following problem:

When you use the MRCPrecog function to play a .wav prompt containing a fact chunk header it shows a debug line in the asterisk console:
[Jul 2 16:59:04] DEBUG[640][C-00000029]: format_wav.c:192 check_header: Skipping unknown block 'fact'

However this also causes a small "popping" sound at the start of the prompt, which is really annoying for the end user.

Playing the same prompt in the Asterisk PLAYBACK function causes no issues.

wondering if anyone can help me with this...

/usr/bin/install: cannot stat '.libs/res_speech_unimrcp.lai': No such file or directory

when I execute the make install
os will throw an error for me, and the installation failed.

for detail:

root@asterisk_server:/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1# ./bootstrap

  • libtoolize --force --automake --copy
  • aclocal -I build/acmacros
  • automake --foreign --add-missing --copy
    configure.ac:37: installing 'build/compile'
    configure.ac:29: installing 'build/missing'
    app-unimrcp/Makefile.am: installing 'build/depcomp'
  • autoconf
  • rm -rf autom4te.cache

root@asterisk_server:/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1# ./configure --with-unimrcp=/opt/unimrcp/
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @file support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /bin/dd
checking how to truncate binary pipes... /bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for C compiler vendor... gnu
checking for pkg-config... /usr/bin/pkg-config
configure: UniMRCP configuration
1.5.0
configure: Asterisk configuration
15.6.1
configure: enable maintainer mode: no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating res-speech-unimrcp/Makefile
config.status: creating app-unimrcp/Makefile
config.status: executing depfiles commands
config.status: executing libtool commands

****************************** REPORT ******************************

Asterisk version.............. : 15.6.1
UniMRCP version............... : 1.5.0
UniMRCP modules version....... : 1.5.1

Compiler...................... : gcc
Compiler flags................ : -g -O2
Preprocessor definitions...... :
Linker flags.................. :

Modules install path...........: /usr/lib/asterisk/modules
Configuration install path.....: /etc/asterisk
XML doc install path...........: /var/lib/asterisk/documentation/thirdparty

Speech resource module.........: yes
Application module.............: yes


root@asterisk_server:/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1# make
Making all in res-speech-unimrcp
make[1]: Entering directory '/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1/res-speech-unimrcp'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1/res-speech-unimrcp'
Making all in app-unimrcp
make[1]: Entering directory '/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1/app-unimrcp'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1/app-unimrcp'
make[1]: Entering directory '/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1'

root@asterisk_server:/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1# make install
Making install in res-speech-unimrcp
make[1]: Entering directory '/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1/res-speech-unimrcp'
make[2]: Entering directory '/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1/res-speech-unimrcp'
make[2]: Nothing to be done for 'install-exec-am'.
test -d /etc/asterisk || /bin/bash /usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1/build/install-sh -d /etc/asterisk
test -f /etc/asterisk/res-speech-unimrcp.conf || /usr/bin/install -c -m 644 ../conf/res-speech-unimrcp.conf /etc/asterisk
/bin/mkdir -p '/usr/lib/asterisk/modules'
/bin/bash ../libtool --mode=install /usr/bin/install -c res_speech_unimrcp.la '/usr/lib/asterisk/modules'
libtool: install: /usr/bin/install -c .libs/res_speech_unimrcp.so /usr/lib/asterisk/modules/res_speech_unimrcp.so
libtool: install: /usr/bin/install -c .libs/res_speech_unimrcp.lai /usr/lib/asterisk/modules/res_speech_unimrcp.la
/usr/bin/install: cannot stat '.libs/res_speech_unimrcp.lai': No such file or directory
Makefile:385: recipe for target 'install-modLTLIBRARIES' failed
make[2]: *** [install-modLTLIBRARIES] Error 1
make[2]: Leaving directory '/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1/res-speech-unimrcp'
Makefile:552: recipe for target 'install-am' failed
make[1]: *** [install-am] Error 2
make[1]: Leaving directory '/usr/local/src/asterisk-unimrcp-asterisk-unimrcp-1.5.1/res-speech-unimrcp'
Makefile:422: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1

Can you provide any solution for me to solve the issues

Does unimrcp support transcoding?

I setup a endpoint with codec opus to establish sip connection with user side(I named A side), in dialplan i call MRCPRecog to establish mrcp connection with MRCP server(I named B side), in mrcp.conf,i set the codec to PCMA,PCMU,but i failed to audio recognize, the log is(sorry i hide the real IP information):

Executing [s@internal:2] MRCPRecog("PJSIP/1003-00000000", "builtin:grammar/default, p=default&t=50000&b=0&ct=0.7&spl=zh-CN&sw=false&rm=normal&nit=5000&sct=300") in new stack
[Dec 27 15:47:03] NOTICE[22374][C-00000001]: app_mrcprecog.c:1079 app_recog_exec: MRCPRecog() grammar: builtin:grammar/default
[Dec 27 15:47:03] NOTICE[22374][C-00000001]: app_mrcprecog.c:1100 app_recog_exec: MRCPRecog() options: p=default&t=50000&b=0&ct=0.7&spl=zh-CN&sw=false&rm=normal&nit=5000&sct=300
> 0x7f96cc010e70 -- Strict RTP learning after remote address set to: xxx.xxx.xxx.xxx:33138
> 0x7f96cc010e70 -- Strict RTP switching source address to xxx.xxx.xxx.xxx:33138
[Dec 27 15:47:04] NOTICE[22374][C-00000001]: src/mrcp_application.c:117 : Create MRCP Handle 0x7f96c4014058 [speech-nuance5-mrcp2]
[Dec 27 15:47:04] NOTICE[22374][C-00000001]: src/mrcp_client_session.c:131 : Create Channel ASR-0
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client_session.c:385 : Receive App Request ASR-0 [2]
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client.c:696 : Add MRCP Handle ASR-0
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client_session.c:717 : Add Control Channel ASR-0 new@speechrecog
[Dec 27 15:47:04] WARNING[22358]: src/mpf_rtp_stream.c:229 : Failed to Match Codec List xxx.xxx.xxx.xxx:20001
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client_session.c:409 : Send Offer ASR-0 [c:1 a:1 v:0] to xxx.xxx.xxx.xxx:8010
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_sofiasip_client_agent.c:301 : Local SDP ASR-0
v=0
o=Asterisk 0 0 IN IP4 xxx.xxx.xxx.xxx
s=-
c=IN IP4 xxx.xxx.xxx.xxx
t=0 0
m=application 9 TCP/MRCPv2 1
a=setup:active
a=connection:new
a=resource:speechrecog
a=cmid:1
m=audio 0 RTP/AVP 19
a=mid:1

[Dec 27 15:47:04] NOTICE[22359]: src/mrcp_sofiasip_client_agent.c:556 : Receive SIP Event [nua_i_state] Status 0 INVITE sent [speech-nuance5-mrcp2]
[Dec 27 15:47:04] NOTICE[22359]: src/mrcp_sofiasip_client_agent.c:494 : SIP Call State ASR-0 [calling]
[Dec 27 15:47:04] NOTICE[22359]: src/mrcp_sofiasip_client_agent.c:556 : Receive SIP Event [nua_r_invite] Status 200 OK [speech-nuance5-mrcp2]
[Dec 27 15:47:04] NOTICE[22359]: src/mrcp_sofiasip_client_agent.c:556 : Receive SIP Event [nua_i_state] Status 200 OK [speech-nuance5-mrcp2]
[Dec 27 15:47:04] NOTICE[22359]: src/mrcp_sofiasip_client_agent.c:494 : SIP Call State ASR-0 [ready]
[Dec 27 15:47:04] NOTICE[22359]: src/mrcp_sofiasip_client_agent.c:380 : Remote SDP ASR-0
v=0
o=UniMRCPServer 8852379940481215765 6244095247722662515 IN IP4 xxx.xxx.xxx.xxx
s=-
c=IN IP4 xxx.xxx.xxx.xxx
t=0 0
m=application 2544 TCP/MRCPv2 1
a=setup:passive
a=connection:new
a=channel:99cef90c163f407f@speechrecog
a=cmid:1
m=audio 0 RTP/AVP 19

[Dec 27 15:47:04] NOTICE[22359]: src/mrcp_sofiasip_client_agent.c:556 : Receive SIP Event [nua_i_active] Status 200 Call active [speech-nuance5-mrcp2]
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client_session.c:149 : Receive Answer ASR-0 [c:1 a:1 v:0] Status 200
[Dec 27 15:47:04] NOTICE[22357]: src/mrcp_client_connection.c:336 : Established TCP/MRCPv2 Connection xxx.xxx.xxx.xxx:44750 <-> xxx.xxx.xxx.xxx:2544
[Dec 27 15:47:04] NOTICE[22357]: src/mrcp_client_connection.c:433 : Add Control Channel 99cef90c163f407f@speechrecog xxx.xxx.xxx.xxx:44750 <-> xxx.xxx.xxx.xxx:2544 [1]
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client_session.c:453 : Raise App Response ASR-0 <99cef90c163f407f> [2] SUCCESS [0]
[Dec 27 15:47:04] ERROR[22356]: app_mrcprecog.c:258 speech_on_channel_add: (ASR-0) Unable to determine codec descriptor
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client_session.c:385 : Receive App Request ASR-0 <99cef90c163f407f> [1]
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client_session.c:828 : Terminate Session ASR-0 <99cef90c163f407f>
[Dec 27 15:47:04] NOTICE[22357]: src/mrcp_client_connection.c:457 : Remove Control Channel 99cef90c163f407f@speechrecog [0]
[Dec 27 15:47:04] NOTICE[22357]: src/mrcp_client_connection.c:384 : Close TCP/MRCPv2 Connection xxx.xxx.xxx.xxx:44750 <-> xxx.xxx.xxx.xxx:2544
[Dec 27 15:47:04] NOTICE[22359]: src/mrcp_sofiasip_client_agent.c:556 : Receive SIP Event [nua_r_bye] Status 200 OK [speech-nuance5-mrcp2]
[Dec 27 15:47:04] NOTICE[22359]: src/mrcp_sofiasip_client_agent.c:556 : Receive SIP Event [nua_i_state] Status 200 to BYE [speech-nuance5-mrcp2]
[Dec 27 15:47:04] NOTICE[22359]: src/mrcp_sofiasip_client_agent.c:494 : SIP Call State ASR-0 [terminated]
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client_session.c:207 : Session Terminated ASR-0 <99cef90c163f407f>
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client_connection.c:233 : Destroy TCP/MRCPv2 Connection xxx.xxx.xxx.xxx:44750 <-> xxx.xxx.xxx.xxx:2544
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client.c:706 : Remove MRCP Handle ASR-0 <99cef90c163f407f>
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_client_session.c:453 : Raise App Response ASR-0 <99cef90c163f407f> [1] SUCCESS [0]
[Dec 27 15:47:04] NOTICE[22356]: src/mrcp_application.c:203 : Destroy MRCP Handle ASR-0
[Dec 27 15:47:04] NOTICE[22374][C-00000001]: app_mrcprecog.c:1040 mrcprecog_exit: MRCPRecog() exiting status: ERROR on PJSIP/1003-00000000
== Spawn extension (internal, s, 2) exited non-zero on 'PJSIP/1003-00000000'

if i change the codec of A side from "opus" to "ulaw,alaw", the audio recognize functionity works fine.
Does unimrcp support transcoding?And how should i do?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.