Re: [asterisk-users] Simple speech recognition for driving IVR - "press or say one".

2017-12-06 Thread Jonathan H
Thanks for your responses - it looks like I have the following
options, in order of ease:

1: Modify and recompile app_record.c

Change line 471
https://github.com/asterisk/asterisk/blob/master/apps/app_record.c#L471
from
   status_response = "DTMF";
to
   status_response = dtmf_integer;

Pro: Free, easy
Con: Have to remember to edit module each time a new Asterisk update comes out

2: Use the Jean Aunis "mix ARI and AGI" trick.
Pro: Doesn't need recompiling on each Asterisk release.
Con: A bit of fiddling and requires an ARI library.

3: Pay $50 for uniMRCP module
Pro: Does what I need to do
Con: $50 per channel. Requires account. Lots of setup to basically add
DTMF to the speech recognition I'm already doing.

Yes? No? None of the above? Other?!

On 6 December 2017 at 14:54, Jurijs Ivolga  wrote:
> Hi,
>
> Please check code of it. It listens for # and it is quite easy to add all
> other keys 1-9 and etc
>
> Then change code accordingly so script returns value of key.
>
> As far as I remember it wasn't hard.
>
> With kind regards,
>
>
> Jurijs
>
> On Wed, Dec 6, 2017 at 4:50 PM, Jonathan H  wrote:
>>
>> Thanks Jurijs,
>>
>> Yes, in fact I'm already using that, and it works fine. The problem
>> here is that I cannot find a way of recording speech AND listening for
>> a DTMF digit being pressed as an alternative.
>>
>> That's where the problem lies.
>>
>> J.
>>
>> --
>> _
>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>
>> Check out the new Asterisk community forum at:
>> https://community.asterisk.org/
>>
>> New to Asterisk? Start here:
>>   https://wiki.asterisk.org/wiki/display/AST/Getting+Started
>>
>> asterisk-users mailing list
>> To UNSUBSCRIBE or update options visit:
>>http://lists.digium.com/mailman/listinfo/asterisk-users
>
>
>
> --
> _
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> Check out the new Asterisk community forum at:
> https://community.asterisk.org/
>
> New to Asterisk? Start here:
>   https://wiki.asterisk.org/wiki/display/AST/Getting+Started
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>http://lists.digium.com/mailman/listinfo/asterisk-users

-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [asterisk-users] Simple speech recognition for driving IVR - "press or say one".

2017-12-06 Thread Dan Cropp
UniMRCP with one of the various speech recognition providers they support 
definitely works for this.
Specify multiple grammars in the MRCP call.  One for text to listen for.  
Another for the DTMFs to listen for.
The results will indicate which grammar and what was detected.

The combination of voice and/or DTMFs is exactly what speech recognition has 
been designed for.  I am very pleased with UniMRCP and the support they have 
given us.


From: asterisk-users-boun...@lists.digium.com 
[mailto:asterisk-users-boun...@lists.digium.com] On Behalf Of Jurijs Ivolga
Sent: Wednesday, December 06, 2017 8:44 AM
To: Asterisk Users Mailing List - Non-Commercial Discussion
Subject: Re: [asterisk-users] Simple speech recognition for driving IVR - 
"press or say one".

Hi,
I was able to achieve this using:

Jurijs

On Wed, Dec 6, 2017 at 4:33 PM, Jonathan H 
mailto:lardconce...@gmail.com>> wrote:
Briefly: I want to be able to have "press or say (number)", with
Asterisk listening for a spoken number, but accepting a DTMF digit,
too.

I'm posting everything I found so far, here, partly to show working,
but also in case anyone else finds it useful. So, moving on

This looked hopeful for a moment until I realised that it doesn't do DTMF:
https://wiki.asterisk.org/wiki/display/AST/Asterisk+15+Application_SpeechBackground

So then there's
https://wiki.asterisk.org/wiki/display/AST/Asterisk+15+Application_Record,
which can terminate on any DTMF key with "y", but according to the
docs, "RECORD_STATUS" only sets a flag of "DTMF" (A terminating DTMF
was received ('#' or '*', depending upon option 't')).
So, I don't get to know which key was pressed via that method, either.

There's very little information I can find about the built-in
functions for speech recognition.
https://wiki.asterisk.org/wiki/display/AST/Speech+Recognition+API
doesn't actually explain how to integrate the actual speech engines.

