I HAVE A DREAM Create IVR with Speech Recognition

restamp

Member
Joined
Apr 24, 2016
Messages
97
Reaction score
52
Hi. I'm new to this forum (and thanks to whoever approved me this morning). I came across this website while researching what options I had for throwing together a simple IVR which accepts and acts on spoken commands without any need for DTMF. Essentially, I'd like to bypass the brain-dead hands-free system in my car by placing all outgoing calls through a special number which will allow me to speak the name or number of the called party and place the call from there. I intend to run the engine for this on a VPS. Ward's tutorial on Asterisk speech recognition intrigued me: It seemed that by combining PAIF Asterisk with the Google Speech Recognition service, I'd have everything I'd need to perform this task. Price is significant: Although there are turnkey (more or less) systems out there which purport to have this functionality, they are intended for much larger implementations and priced accordingly. This is more of a hobby for me, so I'd like to do it on the cheap.

Can anyone comment on whether this is even viable, and whether there are any major gotchas involved? How much effort it would take to do this? Is there a simpler solution I haven't come across yet? Are VPSes capable of providing the responsivity required for passing VoIP traffic?

Myself: Although I'm more familiar with the Debian side of the house, I've run CentOS 5 and 6 VPSes for years, so I know the basics. By following the directions Mango posted to a forum I was involved with years ago I set up a small Asterisk server on an arm-based Pogoplug here at the house and use it to this day for doing the XMPP protocol for my original Google Voice line (although it's simpler just to use an OBi device to do this today).

If you all think this is a viable and not too time-consuming project, I'll acquire a VPS and give it a shot. As a test, I tried loading PAIF on a VM running CentOS here locally, and frankly, I ran into several problems. But before delving into those, I'd like to have some confidence from the experts that such an implementation would actually be feasible and work well enough to be worth giving it a shot.

Thanks,
Rob
 

restamp

Member
Joined
Apr 24, 2016
Messages
97
Reaction score
52
Thanks for responding to my question, Henry. All my mobile phones are Android devices. Don't get me wrong: Yes, I could dig the phone out of my pocket and make the call that way, but I truly desire to have real "hands-free" capability in the car and keep my eyes on the road. The problem is that my hands-free setup -- I drive a 2012 Toyota Camry -- provides no way that I can tell to utilize the voice recognition built into the phone. You either have to accept what it provides, which is a strange concoction of 15 "Speed Dials" and a "Recent Call" list, or bypass it entirely and fumble with the phone to make a call while driving. There is no way to access "OK Google" from the car setup itself and the phone safely in my pocket, at least that I can see. If there were, it would certainly make things easier, and I'm all ears if I've missed something.
 

henry

Member
Joined
Apr 2, 2014
Messages
99
Reaction score
30
Well, two points...

Assuming you made PIAF do the job you need, you have to get online to make it functional.
My first question was about just that. Just curiosity. It could be a RPi with a touch screen and some wireless modem (SIM).
That means, you will need a data-enabled SIM card, what smartphones use...

The second, both platforms - Android and iOS, together controlling 90%+ of the market - actively develop their car targeting versions.
Hands-free, attached to a screen, voice controlled... I think there are cars on the road using it...

All this is basic knowledge. I was trying to understand how you see this working.
And how will it be better/cheaper than what is coming from the big guys...
 

restamp

Member
Joined
Apr 24, 2016
Messages
97
Reaction score
52
I don't follow you as to why I'd need data on my Android phone to accomplish this: I view it as simply bypassing the brain-dead Toyota hands-free restrictions, while retaining the desirable parts of "hands-free" operation, by pushing the voice command functionality downstream, since the car doesn't provide it, and won't allow you direct access to what's on your smart phone (unless you dig out the phone and use it directly of course, which I'd prefer not to do while driving). I envision simply setting up a Toyota speed dial to the PIAF, with the PIAF in turn answering the call and (based on caller-id) sending it to the Call-by-Name app, which would ask for a name and turn it into a DISA call -- all done via voice commands with no need for any DTMF. The cost would be minimal, on the order of a buck a month for the VM. Indeed, if I went to the trouble of acquiring a voip.ms toll-free DID and attaching it to the PBX, I could actually save money over a direct-dialed call on my lycamobile account.

