There is certainly many interesting solutions to start an VoiceXML IVR solution with open source software, one of the most famous and successfully tested is Public VoiceXML Browser. That’s why I wanted to introduce it here so we can discuss further usage of this excellent piece of software.

What is publicVoiceXML?

publicVoiceXML implements (most of) the functionality described in the
Voice XML 2.0 W3C Candidate
Recommendation
and is a so called Voice XML 2.0 browser. publicVoiceXML
bridges the gap between the Voice XML script and the telephone lines. Voice XML
scripts only provide the processing logic description of an IVR (Interactive
Voice Response) application, publicVoiceXML takes care that this meaningfull XML
tags are combined to real functionality of the OS, e.g. to start writing to disc
when a VoiceXML record-tag is specified. For interpreting and parsing the
VoiceXML2.0 scripts OpenVXI  is used, an Open Source Voice XML interpreter
made by Speechworks. To implement the telephone networking functionality
publicVoiceXML uses CAPI2.0 on Linux and on Windows. publicVoiceXML also takes
care that text – strings that should be spoken to the user are converted to
speech using a third party TTS engine like IBM or Rhetorical.

What is OpenVXI?

Open VXI is a portable
open source library that interprets the VoiceXML dialog markup language. It
closely follows the VoiceXML 2.0 draft specification, avoiding proprietary
extensions of any kind. OpenVXI is only one component of a complete VoiceXML
platform. It includes only simulated speech recognition, prompt and
text-to-speech (TTS) capabilities, and telephony functions, with users
responsible for providing integration to actual components. Nonetheless, OpenVXI
provides a strong base that is far preferable to starting from scratch.
publicVoiceXML uses OpenVXI 2.0.1 at the moment.

Why do I choosed PublicVoiceXML?

I have certainly many reasons, the first one its very easy to install
configure. You can easily setup your home VoiceXML IVR system with 100% open
source software and start testing and developping great applications.
PublicVoiceXML run both on linux and windows operating systems. There is some
optional software that you will need like gcc 3.x ( not very optional, its
needed for compiling on linux ), Text to Speech Engine, CAPI 2.0, LibWWW, Xerces,
Spider Monkey …

The hardware part you’ll need an ISDN card with CAPI driver on Linux/Windows,
any CAPI 2.0 compatible card will work fine with the current PublicVoiceXML
version. Just notice that the line should be configured point to point and the
ISDN card should be an active one, not passive.

Installing and Configuring PublicVoiceXML

To install Public VoiceXML you need to compile  sources from
sourceforge.net, you can find the latest version 3.0 available for both windows
and linux.There is many issues related to the install so I want talk about
everything in details here, you can check the install instructions with sources
or ask specific question if I can help with it, the short answer is ./configure,
make all and make install that all linux users know.Otherwise you can just simply get
the binary version for windows users.

Configuration should be then done on config/OSBclient.cfg There are several
switches to specify the behaviour of publicVoiceXML, most of them you should
keep untouched besides you are sure what you do. The naming convention is
client.(Component).variable-name, where Component describes a functional module
like logging (log), http-fetching(inet), Java Script Interpreter (jsi), Voice
XML Interpreter (vxi) etc. Here is a list of the most important ones:

  • client.log.filename
    … Path and name of the log file
  • client.inet.cacheDir
    … directory where publicVoiceXML caches files
  • client.inet.userAgent
    … name (User Agent) of publicVoiceXML when it connects to a
    webserver
  • client.vxi.beepURI
    … Path and name of the file played for a beep="true" event
    indication
  • client.vxi.TTSEngineName
    … Name of the TTS engine to use (IBMViaVoice or Festival)
  • client.vxi.DDILen
    … number of digits to wait, see DDI feature
  • client.vxi.DtmfTimeOut
    … describe!
  • client.vxi.DtmfInterDigitTimeOut
    … describe!
  • client.vxi.DtmfTermChar
    … describe!
  • client.vxi.DtmfTermTimeOut
    … describe!
  • testClient.ISDNNumber
    … telephone number of running system

There are also some parameters you could define at Startup of the
application:

  • url (filename)
    … vxml file to start when a call is placed
  • channels (1|2|
    .. | 30)
    … number of ISDN channels to use
  • calls (-1|n)
    … number of calls to take in a row, only for testing purposes,
    it should be -1
  • config (filename)
    … path and name of config file

Recommanded configuration

A recommanded software and hardware configuration of Public VoiceXML is
certainly a linux system with gcc 3.x. An ISDN card with CAPI 2.0 driver

http://www.capi.org/pages/hardware.php
And Festival TTS Engine.

Certainly Apache, MySQL and PHP will be always there to test our dynamic
VoiceXML applications. Its recommanded even by the Public VoiceXML team.

More informations :

Public VoiceXML Browser website

Public VoiceXML
Sourceforge.net project page