In this previous forum post,
https://community.asterisk.org/t/asterisk-15-jack-streams-speech-recognition-so-many-questions/72108/2
, jcolp explained that most people don't use the speech interface
anyway, because
"Asterisk modules are written in C, and it’s more difficult to do
things in that fashion. Using the Record and ship it off using Python,
etc, is just easier and gets the job done for a lot of people to where
they find it acceptable.
So, AGI it is! But I'm still stuck on how I record for speech AND get
a DTMF if it was dialled.

Regarding speech in general, even "Asterisk - The Definitive Guide" just says:

"Asterisk does not have speech recognition built in, but there are
many third-party speech
recognition packages that integrate with Asterisk. Much of that is
outside of the scope
of this book, as those applications are external to Asterisk" - helpful!

The speech-rec mailing list at
http://lists.digium.com/pipermail/asterisk-speech-rec/ hasn't been
posted to since 2013

Someone else asked about speech recognition and unimrcp in this post:
http://lists.digium.com/pipermail/asterisk-users/2017-February/290875.html

uniMCRP https://mojolingo.com/blog/2015/speech-rec-asterisk-get-started/
http://www.unimrcp.org/manuals/html/AsteriskManual.html#_Toc424230605
This has a Google Speech Recogniser plugin, but it's $50 per channel
http://www.unimrcp.org/gsr

*Reasons to use Lex over Google TTS*
• Has just been released in eu-west-1:
https://forums.aws.amazon.com/ann.jspa?annID=5186
• Supports 8KHz telepony https://forums.aws.amazon.com/ann.jspa?annID=4775
• Is in the core AWS SDK
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/LexRuntime.html
• Has a number slot type:
http://docs.aws.amazon.com/lex/latest/dg/built-in-slot-number.html
 - this means no accidental recognition of "won", "one" or "juan" instead of 1!

The pricing is definitely right: "The cost for 1,000 speech requests
would be $4.00, and 1,000 text requests would cost $0.75. From the
date you get started with Amazon Lex, you can process up to 10,000
text requests and 5,000 speech requests per month for free for the
first year".

Amazon Transcribe looks promising too, but is only available for
developer invitation at this time:
https://aws.amazon.com/transcribe/ https://aws.amazon.com/transcribe/pricing/

But all I need now is the quickest, simplest way to send Lex a short
8KHz file and get a single digit back, as quickly and reliably as
possible.

Before I travel too far down this road, can someone point me in the
right direction and possibly steer me away from the wrong path?!

--
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

-- 
__

[asterisk-users] Asterisk BackgroundDetect and the talk extension

2017-12-06 Thread Dan Cropp
I am using AMI to issue a BackgroundDetect on a channel.  Everything works 
great, I receive the result and the variables on the channel.

I am running into one issue though.
After calling that function on AMI, when I send the next command on AMI for 
that channel.  For example, a Playback.  This command is processed and works, 
but the Exten for the channel is now showing 'talk'.

I can still control the call at this point so it's not terrible.

Where I run into problems is when I stop using the AsyncAGI for AMI
Action: AGI
ActionID: 1
Channel: PJSIP/1234-
Command: asyncagi break
CommandID: 1

At this point, when it exits it's now in the 'talk' extension and no longer in 
the extension where I have other dial plan work to perform.

Is there some way to prevent the BackgroundDetect from going to the 'talk' 
extension?
If not, is there an AMI Action I can perform to change the Exten back to the 
original?
Any other options out there?

Have a great day!
Dan
-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] How can I check backtrace files ?

2017-12-06 Thread Richard Mudgett
On Wed, Dec 6, 2017 at 12:13 PM, Olivier  wrote:

