What is SpeakRight?

SpeakRight is an open-source Java framework for writing speech recognition applications in VoiceXML.Unlike most proprietary speech-app tools, SpeakRight is code-based. Applications are written in Java using SpeakRight's extensible classes. Java IDEs such as Eclipse provide great debugging, fast Java-aware editing, and refactoring. Dynamic generation of VoiceXML is done using the popular StringTemplate templating framework. Read more...

See Getting Started, Tutorial, and Table of Contents

Saturday, February 17, 2007


SpeakRight provides the features needed to create a quality VUI (Voice User Interface):

  • VoiceXML 2.1 (partial support currently, more to come. See VoiceXML Tags Supported)
  • Inline, built-in, and external grammars (GSL and GRXML).
  • Prompts can be TTS, audio, or rendered data values. External prompts in XML files for multi-lingual apps and post-deployment flexibility.
  • Built-in support for noinput, nomatch, and help events. Escalated prompts.
  • Built-in validation. A flow object's ValidateInput method can validate user input and accept, ignore, or retry the input.
  • NBest with confirmation of each NBest result. Optional skip list.
  • A library of re-usable "speech objects", called SROs is provided for common tasks such as time and dates, numbers, and currency.
  • Disconnect, Transfer, and GotoUrl
  • Flow Objects. A flow object represents a dialog state such as asking for a flight number. Each flow object is rendered as one or more VoiceXML pages. Flow objects are fully object-oriented: you can use inheritance, composition, and nesting to combine flow objects. The speech application itself is a flow object.
  • Throw/catch used for errors such as max-retries-exceeded, validation-failed, or user-defined events. This simplifies callflow development because it encourages centralized error handling (although local error handling can be done when needed). Also, throw/catch increases software re-use because (unlike a 'goto') it decouples the part of the app throwing the error from the part of the app that handles it.
  • MVC architecture. Built-in model allows sharing of data between flow objects.
  • Flow objects can invoke business logic upon completion.
  • Extension points are available in the framework for customization.
Testing features
  • callflows can be unit tested in JUnit
  • interactive tester for executing callflows using the keyboard.
  • SpeakRight servlets have an HTML output mode. This can be used to test a callflow using an ordinary web browser.

SpeakRight doesn't provide features for data access or web services. Other open-source projects already do those things very well.

No comments: