VoiceXML Italian User Group

Home page  VoiceXML Links  VoiceXML Tutorial  News dai Working Groups Voice Browser e Multimodal Interaction del World Wide Web Consortium  Articoli  Accessibilita' del web mediante la voce

Libri Voice & Speech technologies  La nostra Newsletter  Il nostro Forum  Contatti  Gli eventi a cui lo User Group ha partecipato o partecipera'  Parlano (speriamo bene:-)) di noi...

La nuova rivoluzione della comunicazione? La tua voce.


IL LINGUAGGIO X+V
di Salvatore Zita



  1. Accesso multimodale

  2. Il linguaggio XHTML+Voice
  3. Realizzare un'applicazione in XHTML+Voice con IBM Multimodal Tools


1. Accesso multimodale

Le applicazioni multimodali rappresentano la convergenza di contenuti audio, video, testo ed immagini, con la possibilità di poter interagire attraverso diverse modalità con l’interfaccia utente. E’ possibile interagire con una applicazione in diversi modi: in input con tastiera, voce, keypad, mouse e penna stylus, e in output con audio, testo, video, grafici e voce sintetizzata.

Il termine “modale” indica proprio un tipo di meccanismo, un modo per l’input e l’output di una interfaccia utente.

Le applicazioni multimodali permettono diverse modalità di interazioni anche simultanee; il browser dell’utente permette a quest’ultimo di scegliere il tipo di interazione a seconda della situazione, dell’ambiente di utilizzo o delle preferenze dell’utente stesso.

Per la realizzazione di applicazioni multimodali sono necessari un linguaggio per la progettazione, un browser multimodale, cioè un interprete in grado di “decifrare” il linguaggio multimodale, un motore Text To Speech (TTS) che permette di trasformare in voce qualsiasi testo, un Automatic Speech Recognition (ASR) che a partire dalle parole definite in una grammatica traduce gli input vocali in testo.

Il concetto di accesso multimodale è abbastanza recente, pertanto non c’è ancora uno linguaggio di riferimento mondiale.

A tal uopo il consorzio W3C ha creato, nel 2002, un gruppo di lavoro, il Multimodal Interaction Working Group che sta valutando le varie soluzioni proprietarie fino ad oggi sviluppate per produrre una soluzione unica.

In particolare sono state introdotte le specifiche per un nuovo linguaggio di markup: EMMA (Extensible MultiModal Annotation) che si propone di estendere il Web per permettere agli utenti di scegliere dinamicamente il modo di interazione.

Per quanto riguarda invece i linguaggi non standard soluzioni molto interessanti sono state proposte da Cisco, Microsoft, Intel da un lato e da IBM, Motorola, Opera Software dall’altro.

I primi hanno introdotto il linguaggio SALT (Speech Application Language Tag) , con lo scopo di abilitare gli esistenti linguaggi di markup (HTML, XHTML, XML) all’accesso multimodale e in particolare all’utilizzo della voce nel Web.

I secondi invece hanno inviato al W3C la proposta di standardizzazione di un linguaggio per il multimodale chiamato XHTML+Voice (abbreviato X+V) che offre una naturale migrazione dalle attuali applicazioni voce basate su VoiceXML o visuali in XHTML ad un’unica applicazione che sfrutta i vantaggi della voce e dell’interfaccia grafica contemporaneamente. Il punto di forza di tale linguaggio sta nel fatto che le pagine HTML o XHTML che attualmente popolano il web possono essere facilmente convertite in X+V aggiungendo la parte di parlato in VoiceXML e inserendo dei tag di sincronizzazione.


2. Il linguaggio XHTML+Voice
  • Abstract

Il linguaggio X+V permette un’ interazione vocale per l’accesso a contenuti web attraverso l’integrazione del già maturo linguaggio XHTML e il modulo XML-Events con il linguaggio VoiceXML.