>
>
> 2017-12-06 15:52 GMT+01:00 George Joseph :
>
>>
>>
>> On Tue, Dec 5, 2017 at 9:20 AM, Olivier  wrote:
>>
>>> Hello,
>>>
>>> I carefully read [1] which details how backtrace files can be produced.
>>>
>>> Maybe this seems natural to some, but how can I go one step futher, and
>>> check that produced XXX-thread1.txt, XXX-brief.txt, ... files are OK ?
>>>
>>> In other words, where can I find an example on how to use one of those
>>> files and check by myself, that if a system ever fails, I won't have to
>>> wait for another failure to provide required data to support teams ?
>>>
>>
>> It's a great question but I could spend a week answering it and not
>> scratch the surface. :)
>>
>
> Thanks very much for trying, anyway ;-)
>
>
>>  It's not a straightforward thing unless you know the code in question.
>> The most common is a segmentation fault (segfault or SEGV).
>>
>
> True ! I experienced segfaults lately and I could not configure the
> platform I used then (Debian Jessie) to produce core files in a directory
> Asterisk can write into.
> Now, with Debian Stretch, I can produce core file at will (with a kill -s
> SIGSEGV ).
> I checked ast_coredumped worked OK as it produced thread.txt files and so
> on.
>
> Ideally, I would like to go one step further: check now that a future .txt
> file would be "workable" (and not "you should have compiled with option XXX
> or configured with option YYY) .
>
>
>
>>   In that case, the thread1.txt file is the place to start.  Since most
>> of the objects passed around are really pointers to objects, the most
>> obvious cause would be a 0x0 for a value.  So for instance "chan=0x0".
>> That would be a pointer to a channel object that was not set when it
>> probably should have been.  Unfortunately, it's not only 0x0 that could
>> cause a segv.   Anytime a program tries to access memory it doesn't own,
>> that signal is raised.  So let's say there a 256 byte buffer which the
>> process owns.  If there's a bug somewhere that causes the program to try
>> and access bytes beyond the end of the buffer, you MAY get a segv if that
>> process doesn't also own that memory.  If this case, the backtrace won't
>> show anything obvious because the pointers all look valid.  There probably
>> would be an index variable (i or ix, etc) that may be set to 257 but you'd
>> have to know that the buffer was only 256 bytes to realize that that was
>> the issue.
>>
>
> So, with an artificial kill -s SIGSEGV , does the bellow
> output prove I have a workable .txt files (having .txt files that let
> people find the root cause of the issue is another story as we probably can
> only hope for the best here) ?
>
>
> # head core-brief.txt
> !@!@!@! brief.txt !@!@!@!
>
>
> Thread 38 (Thread 0x7f2aa5dd0700 (LWP 992)):
> #0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/
> x86_64/pthread_cond_timedwait.S:225
> #1  0x55cdcb69ae84 in __ast_cond_timedwait (filename=0x55cdcb7d4910
> "threadpool.c", lineno=1131, func=0x55cdcb7d4ea8 <__PRETTY_FUNCTION__.8978>
> "worker_idle", cond_name=0x55cdcb7d4b7f "&worker->cond",
> mutex_name=0x55cdcb7d4b71 "&worker->lock", cond=0x7f2abc000978,
> t=0x7f2abc0009a8, abstime=0x7f2aa5dcfc30) at lock.c:668
> #2  0x55cdcb75d153 in worker_idle (worker=0x7f2abc000970) at
> threadpool.c:1131
> #3  0x55cdcb75ce61 in worker_start (arg=0x7f2abc000970) at
> threadpool.c:1022
> #4  0x55cdcb769a8c in dummy_start (data=0x7f2abc000a80) at utils.c:1238
> #5  0x7f2aeddad494 in start_thread (arg=0x7f2aa5dd0700) at
> pthread_create.c:333
>

The number one question when you supply a backtrace: Does it have symbols?

So yes, the sample above is at least workable.  It has symbols as it shows
the function
name, source file name, and line number in the backtrace.  Without symbols
nobody can
look at the backtrace and see what is going on.  It is just a bunch of
numbers and question
marks (??) with maybe a public function name.

The second question:  Is the backtrace from an unoptimized build?

Optimized builds provide some performance improvement for normal
operation.  However,
what the compiler does to the code can be difficult to figure out in a
backtrace.  The compiler
can optimize out variables that could make understanding what is going on
harder.

So it depends upon what happened if an optimized backtrace can help find
the root cause
or not.  It is up to you whether you want to run in production with an
optimized build or not.

I also recommend always compiling with BETTER_BACKTRACES enabled in
menuselect.
With that enabled then any backtraces put into log files by FRACKS and the
lock output
from the CLI command "core show locks" is understandable when symbols are
available.
You get backtraces similar to the backtrace sample above.

Richard
-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the ne

Re: [asterisk-users] How can I check backtrace files ?

2017-12-06 Thread Olivier
2017-12-06 15:52 GMT+01:00 George Joseph :

