Richard Davies wrote: The UK has a good crop of technology pioneers in cloud computing - for example ElasticHosts, FlexiScale, Flexiant, OnApp - and also some strong government initiatives such as G-Cloud.
We will have to see whether this kind of technical leadership converts into swift mass-market adoption or not.
Someday soon you'll be able to tell the Internet what you're interested in and have it respond with the information you need. You could instruct a Web site to monitor traffic reports, for example, then tell it where you're heading. If there's a traffic jam, the Web site will dial your cell phone to alert you and suggest an alternate route.
VoiceXML is the technology that will make this happen.
In Parts 1 and 2 of this series (XML-J, Vol. 2, issues 10, 11) I briefly discussed how to transform an XML document into HTML (Web) using client-side transformation with Internet Explorer 5.0 and using XSLT to transform an XML document into WML (WAP).
In this tutorial I'll discuss how, using the same framework we developed in Part 2, XSLT can transform our XML example to VoiceXML (speech). The primary purpose of the tutorial, however, is to introduce the following:
The basics of VoiceXML 2.0
The use of XSLT to transform XML to VoiceXML
Since this is only a very basic introduction to VoiceXML, we won't be focusing on developing VoiceXML applications, but rather the transformation. In fact, the resultant VoiceXML is a very simple document that doesn't prompt the user for any inputs. If you want to lean more about VoiceXML 2.0 and how to develop advanced features, please check the Resources section at the end of this tutorial.
What Is VoiceXML?
VoiceXML is an XML-based markup language that defines a spoken dialog just as HTML defines a graphical Web page. It was developed by the VoiceXML Forum as a consolidation of several proprietary formats developed earlier by the forum founders - AT&T, IBM, Lucent, and Motorola. The VoiceXML 1.0 specification was published in March 2000. It did not, however, define speech grammar or audio format, leaving this to each vendor to implement, thus limiting the ease of portability of VoiceXML applications. Actually, I developed a few 100% VoiceXML 1.0-compliant applications using one of the voice vendors but they wouldn't work on another voice vendor. Talk about defeating the purpose of having specifications!
Fortunately, on October 23, 2001, the World Wide Web Consortium published the VoiceXML 2.0 standard. This new standard is expected to be adopted quickly in the voice industry, and new voice-based applications will be designed predominantly in accordance with VoiceXML. Major actors in the voice industry are backing the VoiceXML 2.0 standard specified by the W3C subgroup for VoiceXML.
In fact, the VoiceXML Forum has signed a Memorandum of Understanding with the W3C marking the Forum's release of the trademark to the public domain. The signing of the MOU coincided with the W3C release of the first Public Working Draft of VoiceXML version 2.0.
The 2.0 specification is based on extensive industry experience with VoiceXML 1.0. The principal differences:
VoiceXML 2.0 requires support for the W3C speech grammar, audio, and speech synthesis languages. It includes a new log element and makes obsolescent the dtmf, emp, div, pros, and sayas elements. There are many changes to other elements and clarifications that will ensure greater interoperability.
The specification has been clarified in many areas and reorganized for ease of understanding.
An application written in VoiceXML defines the prompts to be uttered by the system, the speech recognition grammars, and the actions the system is to take based on what the user says. In many ways these capabilities are similar to those of a speech-enabled application in a traditional Interactive Voice Response environment. In fact, to an end user, spoken access to the Internet using a VoiceXML application will appear very similar to accessing an IVR-based speech-enabled application.
How Does VoiceXML Technology Differ from IVR Systems?
VoiceXML has at least three advantages over proprietary voice platforms:
It's open platform: VoiceXML was developed with an open platform in mind. There's no need to use proprietary tools or run on proprietary platforms. In contrast, some speech applications (including IVR) were developed using proprietary tools and run on proprietary platforms. Changing platforms is extremely labor-intensive and expensive. VoiceXML provides an open environment with standardized dialog scripting and speech grammar formats that developers have to learn only once.
You can leverage existing Web integration: VoiceXML allows back-end development to be done once for any Web environment, spoken or graphical. In addition, back-end development is done with standard Web development techniques for both client- and server-side development, such as CGI scripts, Java servlets, and JSP. This allows application developers to leverage existing Web development skills rather than having to learn proprietary systems.
It's declarative and simple: VoiceXML attempts to make the description of the dialog declarative. This means that the developer describes the dialog that is to be implemented at a relatively high level. The voice browser platform handles the low-level details of transitioning between dialog states, activating speech recognizers, handling telephony, and playing prompts. Most current application development environments are procedural in that they require the developer to handle these details manually, through programming in languages like C++, Java, Visual Basic, and proprietary IVR scripting languages.
What Do We Need?
This tutorial requires the use of the following software and services:
Our Original XML Document
Listing 1 shows our original XML document (mybooks.xml). We won't reference any XSL stylesheet onto our XML document because we'll plug in our VoiceXML, XSL, and XML files to perform the translation from a command line.
The Goal
Our goal is to produce a VoiceXML document and upload it as in Figure 1.
Creating the Stylesheet Document
Let's devise a stylesheet to convert the mybooks.xml document to VoiceXML. Listing 2 shows a complete XSL file (mybooks2voice.xsl) to transform our XML file (mybooks.xml) into a VoiceXML file (mybooks_vxml.vxml). Listing 3 shows a completely transformed VoiceXML file.
Performing the Transformation from the Command Line
As explained in Part 2, you must include xalan.jar and xerces.jar on your system class path to perform the translation. Java.org.apache.xalan.xslt.Process provides a basic utility for performing transformations from the command line. The command line for most standard transformations is:
where "xmlSource" is the XML source file name, "stylesheet" is the XSL stylesheet file name, and "outputfile" is the output file name. If you want the output to be displayed on the screen, simply omit the -out flag and argument.
I've saved both my mybooks.xml and mybooks2voice.xsl in the d:\gotxslt directory. To perform the translation, type:
If all goes well, a new file, mybooks_vxml.vxml, will be the output from the XML to VoiceXML translation. This file is a pure ASCII file, so it can be opened and studied in any text editor.
Using/Configuring Tellme Studio
Once you register with Tellme Studio, click on "MyStudio." On this page are two tabs, Application URL and Scratchpad. Click on Application URL tab. Enter the URL for your VoiceXML file (mybooks_vxml.vxml). For example:
Obviously, you need to upload this file to your Web server for the Tellme application to see your file. You can modify the Application URL for your application at any time from your MyStudio page by updating the information and clicking "update".
Note: If you're going to use Geocities (Yahoo's free service) as your Web server, you need to change the extension from ".vxml" to ".xml" in order to upload the file. This should be okay since VoiceXML is an XML file.
Don't Have a Web Server?
Want to test some simple VoiceXML without having to save it to a Web server? Just click and copy the VoiceXML document, then click Scratchpad tab and paste it in. You can also click on the "check syntax" button to see if any errors occurred during the copy/paste procedure.
Now all you have to do is call 1-800-555-VXML to preview it - provided that you entered your developer ID and password. That's all there is to it.
Understanding Our
VoiceXML Output
Now let's take a closer look at our mybooks_vxml.vxml. We won't go over the stylesheet because it's simple and so easy to understand. Instead, we'll go over the output VoiceXML file (see Listing 2) to familiarize ourselves with VoiceXML syntax.
Since VoiceXML belongs to the XML family, the first line of the XML declaration is obligatory. After some PI (processing instruction) for the stylesheet, we match the root element, <BOOKS>, which defines the top-level (root) element for the document.
Next we have to let the voice browser know that we're conforming to VoiceXML 2.0. Currently, VoiceXML provides two types of dialogs: <form> and <menu>. The first provides information for the user or presents fields to be filled by the user input. Every <form> dialog contains one or more form items, which are elements within a form that describe some kind of user interaction related to filling in the form.
The <menu> element presents a list of choices to the user and transitions to the chosen information. The <menu> is a convenient syntactic shorthand for a form containing a single anonymous field that prompts the user to make a choice and transitions to different places based on that choice.
Moving further into the document, the first form item we see is <block>. A <block> is a kind of executable context that provides a set of commands to be executed sequentially. Blocks are usually used for presenting information to the user. Within the <block>, the <prompt> and <audio> are used.
Note: The Tellme Voice Application Network integrates a third-party text-to- speech (TTS) engine to convert text to speech. Formerly, Tellme used Lernout & Hauspie RealSpeak for TTS support. Tellme now uses AT&T Natural Voices to perform this task. Per Tellme and AT&T, "The AT&T Labs Natural Voices TTS engine increases the natural quality of synthetic speech so that customers can comfortably listen for longer periods of time - without fatigue or annoyance." In other words, Tellme switched to AT&T Natural Voices for its superior speech synthesis capabilities.
The switch may introduce some incompatibilities that require you to modify the TTS strings in your application. Learn about the specific differences at http://studio.tellme.com/general/tts.html.
In our example we used the TTS engine for all the prompt elements, but you can also use an audio element inside the prompt element to specify a file containing recorded audio. The
Also check out the XSLT Editor from stylus studio for developing XSLT stylesheets, transforming XSLT, troubleshooting XSLT, XSLT syntax-help, etc. http://www.stylusstudio.com/xslt_editor.html
XSLT Editor wrote: Also check out the XSLT Editor from stylus studio for developing XSLT stylesheets, transforming XSLT, troubleshooting XSLT, XSLT syntax-help, etc. http://www.stylusstudio.com/xslt_editor.html
Swisscom, the Swiss telecom, is going into the cloud business.
Its subsidiary Swisscom IT Services AG has signed up with Red Hat as a Certified Cloud Provider and launched a public cloud Infrastructure-as-a-Service (IaaS) cloud targeting enterprise-class customers primarily in ...
Apache Deltacloud, the Red Hat-contributed ReSTful API that abstracts differences between clouds so services on any cloud can be managed – provided of course there’s a driver – has graduated from the Apache Foundation’s incubator and is now a full-fledged Top-Level Project (TLP)....
In a surprise move on Tuesday, January 10, Oracle wheeled out its Big Data Appliance.
That’s the one it said in October would be ready sometime in the first half. Only nobody believed it meant early in the first half. Heck, it’s not even clear anybody thought Oracle could make ...
Rackspace Hosting, the service leader in cloud computing, on Thursday announced its acquisition of SharePoint911, an industry leader in SharePoint consulting, training, and "JumpStart" services within SharePoint. The unification of both companies provides capabilities to deliver ...
CloudLinux, Inc., on Thursday released CafeFS 3, a virtualized file system for shared hosters that cages each customer within its own virtualized file system.
CageFS becomes part of CloudLinux OS at no additional charge. CloudLinux OS, the only commercially-supported Linux OS m...