Il linguaggio include moduli vocali che supportano la sintesi vocale, i dialoghi e le grammatiche.

I collegamenti tra elementi di linguaggio vocale e elementi XHTML rispondono alle specifiche "DOM Events", quindi l’utilizzo di tali eventi è familiare agli sviluppatori web.

Le caratteristiche dell’interazione vocale sono integrate in XHTML e in CSS e quindi possono essere utilizzate in un contesto XHTML.

  • Introduzione

Il linguaggio X+V fa parte della famiglia di documenti XHTML, come specificato nell’"XHTML Modularization".

XHTML è esteso con un modulo che è un sottoinsieme del VoiceXML 2.0, con il modulo XML Events e un modulo che contiene un piccolo numero di elementi e attributi che estendono sia XHTML che VoiceXML: il modulo di estensione XHTML+Voice. Quest’ultimo modulo facilita lo scambio dei dati di input multimodali tra il dialogo VoiceXML e gli elementi di input o di testo XHTML.

Il modulo XML Events permette ai linguaggi XML ospiti di integrare eventi e collegamenti associati a tali eventi attraverso un’interfaccia DOM2Events.

Il linguaggio VoiceXML è stato progettato per creare dialoghi audio caratterizzati da parlato sintetizzato, audio digitale, riconoscimento del parlato e di toni di input DTMF e registrazione del parlato. Per dar vita al linguaggio X+V il VoiceXML è stato modularizzato (cioè è stato suddiviso in moduli ognuno dei quali contenente un particolare insieme di elementi) ed integrato nella famiglia di linguaggi XHTML che utilizzano la modularizzazione.

  • Principi di Base

XHTML+Voice è una applicazione XML 1.0

  1. Il modulo XHTML ospita gli altri.
  2. XHTML+Voice estende il modulo XHTML Basic con un sottoinsieme del VoiceXML 2.0, il modulo XML Events e un piccolo modulo di estensione.
  3. XHTML+Voice rende semplice la realizzazione di comuni scenari di interazione multimodale.
  4. VoiceXML è modularizzato per permettere la creazione di differenti profili a seconda delle applicazioni da realizzare.
  5. Le parti di VoiceXML che vengono utilizzate nelle applicazioni vocali indipendenti vengono eliminate nel linguaggio XHTML+Voice.
  6. La modularizzazione di VoiceXML non altera l’algoritmo di esecuzione standard VoiceXML. Nella fattispecie un dialogo vocale viene eseguito secondo le regole dell’algoritmo FIA (Form Interpretation Algorithm) .
  7. La Modularizzazione di VoiceXML non modifica le funzioni e le caratteristiche degli elementi e attributi che fanno parte del linguaggio.

Un documento X+V per essere conforme deve rispettare le seguenti regole:

1. Il documento deve essere validato secondo lo schema XML

2. L'elemento radice del documento deve essere <html>

3. Il nome del namespace di default deve essere http://www.w3.org/1999/xhtml

4. Se è presente la dichiarazione di un DOCTYPE e questa include un identificatore PUBLIC, tale dichiarazione deve far riferimento alla DTD all'indirizzo
http://www.voicexml.org/specs/multimodal/x+v/12/dtd/xhtml+voice12.dtd

Ecco un semplice esempio di una applicazione multimodale in X+V:

La prima riga di codice dell'esempio è la solita dichiarazione XML. L'elemento radice <html> contiene al suo interno la dichiarazione dei namespaces del linguaggio. Dovendo convivere più linguaggi in una stessa applicazione X+V, la dichiarazione dei namespaces è necessaria per non confondere eventuali elementi uguali ma di linguaggi diversi.

Poiché XHTML è il linguaggio che ospita gli altri, il namespace di default di un documento X+V è XHTML, mentre per gli altri tre moduli che compongono il linguaggio è necessaria la dichiarazione di namespaces aggiuntivi:

La scelta del prefisso che identifica il namespace nel documento è lasciata al programmatore. Nell'esempio sopra il namespace vxml identifica l'insieme dei tags VoiceXML utilizzati in X+V, ev definisce il modulo XML utilizzato per la gestione degli eventi e xv è l'insieme di elementi necessari alla sincronizzazione delle parti.

Nell' esempio il dialogo con l'identificativo "sayHello" è attivato quando l'user clicca sul paragrafo (tag <p>) denominato "hello". Tale dialogo è composto da un form VoiceXML che sintetizza il testo ottenuto dallo stesso paragrafo che attiva il form.

Un dialogo vocale è definito in XHTML+Voice come un form VoiceXML con un unico ID. Il form VoiceXML viene attivato con un evento del modulo XML Events attraverso un collegamento nella parte di codice XHTML che si riferisce all’ID univoco del form. L’evento in questione è generato dall’interazione dell’utente con un elemento XHTML; eventi del tipo load, unload, click, focus. Una volta attivato il form VoiceXML vengono settate tutte le variabili del form e degli elementi field in esso contenuti al loro valore iniziale ammesso che questo sia indicato con l’attributo expr. A questo punto l’interpretazione del codice all’interno del form prosegue in accordo con le regole dell’algoritmo FIA che è lo stesso utilizzato in VoiceXML.

Un elemento form VoiceXML richiede informazioni sulla lingua e sulla versione VoiceXML. In applicazioni VoiceXML 2.0 gli attributi lingua e versione vengono specificati nell’elemento radice <vxml>. In XHTML+Voice la lingua è ottenuta dall’ attributo XHTML dell’elemento radice xml:lang, mentre la versione VoiceXML viene ricavata dal valore del namespace VoiceXML.

La lingua specificata nell’elemento radice puo’ essere sovrascritta dall’attributo xml:lang nei tags grammar e prompt.

In un documento XHTML+Voice le regole per lo scope non corrispondono a quelle definite in VXML. I motivi sono sostanzialmente due; in primis perchè l'elemento <form> è l'elemento VoiceXML a livello gerarchico più alto in un documento XHTML+Voice, in secundis perchè X+V non permette le transizioni da un handler ad un altro.

Il linguaggio VoiceXML 2.0 permette a un form di essere visibile in un dialogo o in tutto il documento, ciò non è possibile in XHTML+Voice perchè significherebbe che un form è attivo mentre se ne esegue un altro e ciò implicherebbe la coesistenza di due grammatiche attive. Pertanto lo scope di un "form" e dell'elemento "grammar" è sempre il dialogo e l'attributo "scope" è ignorato; in particolare se viene processato un attributo scope settato a un valore diverso da "dialog", il form non viene invalidato e l'applicazione continua.

In ogni caso quando un documento XHTML+Voice viene processato tutti gli attributi VoiceXML 2.0 che non sono supportati vengono ignorati quando interpretati.

Diverso è il comportamento se il documento X+V contiene elementi che non sono supportati, ad esempio l’elemento <goto>, in tal caso infatti viene generato un errore del tipo badfetch e l'applicazione termina.

Questo significa che un interprete VoiceXML 2.0 e uno X+V possono processare lo stesso codice VoiceXML se tutti i tags del codice sono supportati da X+V, mentre non è necessario che siano supportati tutti gli attributi.

XHTML+Voice permette ad un dialogo vocale di essere referenziato come un collegamento vocale in un file esterno. Poiché il dialogo vocale non ha visibilità all’esterno del form, il form nel file esterno è processato solo quando il form è attivato.

Quando il browser carica il corpo di un documento XHTML+Voice si genera un evento di “load”. Questo da vita al ciclo di eventi specificato nel modello “DOM Level 2 Events”. Mentre il ciclo degli eventi viene eseguito gli eventi si propagano attraverso l’albero XHMTL.