>
>
> On Tue, Dec 5, 2017 at 9:20 AM, Olivier  wrote:
>
>> Hello,
>>
>> I carefully read [1] which details how backtrace files can be produced.
>>
>> Maybe this seems natural to some, but how can I go one step futher, and
>> check that produced XXX-thread1.txt, XXX-brief.txt, ... files are OK ?
>>
>> In other words, where can I find an example on how to use one of those
>> files and check by myself, that if a system ever fails, I won't have to
>> wait for another failure to provide required data to support teams ?
>>
>
> It's a great question but I could spend a week answering it and not
> scratch the surface. :)
>

Thanks very much for trying, anyway ;-)


>  It's not a straightforward thing unless you know the code in question.
> The most common is a segmentation fault (segfault or SEGV).
>

True ! I experienced segfaults lately and I could not configure the
platform I used then (Debian Jessie) to produce core files in a directory
Asterisk can write into.
Now, with Debian Stretch, I can produce core file at will (with a kill -s
SIGSEGV ).
I checked ast_coredumped worked OK as it produced thread.txt files and so
on.

Ideally, I would like to go one step further: check now that a future .txt
file would be "workable" (and not "you should have compiled with option XXX
or configured with option YYY) .



>   In that case, the thread1.txt file is the place to start.  Since most of
> the objects passed around are really pointers to objects, the most obvious
> cause would be a 0x0 for a value.  So for instance "chan=0x0".  That would
> be a pointer to a channel object that was not set when it probably should
> have been.  Unfortunately, it's not only 0x0 that could cause a segv.
>  Anytime a program tries to access memory it doesn't own, that signal is
> raised.  So let's say there a 256 byte buffer which the process owns.  If
> there's a bug somewhere that causes the program to try and access bytes
> beyond the end of the buffer, you MAY get a segv if that process doesn't
> also own that memory.  If this case, the backtrace won't show anything
> obvious because the pointers all look valid.  There probably would be an
> index variable (i or ix, etc) that may be set to 257 but you'd have to know
> that the buffer was only 256 bytes to realize that that was the issue.
>

So, with an artificial kill -s SIGSEGV , does the bellow output
prove I have a workable .txt files (having .txt files that let people find
the root cause of the issue is another story as we probably can only hope
for the best here) ?


# head core-brief.txt
!@!@!@! brief.txt !@!@!@!


Thread 38 (Thread 0x7f2aa5dd0700 (LWP 992)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at
../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:225
#1  0x55cdcb69ae84 in __ast_cond_timedwait (filename=0x55cdcb7d4910
"threadpool.c", lineno=1131, func=0x55cdcb7d4ea8 <__PRETTY_FUNCTION__.8978>
"worker_idle", cond_name=0x55cdcb7d4b7f "&worker->cond",
mutex_name=0x55cdcb7d4b71 "&worker->lock", cond=0x7f2abc000978,
t=0x7f2abc0009a8, abstime=0x7f2aa5dcfc30) at lock.c:668
#2  0x55cdcb75d153 in worker_idle (worker=0x7f2abc000970) at
threadpool.c:1131
#3  0x55cdcb75ce61 in worker_start (arg=0x7f2abc000970) at
threadpool.c:1022
#4  0x55cdcb769a8c in dummy_start (data=0x7f2abc000a80) at utils.c:1238
#5  0x7f2aeddad494 in start_thread (arg=0x7f2aa5dd0700) at
pthread_create.c:333


> Deadlocks are even harder to troubleshoot.  For that, you need to look at
> full.txt to see where the threads are stuck and find the 1 thread that's
> holding the lock that the others are stuck on.
>
> Sorry.  I wish I had a better answer because it'd help a lot if folks
> could do more investigation themselves.
>
>
>
>
>
>>
>> Best regards
>>
>> [1] https://wiki.asterisk.org/wiki/display/AST/Getting+a+Backtrace
>>
>> --
>> _
>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>
>> Check out the new Asterisk community forum at:
>> https://community.asterisk.org/
>>
>> New to Asterisk? Start here:
>>   https://wiki.asterisk.org/wiki/display/AST/Getting+Started
>>
>> asterisk-users mailing list
>> To UNSUBSCRIBE or update options visit:
>>http://lists.digium.com/mailman/listinfo/asterisk-users
>>
>
>
>
> --
> George Joseph
> Digium, Inc. | Software Developer
> 445 Jan Davis Drive NW - Huntsville, AL 35806 - US
> Check us out at: www.digium.com & www.asterisk.org
>
>
> --
> _
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> Check out the new Asterisk community forum at: https://community.asterisk.
> org/
>
> New to Asterisk? Start here:
>   https://wiki.asterisk.org/wiki/display/AST/Getting+Started
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>http://lists.digium.com/mailman/listinfo/asterisk-users
>
-- 
_