Rather than carrying on a protracted conversation, I spent the last day building and configuring a PIAF. It is truly an impressive package -- certainly excessive for my personal needs, but hey, if it works, why not use it. I pretty much have it configured the way I need it now, but there are a few rough edges: The Call-by-Name function only gives one attempt at a name and then hangs up. I know I can loop it by calling it from an IVR, but I want to take a look at the code to see if I can easily make it a bit more human friendly. I'd like to have the program respond to a request to dial a spoken number as well. A pipe dream would be to have the voice command infrastructure follow the conversation and respond in-line to commands such as "Flash Hook" or "Touchtone 7".

BTW, does anyone know how many sessions (inbound and outbound) are allowed by GV? Is it only two, or will they support more?
 

MGD4me

Guru
Joined
Feb 3, 2009
Messages
429
Reaction score
56
Location
British Columbia
A pipe dream would be to have the voice command infrastructure follow the conversation and respond in-line to commands such as "Flash Hook" or "Touchtone 7"
As long as you can separate "pipe dream" from "wet dream", I think you will be fine.

While I personally don't have such a "need" (my car already has voice recognition), I hope you continue to post your findings, or solutions. This is what Community Support is all about. Love the enthusiasm!!
 

restamp

Member
Joined
Apr 24, 2016
Messages
97
Reaction score
52
It's been a couple months since I started this thread, and given that the outcome has been relatively stable for a while and I have moved on to other things, I thought I would pass my changes along for anyone who might be interested in them. Although the result is still far from perfect, after using the modified code for the past six weeks, I think it is an improvement over what was there before. The modified PHP code, along with the associated modified Asterisk context (a copy of which is embedded in the PHP comments section) may be found here:

http://cboh.org/piaf/nv-callwho.php

Read the comments in the code for instructions on how to install it. The original PHP code and Asterisk context comes from an "The Incredible PBX/FAX 13-12.3 for CentOS 6" install and were only tested there. I would have liked to have carried the project farther by doing such things as asking for confirmation, but given the relative tight constraints Google has imposed for its Speech-To-Text translations, I decided against this.

FWIW, my current project involves using ODBC to access the Asteridex database so that inbound-routing can be altered based on whether or not the CallerID of the incoming call is found in the DB. If anyone is interested, I can provide more details. In fact, I'd rather appreciate an expert's opinion. In a nutshell, I got it to work, although I rather suspect with my limited knowledge of Asterisk I did not go about it in the most judicious way.
 
  • Like
Reactions: wardmundy and jerrm

jerrm

Guru
Joined
Sep 23, 2015
Messages
514
Reaction score
213
It's been a couple months since I started this thread, and given that the outcome has been relatively stable for a while and I have moved on to other things, I thought I would pass my changes along for anyone who might be interested in them. Although the result is still far from perfect, after using the modified code for the past six weeks, I think it is an improvement over what was there before. The modified PHP code, along with the associated modified Asterisk context (a copy of which is embedded in the PHP comments section) may be found here:

http://cboh.org/piaf/nv-callwho.php

Read the comments in the code for instructions on how to install it. The original PHP code and Asterisk context comes from an "The Incredible PBX/FAX 13-12.3 for CentOS 6" install and were only tested there. I would have liked to have carried the project farther by doing such things as asking for confirmation, but given the relative tight constraints Google has imposed for its Speech-To-Text translations, I decided against this.

FWIW, my current project involves using ODBC to access the Asteridex database so that inbound-routing can be altered based on whether or not the CallerID of the incoming call is found in the DB. If anyone is interested, I can provide more details. In fact, I'd rather appreciate an expert's opinion. In a nutshell, I got it to work, although I rather suspect with my limited knowledge of Asterisk I did not go about it in the most judicious way.
Thank you.

Soundex always sucked for this use, implementing something more useful had been on my wish-I-had-time-list for months, now I don't need to.

Anyone using Asteridex 411 functionality should try this.
 

Members online

PIAF 5 - Powered by 3CX

Forum statistics

Threads
22,367
Messages
137,355
Members
14,575
Latest member
Issue