I dialoghi vocali,cioè la parte in linguaggio VoiceXML, possono essere interpretati a partire dal codice XHTML in uno dei seguenti modi:

  1. Le variabili di una normale applicazione VoiceXML sono utilizzabili in una applicazione XHTML+Voice come variabili globali JavaScript. Ogni variabile è un vettore di elementi da zero ad n dove ogni elemento rappresenta un possibile risultato.
  2. L’elemento XHTML+Voice <sync> che fa parte del modulo di estensione.

In una applicazione multimodale è possibile sia accedere alla parte vocale in VoiceXML da un elemento XHTML attraverso degli eventi del modulo XML Events sia accedere al codice XHTML a partire da un dialogo vocale. In questo ultimo caso è necessario l’utilizzo di variabili globali JavaScript.

Nell’esempio che segue il valore di un campo di input dal nome “from_city” è settato dal tag VoiceXMLassign” come segue:

In questo esempio il valore della variabile VoiceXML field denominata “from_field” viene assegnato, attraverso l’elemento assign, alla variabile di input XHTML denominata “from_city”. Ciò è possibile perché XHTML+Voice permette ad un dialogo vocale di condividere la visibilità con il contenitore XHTML.

Quando si verifica un evento in un dialogo vocale l’autore può decidere di terminare il dialogo e di ritornare alla parte XHTML.

XHTML+Voice usa l’elemento VoiceXML <return> a tal scopo. Tale elemento può essere usato anche con gli attributi event e eventexpr nel caso in cui non ci si trovi ad un livello fondamentale (top-level) del form vocale. In caso contrario gli attributi vengono ignorati e quando viene interpretato l’elemento si ritorna al contenitore XHTML. Se ad esempio si verifica un errore nella parte di applicazione vocale e si vuole permettere all’utente di continuare ad usufruire dell’applicazione interagendo con le sole tecniche tradizionali si può pensare di scrivere una cosa del tipo:

Se invece di “uscire” dalla parte di applicazione vocale si vuole proprio cancellare l’attuale dialogo vocale nel senso che si vuole forzare il normale svolgimento dell’algoritmo FIA è necessario l’utilizzo dell’elemento <cancel>.

Questo elemento fa parte del modulo di estensione XHTML+Voice ed è utile perché nelle applicazioni multimodali non è permesso che più dialoghi girino contemporaneamente sulla stessa macchina. Se un solo dialogo può essere interpretato per volta, l’attivazione di un ulteriore dialogo deve cancellare l’esecuzione di quello attuale. Inoltre, proprio grazie all’elemento <cancel> è possibile teminare un dialogo vocale quando il documento XHTML+Voice non è in esecuzione.

Un altro importante elemento del modulo di estensione XHTML+Voice è l’elemento <sync>. Questo permette la sincronizzazione di elementi di controllo XHTML con l’elemento VoiceXML <field>.

L’elemento sync fa si che l’input che viene dato in una modalità (vocale o visuale) possa settare il corrispettivo campo dell’altra modalità. Ad esempio se si riempie un form attraverso la voce (input vocale) i valori delle variabili vocali andranno a settare anche quelle variabili che sarebbero state riempite se si ssarebbe scelto di interagire con la tastiera. Inoltre se si inserisce un evento di focus su un elemento <input> che è sincronizzato con un elemento field VoiceXML l’algoritmo VoiceXML FIA passa alla esecuzione di quel form. Sync è pertanto sia un messaggio al FIA dal visual browser, come lo è pure cancel, sia un messaggio dal FIA al visual browser.

Per facilitare il processo di integrazione tra VoiceXML 2.0 e XHTML è stata fatta una modularizzazione di VoiceXML ossia è stato diviso il linguaggio in tanti moduli. Questi moduli non vanno a modificare le specifiche del linguaggio ma semplicemente organizzano tutti gli elementi e gli attributi disponibili in VoiceXML in tanti sottolinguaggi (moduli) in ognuno dei quali è consentito l'utilizzo di solo alcuni elementi.