Re: [asterisk-users] Simple speech recognition for driving IVR - "press or say one".

2017-12-06 Thread Jean Aunis

Hello,

Maybe you can do this by mixing your current code with an ARI 
application. I mean :


- just before entering the speech recognition AGI, enter your ARI 
application


- in the application, subscribe to the channel's events, setup DTMF 
event handlers, and call "continueInDialpan"


- then enter the speech recognition AGI as before

Regards

Jean Aunis


Le 06/12/2017 à 15:50, Jonathan H a écrit :

Thanks Jurijs,

Yes, in fact I'm already using that, and it works fine. The problem
here is that I cannot find a way of recording speech AND listening for
a DTMF digit being pressed as an alternative.

That's where the problem lies.

J.




--
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
 https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] Simple speech recognition for driving IVR - "press or say one".

2017-12-06 Thread Jurijs Ivolga
Hi,

Please check code of it. It listens for # and it is quite easy to add all
other keys 1-9 and etc

Then change code accordingly so script returns value of key.

As far as I remember it wasn't hard.

With kind regards,


Jurijs

On Wed, Dec 6, 2017 at 4:50 PM, Jonathan H  wrote:

> Thanks Jurijs,
>
> Yes, in fact I'm already using that, and it works fine. The problem
> here is that I cannot find a way of recording speech AND listening for
> a DTMF digit being pressed as an alternative.
>
> That's where the problem lies.
>
> J.
>
> --
> _
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> Check out the new Asterisk community forum at: https://community.asterisk.
> org/
>
> New to Asterisk? Start here:
>   https://wiki.asterisk.org/wiki/display/AST/Getting+Started
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>http://lists.digium.com/mailman/listinfo/asterisk-users
>
-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] How can I check backtrace files ?

2017-12-06 Thread George Joseph
On Tue, Dec 5, 2017 at 9:20 AM, Olivier  wrote:

> Hello,
>
> I carefully read [1] which details how backtrace files can be produced.
>
> Maybe this seems natural to some, but how can I go one step futher, and
> check that produced XXX-thread1.txt, XXX-brief.txt, ... files are OK ?
>
> In other words, where can I find an example on how to use one of those
> files and check by myself, that if a system ever fails, I won't have to
> wait for another failure to provide required data to support teams ?
>

It's a great question but I could spend a week answering it and not scratch
the surface. :)   It's not a straightforward thing unless you know the code
in question.  The most common is a segmentation fault (segfault or SEGV).
In that case, the thread1.txt file is the place to start.  Since most of
the objects passed around are really pointers to objects, the most obvious
cause would be a 0x0 for a value.  So for instance "chan=0x0".  That would
be a pointer to a channel object that was not set when it probably should
have been.  Unfortunately, it's not only 0x0 that could cause a segv.
 Anytime a program tries to access memory it doesn't own, that signal is
raised.  So let's say there a 256 byte buffer which the process owns.  If
there's a bug somewhere that causes the program to try and access bytes
beyond the end of the buffer, you MAY get a segv if that process doesn't
also own that memory.  If this case, the backtrace won't show anything
obvious because the pointers all look valid.  There probably would be an
index variable (i or ix, etc) that may be set to 257 but you'd have to know
that the buffer was only 256 bytes to realize that that was the issue.

Deadlocks are even harder to troubleshoot.  For that, you need to look at
full.txt to see where the threads are stuck and find the 1 thread that's
holding the lock that the others are stuck on.

Sorry.  I wish I had a better answer because it'd help a lot if folks could
do more investigation themselves.





>
> Best regards
>
> [1] https://wiki.asterisk.org/wiki/display/AST/Getting+a+Backtrace
>
> --
> _
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> Check out the new Asterisk community forum at: https://community.asterisk.
> org/
>
> New to Asterisk? Start here:
>   https://wiki.asterisk.org/wiki/display/AST/Getting+Started
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>http://lists.digium.com/mailman/listinfo/asterisk-users
>



