I have written a custom UniMRCP ASR plugin and wanted it to work with Voximal on Asterisk.
I followed the doc here: https://wiki.voximal.com/doku.php?id=asrproviders:unimrcp. The VXML works fine but, when I try to record in VXML, I can't see any stream being sent to the UniMRCP server. My UniMRCP server and Asterisk are both on the same machine. I've tried the Voxibot installation installation on EC2 too but encountered the same issue
Below are some of the configurations in Asterisk:
mrcp.conf
[general]
; Default ASR and TTS profiles.
default-asr-profile = uni2
default-tts-profile = speech-nuance5-mrcp2
log-level = DEBUG,NOTICE,INFO
max-connection-count = 100
offer-new-connection = 1
; rx-buffer-size = 1024
; tx-buffer-size = 1024
; request-timeout = 5000
; speech-channel-timeout = 30000
[uni2]
version = 2
; SIP settings
server-ip = 172.17.0.2
server-port = 8060
; SIP user agent
;client-ip = 172.17.0.2
;client-port = 25097
sip-transport = udp
; RTP factory
rtp-ip = 172.17.0.2
rtp-port-min = 4000
rtp-port-max = 5000
; Jitter buffer settings
playout-delay = 50
max-playout-delay = 200
res-speech-unimrcp.conf
[general]
; UniMRCP named profile. Options are:
unimrcp-profile = uni2 ; UniMRCP MRCPv2 Server
log-level = DEBUG,INFO,NOTICE
; Preloaded grammars
[grammars]
;grammar-name = path-to-grammar-file
[mrcpv2-properties]
Recognition-Timeout = 20000
No-Input-Timeout = 15000
[mrcpv1-properties]
Recognition-Timeout = 20000
No-Input-Timeout = 15000
voximal.conf
[general]
autoanswer=yes
videosilence=
audiosilence=
; tried with speechprovider=unimrcp too
speechprovider=unimrcp:uni2
speechscore=50
[control]
forward=#
reverse=*
stop=123456789
pause=
restart=0
skipms=5000
;Optional local license
[license]
;max=1
;key=trial
tts=yes
speech=auto
[prompt]
uri=http://ttsf.voximal.net/tts/pico/tts.php
method=post
format=wav
maxage=-1
[recognize]
sendproperties=0
[account1]
number=8965
name=helloworld
url=file:///var/lib/voximal/record.vxml
speech=automatic
record.vxml
<!-- for testing recording -->
<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xml:lang="en-US">
<form>
<block>
<prompt>
<audio src="/var/lib/asterisk/sounds/speech_start.wav"/>
</prompt>
</block>
<record name="msg" beep="true" maxtime="10s" finalsilence="4000ms" dtmfterm="true" type="audio/x-wav">
<prompt timeout="5s">
<audio src="/var/lib/asterisk/sounds/speech_start.wav"/>
</prompt>
</record>
</form>
</vxml>
I don't see the link between the ASR and the record feature (used to record the user's voice without . If you want to record the audio flow sent to the ASR, you can use the property "recordutterance" (true/false), you will have a shadow variable field_name$.recording, field_name$.recordingsize, field_name$.recordingduration.