Poiché X+V include solo un sottoinsieme di VoiceXML non tutti i moduli definiti in VoiceXML 2.0 sono utilizzabili in X+V. Un elenco di tutti i moduli VoiceXML con relativa indicazione se fanno parte o meno dell’ XHTML+Voice è disponibile all’indirizzo:
http://www.voicexml.com/specs/multimodal/x+v/12/index.html#mod-vxml

Per quanto riguarda invece la modularizzazione XHTML essa si basa sui moduli definiti nella HTML Modularization del W3C. In particolare in X+V sono utilizzabili i moduli definiti in XHTML Basic. Un elenco dei moduli, degli elementi e degli attributi presenti in tali moduli è disponibile all’indirizzo:
http://www.voicexml.com/specs/multimodal/x+v/12/index.html#N106F2

Il linguaggio X+V estende XHTML con il modulo XML Events. Gli eventi definiti in questo modulo, supportati da X+V, includono tutti quelli compresi nelle specifiche HTML 4.01. L'X+V supporta inoltre gli eventi VoiceXML 2.0 nomatch, noinput, error and help che in X+V corrispondono rispettivamente agli eventi vxmlnomatch, vxmlnoinput, vxmlhelp, and vxmlerror. Gli eventi VoiceXML cancel e exit sono supportati nel form VoiceXML ma non in XHTML. L'attivazione dell'handler avviene includendo uno di questi eventi e referenziandolo all'id di un elemento form VoiceXML.

In aggiunta a questi è stato introdotto l'evento vxmldone che è generato quando la parte vocale dell'applicazione, legata alla parte visuale, viene completata.

Anche l'elemento <script> è esteso dal modulo XML Events. Script di per sé non genera alcun evento ma se viene correlato dell'attributo "observer" può osservare qualsiasi evento presente nell'albero XHTML e "agire" nel caso questo evento si verifichi.

La seguente tabella indica gli eventi disponibili in X+V in relazione agli elementi XHTML o VoiceXML che supportano tali eventi:

Gli eventi del modulo XML Events in un documento XHTML+Voice si propagano nell'albero XHTML.

Il seguente diagramma mostra come un evento viaggia dal tag principale HTML al tag target di input e viceversa. Il flusso di eventi mostrato può essere quello che si avrebbe in risposta ad un click su di un controllo di input da parte dell'utente.

In questo caso il target dell'evento è un elemento che attiva il form VoiceXML.

Il modulo XHTML+Voice Extension Module estende il linguaggio X+V con gli elementi <sync> e <cancel>, l'elemento <prompt> VoiceXML con gli attributi src e expr e l'elemento <filed> con l'attributo id.

Il namespace relativo a tale modulo è: xmlns:xv="http://www.voicexml.org/2002/xhtml+voice"

L'elemento <sync> è necessario alla sincronizzazione di input sia vocali che visivi. In particolare sincronizza il valore di un elemento di input XHTML con un campo VoiceXML. Le caratteristiche di questo elemento sono:

  1. Gli input vocali vengono inseriti sia nella variabile del campo VoiceXML che in quella dell'elemento XHTML <input>.
  2. Gli input inseriti con la tastiera vanno a settare sia la variabile VoiceXML che quella XHTML dell'elemento <input>.
  3. Gli input inseriti da tastiera con l'elemento <input> soddisfano le richieste del campo VoiceXML
  4. Se c'è un form VoiceXML con più campi cliccando (evento di focus) su un elemento <input> che è sincronizzato con un campo VoiceXML, quel campo viene visitato, cioè l'applicazione passa ad analizzare quella parte di documento VoiceXML.

E' bene inoltre sapere che solo le modifiche fatte mentre un form VoiceXML è attivo sono sincronizzate. Se viene modificato un preesistente valore di una variabile di input XHTML e solo successivamente attiviamo l'elemento VoiceXML <field>, la sincronizzazione non avviene.