-- 
George Joseph
Digium, Inc. | Software Developer
445 Jan Davis Drive NW - Huntsville, AL 35806 - US
Check us out at: www.digium.com & www.asterisk.org
-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] Simple speech recognition for driving IVR - "press or say one".

2017-12-06 Thread Jonathan H
Thanks Jurijs,

Yes, in fact I'm already using that, and it works fine. The problem
here is that I cannot find a way of recording speech AND listening for
a DTMF digit being pressed as an alternative.

That's where the problem lies.

J.

-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [asterisk-users] Simple speech recognition for driving IVR - "press or say one".

2017-12-06 Thread Jurijs Ivolga
Hi,

I was able to achieve this using:

http://zaf.github.io/asterisk-speech-recog/

I needed to change code, so it wasn't working out-of-the-box. I did this
couple of years ago and unfortunately I do not have code anymore. But it
wasn't too difficult.

With kind regards,

Jurijs

On Wed, Dec 6, 2017 at 4:33 PM, Jonathan H  wrote:

> Briefly: I want to be able to have "press or say (number)", with
> Asterisk listening for a spoken number, but accepting a DTMF digit,
> too.
>
> I'm posting everything I found so far, here, partly to show working,
> but also in case anyone else finds it useful. So, moving on
>
> This looked hopeful for a moment until I realised that it doesn't do DTMF:
> https://wiki.asterisk.org/wiki/display/AST/Asterisk+15+
> Application_SpeechBackground
>
> So then there's
> https://wiki.asterisk.org/wiki/display/AST/Asterisk+15+Application_Record,
> which can terminate on any DTMF key with "y", but according to the
> docs, "RECORD_STATUS" only sets a flag of "DTMF" (A terminating DTMF
> was received ('#' or '*', depending upon option 't')).
> So, I don't get to know which key was pressed via that method, either.
>
> There's very little information I can find about the built-in
> functions for speech recognition.
> https://wiki.asterisk.org/wiki/display/AST/Speech+Recognition+API
> doesn't actually explain how to integrate the actual speech engines.
>
> In this previous forum post,
> https://community.asterisk.org/t/asterisk-15-jack-
> streams-speech-recognition-so-many-questions/72108/2
> , jcolp explained that most people don't use the speech interface
> anyway, because
> "Asterisk modules are written in C, and it’s more difficult to do
> things in that fashion. Using the Record and ship it off using Python,
> etc, is just easier and gets the job done for a lot of people to where
> they find it acceptable.
> So, AGI it is! But I'm still stuck on how I record for speech AND get
> a DTMF if it was dialled.
>
> Regarding speech in general, even "Asterisk - The Definitive Guide" just
> says:
>
> "Asterisk does not have speech recognition built in, but there are
> many third-party speech
> recognition packages that integrate with Asterisk. Much of that is
> outside of the scope
> of this book, as those applications are external to Asterisk" - helpful!
>
> The speech-rec mailing list at
> http://lists.digium.com/pipermail/asterisk-speech-rec/ hasn't been
> posted to since 2013
>
> Someone else asked about speech recognition and unimrcp in this post:
> http://lists.digium.com/pipermail/asterisk-users/2017-February/290875.html
>
> uniMCRP https://mojolingo.com/blog/2015/speech-rec-asterisk-get-started/
> http://www.unimrcp.org/manuals/html/AsteriskManual.html#_Toc424230605
> This has a Google Speech Recogniser plugin, but it's $50 per channel
> http://www.unimrcp.org/gsr
>
> *Reasons to use Lex over Google TTS*
> • Has just been released in eu-west-1:
> https://forums.aws.amazon.com/ann.jspa?annID=5186
> • Supports 8KHz telepony https://forums.aws.amazon.com/ann.jspa?annID=4775
> • Is in the core AWS SDK
> http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/LexRuntime.html
> • Has a number slot type:
> http://docs.aws.amazon.com/lex/latest/dg/built-in-slot-number.html
>  - this means no accidental recognition of "won", "one" or "juan" instead
> of 1!
>
> The pricing is definitely right: "The cost for 1,000 speech requests
> would be $4.00, and 1,000 text requests would cost $0.75. From the
> date you get started with Amazon Lex, you can process up to 10,000
> text requests and 5,000 speech requests per month for free for the
> first year".
>
> Amazon Transcribe looks promising too, but is only available for
> developer invitation at this time:
> https://aws.amazon.com/transcribe/ https://aws.amazon.com/
> transcribe/pricing/
>
> But all I need now is the quickest, simplest way to send Lex a short
> 8KHz file and get a single digit back, as quickly and reliably as
> possible.
>
> Before I travel too far down this road, can someone point me in the
> right direction and possibly steer me away from the wrong path?!
>
> --
> _
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> Check out the new Asterisk community forum at: https://community.asterisk.
> org/
>
> New to Asterisk? Start here:
>   https://wiki.asterisk.org/wiki/display/AST/Getting+Started
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>http://lists.digium.com/mailman/listinfo/asterisk-users
-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman

Re: [asterisk-users] Simple speech recognition for driving IVR - "press or say one".

2017-12-06 Thread Jurijs Ivolga
Hi,

I was able to achieve this using:


Jurijs

On Wed, Dec 6, 2017 at 4:33 PM, Jonathan H  wrote:

> Briefly: I want to be able to have "press or say (number)", with
> Asterisk listening for a spoken number, but accepting a DTMF digit,
> too.
>
> I'm posting everything I found so far, here, partly to show working,
> but also in case anyone else finds it useful. So, moving on
>
> This looked hopeful for a moment until I realised that it doesn't do DTMF:
> https://wiki.asterisk.org/wiki/display/AST/Asterisk+15+
> Application_SpeechBackground
>
> So then there's
> https://wiki.asterisk.org/wiki/display/AST/Asterisk+15+Application_Record,
> which can terminate on any DTMF key with "y", but according to the
> docs, "RECORD_STATUS" only sets a flag of "DTMF" (A terminating DTMF
> was received ('#' or '*', depending upon option 't')).
> So, I don't get to know which key was pressed via that method, either.
>
> There's very little information I can find about the built-in
> functions for speech recognition.
> https://wiki.asterisk.org/wiki/display/AST/Speech+Recognition+API
> doesn't actually explain how to integrate the actual speech engines.
>
> In this previous forum post,
> https://community.asterisk.org/t/asterisk-15-jack-
> streams-speech-recognition-so-many-questions/72108/2
> , jcolp explained that most people don't use the speech interface
> anyway, because
> "Asterisk modules are written in C, and it’s more difficult to do
> things in that fashion. Using the Record and ship it off using Python,
> etc, is just easier and gets the job done for a lot of people to where
> they find it acceptable.
> So, AGI it is! But I'm still stuck on how I record for speech AND get
> a DTMF if it was dialled.
>
> Regarding speech in general, even "Asterisk - The Definitive Guide" just
> says:
>
> "Asterisk does not have speech recognition built in, but there are
> many third-party speech
> recognition packages that integrate with Asterisk. Much of that is
> outside of the scope
> of this book, as those applications are external to Asterisk" - helpful!
>
> The speech-rec mailing list at
> http://lists.digium.com/pipermail/asterisk-speech-rec/ hasn't been
> posted to since 2013
>
> Someone else asked about speech recognition and unimrcp in this post:
> http://lists.digium.com/pipermail/asterisk-users/2017-February/290875.html
>
> uniMCRP https://mojolingo.com/blog/2015/speech-rec-asterisk-get-started/
> http://www.unimrcp.org/manuals/html/AsteriskManual.html#_Toc424230605
> This has a Google Speech Recogniser plugin, but it's $50 per channel
> http://www.unimrcp.org/gsr
>
> *Reasons to use Lex over Google TTS*
> • Has just been released in eu-west-1:
> https://forums.aws.amazon.com/ann.jspa?annID=5186
> • Supports 8KHz telepony https://forums.aws.amazon.com/ann.jspa?annID=4775
> • Is in the core AWS SDK
> http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/LexRuntime.html
> • Has a number slot type:
> http://docs.aws.amazon.com/lex/latest/dg/built-in-slot-number.html
>  - this means no accidental recognition of "won", "one" or "juan" instead
> of 1!
>
> The pricing is definitely right: "The cost for 1,000 speech requests
> would be $4.00, and 1,000 text requests would cost $0.75. From the
> date you get started with Amazon Lex, you can process up to 10,000
> text requests and 5,000 speech requests per month for free for the
> first year".
>
> Amazon Transcribe looks promising too, but is only available for
> developer invitation at this time:
> https://aws.amazon.com/transcribe/ https://aws.amazon.com/
> transcribe/pricing/
>
> But all I need now is the quickest, simplest way to send Lex a short
> 8KHz file and get a single digit back, as quickly and reliably as
> possible.
>
> Before I travel too far down this road, can someone point me in the
> right direction and possibly steer me away from the wrong path?!
>
> --
> _
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> Check out the new Asterisk community forum at: https://community.asterisk.
> org/
>
> New to Asterisk? Start here:
>   https://wiki.asterisk.org/wiki/display/AST/Getting+Started
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>http://lists.digium.com/mailman/listinfo/asterisk-users
-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