Gli attributi dell'elemento <sync> sono:

Il secondo elemento del modulo di estensione è l’elemento <cancel>. Come già accennato questo serve a cancellare un dialogo vocale.

Gli attributi dell'elemento <cancel> sono:

Il seguente esempio mostra come tale elemento può essere utilizzato per cancellare uno specifico dialogo o quello attuale:

In questo caso il bottone reset cancella il dialogo identificato da "fid1" mentre il bottone "Cancella Voce" cancella il dialogo attuale perchè manca l'attributo "voice-handler".

L' elemento <cancel> di questo modulo è diverso da quello con lo stesso nome che si usa in VoiceXML, che invece cancella il prompt che sta girando.

L'elemento VoiceXML <prompt> è esteso con l'attributo src per poter richiamare un testo che deve essere "letto" dal TTS e che si trova in qualsiasi parte nel documento o anche fuori del documento stesso. Inoltre è disponibile l'attributo expr per determinare dinamicamente un testo, identificato attraverso l'id dell'elemento <prompt> che lo contiene, che deve essere letto.

L'attributo src è del tipo URI mentre quello expr è CDATA.


3. Realizzare un'applicazione in XHTML+Voice con IBM Multimodal Tools

Come già detto il linguaggio X+V è nato dalla collaborazione di IBM, Motorola e Opera Software.

Queste hanno assieme creato anche un potente strumento di sviluppo per la realizzazione di applicazioni multimodali: l’IBM Multimodal Tools. Tale software è dunque proprietario, ma IBM permette, previa registrazione, il download di una versione di prova valida 60 giorni, disponibile al seguente indirizzo:
http://www6.software.ibm.com/dl/websphere49/multimodal-p

IBM WebSphere Multimodal Tools è una "espansione" di WebSphere Studio Application Developer e/o di WebSphere Studio Site Developer.

Attualmente esistono due versioni del Multimodal Tools, a seconda di quale WebSphere Studio si utilizza: la 4.3.1 per WebSphere Studio 5.1.1 e la più recente 4.3.2 per WebSphere Studio 5.1.2.

Il pacchetto Multimodal Tools comprende:

  1. Il Multimodal Toolkit che aggiunge nuove funzionalità multimodali alla versione di WebSphere Studio installata.
  2. Due Multimodal Browsers: Opera versione 7.55 build 6079 e NetFront versione 3.1 entrambi per piattaforma Win32.
  3. Un Multimodal readme file per l'installazione del pacchetto.
  4. Una guida per imparare a sviluppare applicazioni multimodali usando il Multimodal Toolkit.

L’algoritmo da seguire per la realizzazione di una applicazione è il seguente:

Una volta installato il Multimodal Toolkit e un Multimodal Browser la prima cosa da fare è creare un progetto multimodale, ossia una cartella che conterrà tutti i files dello scenario che si sta per sviluppare. A questo punto il Multimodal Toolkit da la possibilità di editare files mxml, cioè i files che conterranno il corpo dell’applicazione, files SRGS o JSGF per la creazione della grammatica.

Il passo successivo è la creazione della componente video. In X+V il linguaggio che contiene gli altri è l’XHTML pertanto si tratta di inserire codice XHTML all’interno del file .mxml e in particolare all’interno dell’elemento <body>. Abbiamo a disposizione sostanzialmente tre modi di agire:

  1. Importare un preesistente file .html e apportare le modifiche necessarie per renderlo xhtml (chiusura dei tags, utilizzo dei soli elementi xhtml).
  2. Importare un preesistente file .xhtml.
  3. Scrivere ex novo un codice xhtml utilizzando l’editor X+V messo a disposizione.

Per la realizzazione al punto tre può risultare utile l’utilizzo dello strumento Content Assist che permette di visualizzare tutti i tags validi che possono essere inseriti nella posizione del cursore.

Ecco come si presenta l’editor multimodale una volta creato un progetto:

Una volta realizzata la parte visiva in XHTML si passa all’inserimento della parte vocale all’interno del tag <head>. Anche in questo caso c’è la possibilità di importare files VoiceXML e di utilizzare dei dialoghi per scenari comuni che il Multimodal Toolkit include, oppure di scrivere la parte di codice e le relative grammatiche attraverso l’editor X+V.

Nello scrivere la parte vocale è necessario la dichiarazione del namespace vxml; se si utilizza l’editor X+V tutti i namespaces necessari per lo sviluppo di una applicazione multimodale vengono inseriti automaticamente alla creazione di un nuovo progetto e il prefisso che identifica il namespace relativo al VoiceXML è per default vxml, pertanto tutti gli elementi che fanno parte del modulo VoiceXML devono essere preceduti da tale prefisso.

Per quanto riguarda la creazione delle grammatiche necessarie il Multimodal Toolkit comprende sia un editor SRGS che uno JSGF. La scelta di uno dei due linguaggi è del tutto irrilevante ai fini dell’applicazione e nel caso si preferisce lavorare con un linguaggio standard qual è SRGS è possibile, usando il conversion wizard, convertire grammatiche JSGF in SRGS XML automaticamente.

Il Multimodal Toolkit offre inoltre la possibilità di personalizzare la pronuncia delle parole all’interno della grammatica creando dei files di pronuncia e richiamandoli attraverso l’uso dell’elemento <vxml:lexicon> all’interno del tag <vxml:grammar> . Ogni file di pronuncia che viene creato può essere associato ad una specifica grammatica e tutti i files di pronuncia devono essere contenuti all’interno della cartella che contiene il progetto.

Una volta completata anche la parte vocale non resta che collegare la componente visiva a quella voce e l’applicazione multimodale è pronta per essere utilizzata. Per fare ciò ci sono sostanzialmente due modi: usare gli elementi del modulo XML Events oppure usare gli elementi di sincronizzazione definiti nel modulo di estensione X+V .

Nel primo caso basta utilizzare XML Events Handler, cioè aggiungere, nella parte XHTML dell’applicazione, un handler che colleghi la parte visuale con la parte vocale per mezzo di un evento; il secondo metodo, invece, prevede l’inserimento di un ulteriore linguaggio che lavora all’esterno sia della parte XHTML che della parte VoiceXML e che sincronizza due parti scorrelate.

Una volta effettuata la sincronizzazione non resta che testare l’applicazione con un browser multimodale; nella fattispecie è possibile utilizzare i browsers multimodali Opera e NetFont. Una volta lanciato il file .mxml sarà possibile vedere all’interno del browser la parte visuale dell’applicazione e contemporaneamente ascoltare la parte vocale. Per interagire con la voce è necessario premere un pulsante per l’attivazione dell’ASR. Questa soluzione può risultare abbastanza antipatica per l’utente ai fini pratici ma è molto utile se si tiene conto del fatto che così facendo l’ASR viene attivato solo quando necessario, evitando un inutile quanto dannoso spreco di risorse di memoria durante l’uso dell’applicazione.

L’ultimo passo nella realizzazione di una applicazione multimodale usando il WebSphere Multimodal Toolkit è la pubblicazione dell’applicazione su di un server. E’ possibile pubblicare l’applicazione su di un test server per visionare il corretto funzionamento dell’applicazione su di un server. Per fare la pubblicazione di una applicazione .mxml è necessario creare un progetto dinamico con WebSphere Multimodal Toolkit e poi utilizzare il WebSphere Application Developer or Site Developer passando dalla visuale Multimodal a quella Server. In questo modo è possibile rendere server la macchina su cui si sta lavorando e provare l’applicazione a tutti gli effetti.

Vai al secondo articolo sul linguaggio X+V di Salvatore Zita.