[asterisk-users] Simple speech recognition for driving IVR - "press or say one".

2017-12-06 Thread Jonathan H
Briefly: I want to be able to have "press or say (number)", with
Asterisk listening for a spoken number, but accepting a DTMF digit,
too.

I'm posting everything I found so far, here, partly to show working,
but also in case anyone else finds it useful. So, moving on

This looked hopeful for a moment until I realised that it doesn't do DTMF:
https://wiki.asterisk.org/wiki/display/AST/Asterisk+15+Application_SpeechBackground

So then there's
https://wiki.asterisk.org/wiki/display/AST/Asterisk+15+Application_Record,
which can terminate on any DTMF key with "y", but according to the
docs, "RECORD_STATUS" only sets a flag of "DTMF" (A terminating DTMF
was received ('#' or '*', depending upon option 't')).
So, I don't get to know which key was pressed via that method, either.

There's very little information I can find about the built-in
functions for speech recognition.
https://wiki.asterisk.org/wiki/display/AST/Speech+Recognition+API
doesn't actually explain how to integrate the actual speech engines.

In this previous forum post,
https://community.asterisk.org/t/asterisk-15-jack-streams-speech-recognition-so-many-questions/72108/2
, jcolp explained that most people don't use the speech interface
anyway, because
"Asterisk modules are written in C, and it’s more difficult to do
things in that fashion. Using the Record and ship it off using Python,
etc, is just easier and gets the job done for a lot of people to where
they find it acceptable.
So, AGI it is! But I'm still stuck on how I record for speech AND get
a DTMF if it was dialled.

Regarding speech in general, even "Asterisk - The Definitive Guide" just says:

"Asterisk does not have speech recognition built in, but there are
many third-party speech
recognition packages that integrate with Asterisk. Much of that is
outside of the scope
of this book, as those applications are external to Asterisk" - helpful!

The speech-rec mailing list at
http://lists.digium.com/pipermail/asterisk-speech-rec/ hasn't been
posted to since 2013

Someone else asked about speech recognition and unimrcp in this post:
http://lists.digium.com/pipermail/asterisk-users/2017-February/290875.html

uniMCRP https://mojolingo.com/blog/2015/speech-rec-asterisk-get-started/
http://www.unimrcp.org/manuals/html/AsteriskManual.html#_Toc424230605
This has a Google Speech Recogniser plugin, but it's $50 per channel
http://www.unimrcp.org/gsr

*Reasons to use Lex over Google TTS*
• Has just been released in eu-west-1:
https://forums.aws.amazon.com/ann.jspa?annID=5186
• Supports 8KHz telepony https://forums.aws.amazon.com/ann.jspa?annID=4775
• Is in the core AWS SDK
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/LexRuntime.html
• Has a number slot type:
http://docs.aws.amazon.com/lex/latest/dg/built-in-slot-number.html
 - this means no accidental recognition of "won", "one" or "juan" instead of 1!

The pricing is definitely right: "The cost for 1,000 speech requests
would be $4.00, and 1,000 text requests would cost $0.75. From the
date you get started with Amazon Lex, you can process up to 10,000
text requests and 5,000 speech requests per month for free for the
first year".

Amazon Transcribe looks promising too, but is only available for
developer invitation at this time:
https://aws.amazon.com/transcribe/ https://aws.amazon.com/transcribe/pricing/

But all I need now is the quickest, simplest way to send Lex a short
8KHz file and get a single digit back, as quickly and reliably as
possible.

Before I travel too far down this road, can someone point me in the
right direction and possibly steer me away from the wrong path?!

-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users