Progettazione e prototipizzazione di una applicazione multimodale 6
Allo stato attuale, però, le tecnologie multimodali disponibili sono molto
limitate: se infatti i linguaggi sono già quasi definiti, i browser multimodali, che servono
all’esecuzione delle applicazioni, sono ancora in fase di perfezionamento. Il risultato è
che non è ancora possibile utilizzare tali browser per applicazioni che si discostano da
semplici esempi. I limiti più importanti che si riscontrano sono l’assenza della lingua
italiana e la scarsa qualità del riconoscimento vocale.
L’obiettivo della seguente tesi è, quindi, quello di realizzare una applicazione
che sostituisca il browser multimodale. I contenuti sono stati realizzati in modo tale da
fornire un itinerario per la scoperta del sito archeologico di San Giusto, nell’ambito del
progetto Cnosso per la rivalutazione dei beni culturali in Puglia attraverso l’utilizzo
delle nuove tecnologie.
Per la realizzazione di questa applicazione è stato utilizzato il linguaggio
VoiceXML, per l’interfaccia vocale, e il linguaggio XHTML per l’interfaccia visuale.
Non si è potuto utilizzare, però, un browser multimodale in quanto quelli attualmente
disponibili (forniti da Opera e Net Front) non supportano la lingua italiana. E’ stato
necessario quindi creare una applicazione, scritta in Visual C++, che eseguita sul
computer client dà la possibilità di accedere ai contenuti multimodali presenti sul server
e fornisce tutto il necessario per la sincronizzazione delle due interfacce.
Quest’ultimo aspetto è stato particolarmente curato, in quanto il VoiceXML è un
linguaggio di markup e non genera nessun file eseguibile, per cui non dispone di
nessuna istruzione per creare o per comunicare con altri processi. Questa
comunicazione è necessaria in quanto l’interfaccia visuale deve conoscere il momento
in cui aggiornarsi e pertanto deve avere informazioni sull’interfaccia vocale e
soprattutto sulle scelte effettuate dall’utente. Sono state quindi utilizzate le pagine ASP,
composte da script eseguiti sul lato server che hanno dato la soluzione al problema.
Progettazione e prototipizzazione di una applicazione multimodale 7
Articolazione della tesi
La tesi risulta così strutturata:
ξ Capitolo 1: Vengono descritte le applicazioni vocali e vengono delineati i primi
concetti base del VoiceXML.
ξ Capitolo 2: Si entra nel dettaglio del linguaggio VoiceXML partendo dal
linguaggio XML. Vengono descritti i tag più importanti, tutti corredati da esempi
pratici; vengono descritte le grammatiche, come utilizzarle all’interno di una
applicazione e la loro sintassi.
ξ Capitolo 3: Vengono presentate delle linee guida per una efficiente realizzazione di
interfacce vocali.
ξ Capitolo 4: Vengono analizzate le applicazioni multimodali ed il nuovo linguaggio
X+V. Vengono descritti una serie di principi di progetto di applicazioni multimodali
con X+V. Terminano il capitolo tre esempi di applicazioni X+V al fine di mostrare
le potenzialità di questo linguaggio.
ξ Capitolo 5: Vengono analizzati tutti gli strumenti utilizzati per la realizzazione del
progetto e in genere di applicazioni vocali e multimodali.
ξ Capitolo 6: Si descrive il progetto multimodale realizzato. Vengono analizzati i
dialoghi e le grammatiche utilizzate; viene presentata l’applicazione realizzata e
mostrato come avviene la sincronizzazione tra le due interfacce.
ξ Conclusioni: Si riassume il contenuto della tesi e si traggono le conclusioni dal
lavoro svolto.
ξ Appendice A: Sono descritte le grammatiche built-in del modulo italiano del
browser vocale utilizzato nel progetto.
ξ Appendice B: Viene descritto il contenuto del progetto realizzato in questa tesi.
Progettazione e prototipizzazione di una applicazione multimodale 8
Introduzione alle applicazioni
vocali
1.1 Le applicazioni vocali
Le applicazioni vocali sono particolari applicazioni nelle quali l’input e/o
l’output avvengono tramite la voce piuttosto che attraverso una interfaccia grafica. I file
dell’applicazione possono risiedere in un sistema locale, in una rete locale o su Internet
e gli utenti vi possono accedere da qualsiasi luogo, in qualsiasi momento, purché
abbiano la possibilità di utilizzare un telefono e un computer palmare di ultima
generazione.
Le applicazioni vocali si pongono l’obiettivo di rendere il World Wide Web
accessibile attraverso la voce, in particolare di:
ξ Usare comandi vocali per dire ad un browser visuale di indirizzare la
navigazione verso un particolare indirizzo;
ξ Avere un browser visuale eseguito su di una macchina classica che legge il
contenuto di una pagina Web;
ξ Cambiare il tono di voce in base ai tipi di caratteri utilizzati o al particolare
stile (grassetto, corsivo o maiuscolo).
Capitolo 1
Progettazione e prototipizzazione di una applicazione multimodale 9
Le applicazioni vocali forniscono una nuova e facile strada per navigare su
Internet. E quando si parla di navigare su Internet, non si intende solo la semplice
navigazione su pagine visuali, ma anche l’utilizzo di servizi di e-business come lo
shopping on line, o la prenotazione (o consultazione) di voli aerei o più in generale la
fruizione di una serie di servizi che richiedono un accesso ad un database. Gli utenti,
infatti, possono interagire con basi di dati così come si utilizza il web tradizionale
attraverso l’utilizzo di architetture basate su pagine ASP, JSP o CGI.
Esiste comunque un differenza sostanziale tra le applicazioni vocali e le
tradizionali applicazioni visuali. Tali differenze, dovute alla differenza intrinseca tra le
due interfacce, rendono necessaria la codifica di un nuovo linguaggio di markup che si
sostituisca all’HTML, nasce così il VoiceXML. Questo nuovo linguaggio nasce come
strumento per creare applicazioni in maniera indipendente dall’originale applicazione
visuale, per cui non si deve pensare ad una semplice traduzione dall’HTML al
VoiceXML (cosa che è possibile, con non poche difficoltà, grazie ad alcuni tool [17]),
ma ad un nuovo modo di progettare tali applicazioni. Se nella progettazione di un sito
visuale si dà molta importanza all’aspetto visivo (del tipo “anche l’occhio vuole la sua
parte”), nella progettazione di un sito vocale si deve dare molta importanza ai dialoghi,
a come si devono evolvere ed al tono che si deve tenere durante la conversazione.
Progettazione e prototipizzazione di una applicazione multimodale 10
1.2 Il mercato delle applicazioni vocali
Fino a pochi anni fa, il World Wide Web è stato utilizzato esclusivamente
attraverso l’interfaccia visuale per fornire informazioni e servizi a utenti che si
servivano di computer equipaggiati con un monitor, una tastiera e un dispositivo di
puntamento. Per questo motivo sono stati ignorati una parte di potenziali utilizzatori del
servizio cioè le persone che non hanno la possibilità di utilizzare un computer, si pensi
ad esempio alle persone con problemi alla vista. C’è da dire, inoltre, che il personal
computer non è uno strumento che molte persone ritengono facile da usare, nonostante
gli sforzi in tale direzione dei recenti sistemi operativi; si pensi, ad esempio, alle
persone anziane. Questi problemi di accessibilità vengono risolti brillantemente dalle
applicazioni vocali, per le quali l’unico strumento da utilizzare è il telefono e l’unica
competenza necessaria per accedere ai servizi è saper parlare! Il telefono è uno
strumento che è diffuso in maniera capillare in ogni classe sociale e, grazie ai cellulari,
viene garantita la possibilità di accedere alla rete telefonica (e quindi ai servizi vocali) in
gran parte del territorio nazionale e internazionale.
Per tutti questi motivi ci si rende conto che le applicazioni vocali possono
permettere alle aziende di raggiungere una clientela sempre più vasta, possono
aumentare la loro visibilità all’interno di un contesto concorrenziale, possono fornire
servizi self-service, cioè senza operatore e questo si traduce ovviamente in un risparmio
nei costi.
Progettazione e prototipizzazione di una applicazione multimodale 11
1.3 Vari tipi di applicazioni vocali
Le applicazioni vocali ricadono in genere in una delle seguenti categorie:
ξ Applicazioni “queries” (o applicazioni a domanda-risposta)
ξ Applicazioni “transaction” (o applicazioni a carattere commerciale)
Nelle applicazioni Queries un utente chiama un numero per ricevere
informazioni che riguardano un particolare bene o servizio. Il sistema guida il
consumatore attraverso una serie di menu utilizzando istruzioni, suggerimenti e scelte
guidate utilizzando file audio pre-registrati oppure utilizzando la sintesi vocale. L’utente
quindi può rispondere al sistema utilizzando la propria voce o i toni della tastiera del
telefono (chiamati DTMF) con i quali può effettuare scelte all’interno dei menu o
riempire eventuali campi di un modulo. In base all’input fornito dall’utente, il sistema
localizza l’informazione richiesta in un database e la presenta in modo semplice
all’utente sempre utilizzando file audio pre-registrati o la sintesi vocale. Esempi di
questo tipo di applicazioni possono essere i servizi che forniscono le previsioni del
tempo, gli oroscopi, le quotazioni della borsa o informazioni da semplice customer
service.
Nelle applicazioni Transaction un utente chiama un numero per eseguire
specificatamente delle transazioni commerciali. Il sistema in questo caso guida l’utente
ad immettere i dati richiesti per eseguire la transazione sempre utilizzando audio pre-
registrato o sintesi vocale. L’utente risponde utilizzando la propria voce o la tastiera del
telefono. In base all’input fornito il sistema porta a termine la transazione utilizzando
sempre i database. Esempi di questi tipo di applicazioni sono: transazioni bancarie
(compravendita titoli, bonifici ecc.), prenotazioni di viaggi (aerei, treni, alberghi ecc.),
agende elettroniche virtuali e quant’altro.
Progettazione e prototipizzazione di una applicazione multimodale 12
1.4 Il VoiceXML
Il Voice eXtensible Markup Language, o VoiceXML, è un linguaggio di markup
basato su XML progettato per sviluppare applicazioni vocali distribuite. Come si
capisce anche dal nome, è molto simile all’HTML che però è un linguaggio dedicato ad
applicazioni visuali distribuite. Il VoiceXML è standardizzato [1] [2] e promosso
dall’organizzazione VoiceXML Forum [16], fondata da AT&T, IBM, Lucent e Motorola
e supportata oggi da più di 500 aziende attive nello sviluppo di applicazioni o
tecnologie vocali.
Una delle prime società che si è interessata allo sviluppo di interfacce basate su
un linguaggio di markup è stata la IBM che qualche anno fa sviluppò un linguaggio che
si chiamava SpeechML. Quasi parallelamente anche AT&T e Lucent Technologies
definirono dei propri linguaggi chiamati con lo stesso nome PML (Phone Markup
Language), ma diversi tra loro, mentre Motorola ne sviluppò ancora un altro sotto il
nome di VoxML. Ben presto, come spesso accade in questi casi, tutti si accorsero che
era necessario unire gli sforzi e dare vita ad un unico linguaggio. Così nacque il
VoiceXML e la relativa organizzazione il VoiceXML Forum. Si può identificare la data
di nascita del nuovo linguaggio il 17 agosto 1999 con la prima standardizzazione da
parte del World Wide Web Consortium (W3C) del VoiceXML 0.9. Successivamente, il
7 marzo 2000, il W3C rilasciò la versione 1.0 del VXML, mentre si dovette aspettare
nella seconda metà del 2002 per la versione 2.0.
Progettazione e prototipizzazione di una applicazione multimodale 13
1.4.1 Architettura del sistema e caratteristiche
Il linguaggio VoiceXML permette agli sviluppatori Web di utilizzare un
linguaggio di markup e uno stile di programmazione server-side per portare le
applicazioni sulle linee telefoniche. Il risultato è che le applicazioni VXML possono
interagire con l’infrastruttura Web esistente, compresi anche i database e i Web server.
Come infatti si può vedere nella figura seguente, l’utente al telefono utilizza la
stessa infrastruttura (l’HTTP server) che viene utilizzata dall’utente connesso attraverso
internet. La differenza è la presenza di una macchina (ma può essere anche un software)
che funzioni da browser vocale in grado di tradurre in voce il contenuto delle
informazioni ricevute dal server e in grado di riconoscere la voce dell’utente.
Figura 1.1 Architettura del sistema (fonte [11])
Progettazione e prototipizzazione di una applicazione multimodale 14
Il VoiceXML supporta le seguenti caratteristiche:
ξ Riconoscimento vocale (spoken input)
ξ Riconoscimento dei toni della tastiera (DTMF input)
ξ Registrazione del parlato
ξ Sintesi vocale (Text To Speech)
ξ Output di file audio pre-registrati
ξ Controllo del flusso del dialogo
ξ Identificazione automatica del chiamante (Automatic Number Identification,
ANI)
ξ Servizio di identificazione del numero chiamato (Dialed Number Identification
Service, DNIS)
ξ Trasferimento di chiamata ad un altro numero
1.4.2 I vantaggi del linguaggio VoiceXML
Molteplici sono i vantaggi che derivano dall’utilizzo del VoiceXML e del browser
vocale:
ξ Il VoiceXML è un linguaggio di markup che rende più facile la costruzione di
applicazioni vocali, (nello stesso modo in cui il linguaggio HTML semplifica la
costruzione delle applicazioni visuali. Il VoiceXML,) ed inoltre, riduce il grado
di conoscenza delle tecnologie vocali che deve avere lo sviluppatore.
ξ La creazione di applicazioni VoiceXML è indipendente dalle tecniche di sintesi
e di riconoscimento utilizzate.
ξ Le applicazioni VoiceXML possono utilizzare le stesse infrastrutture delle
applicazioni web tradizionali. Lo sviluppo, quindi, richiede un bassissimo
Progettazione e prototipizzazione di una applicazione multimodale 15
investimento economico in termini di hardware, rispetto a quello che può essere
la costruzione di un nuovo sistema ad hoc.
ξ Il VoiceXML è costruito sotto forma di applicazione client / server, nel quale il
server Web fornisce i documenti VXML che contengono i dialoghi e il client
contiene il software necessario (il browser vocale) per interpretare il contenuto
del documento. La risposta dell’utente è inviata al server che risponde con un
documento VXML appropriato alla richiesta. Il VoiceXML permette di
richiedere documenti e inviare dati al server utilizzando lo standard Universal
Resource Identifiers (URI). Inoltre, un documento VoiceXML può essere statico
o dinamico, cioè essere generato dinamicamente da uno script CGI, o da una
pagina ASP o JSP, nonché da un servlet Java o da una qualsiasi tecnica server-
side.
ξ Diversamente dai sistemi proprietari di risposta vocali (chiamati Interactive
Voice Response, IVR), il VoiceXML garantisce lo sviluppo di applicazioni
aperte ed estremamente portabili. Questo fa si che il VoiceXML sia
un’alternativa estremamente scalabile e un ottimo investimento a lungo termine
per fornire servizi vocali.
ξ Molti sistemi IVR al giorno d’oggi accettano come input solamente i toni della
tastiera del telefono. Il VoiceXML, invece, è progettato prevalentemente per
ricevere input vocale, ma, se desiderato, può riconoscere anche i toni DTMF.
Come risultato si ha che il VoiceXML aiuta a velocizzare le interazioni fornendo
una interfaccia più naturale al confronto con quella molto rigida dei comandi da
tastiera.
ξ Il VoiceXML utilizza un singolo componente (il browser VXML) per
interpretare i vari documenti che possono essere generati da diverse locazioni
senza che l’utente finale se ne accorga. Per esempio un portale vocale per la
prenotazione di voli aerei può temporaneamente sospendere la sua esecuzione e
passare la chiamata ad una applicazione, gestita dalla banca, per l’addebito del
conto per poi successivamente continuare con l’assegnazione del posto.
Progettazione e prototipizzazione di una applicazione multimodale 16
ξ Il VoiceXML ha la possibilità di effettuare un controllo sull’input dell’utente per
verificare la correttezza. Questa caratteristica garantisce che il dati che il client
spedisce al server siano corretti e cioè che il server non deve effettuare nessun
tipo di controllo. Le conseguenze sono che il server viene scaricato da un
compito e quindi si evitano rallentamenti dovuti a superlavoro e che sulla rete
non viaggiano comunicazioni che debbano essere ripetute per l’inesattezza dei
dati ivi contenuti.
ξ Il VoiceXML supporta la possibilità di eseguire file pre-registrati nei formati più
comuni .wav e .au (risoluzione 8 bit e frequenza di campionamento fino a 8 KHz
con codifica mu-law, a-law o linear).
ξ Il VoiceXML supporta la possibilità di registrare l’input vocale dell’utente.
L’audio registrato può essere eseguito localmente oppure spedito al server,
memorizzato e riprodotto in un secondo momento.
ξ Il VoiceXML definisce un set di eventi corrispondenti a varie attività come la
richiesta di aiuto o la richiesta di ripetizione o ancora il mancato riconoscimento
di una parola. Una applicazione VoiceXML può fornire una appropriata risposta
ad ognuno di questi eventi.
ξ Il VoiceXML supporta i sottodialoghi, che sono l’equivalente delle chiamate a
funzioni nei linguaggi di programmazione propriamente detti. I sottodialoghi
sono usati per fornire soluzioni ad ambiguità o per chiedere conferma e per
creare componenti di dialogo riutilizzabili.
Progettazione e prototipizzazione di una applicazione multimodale 17
1.5 Alcuni Concetti di Base
1.5.1 Le espressioni
Una espressione è una frase o una parola detta dall’utente del servizio. Più
precisamente una espressione è una frase tra due periodi di silenzio. Il silenzio, nel
riconoscimento vocale, è importante tanto quanto il parlato, perché il silenzio definisce
l’inizio e la fine di una espressione.
Le espressioni sono inviate al motore di riconoscimento per essere processate.
Se l’utente non dice nulla, il motore restituisce quello che si chiama silente timeout cioè
una indicazione che non c’è stata nessuna emissione sonora da parte dell’utente in un
determinato intervallo di tempo. In questo caso l’applicazione prende una determinata
azione, in genere richiede all’utente di dire qualcosa.
Una espressione può essere una singola parola o, in certi casi, può contenere più
parole, ma avere lo stesso effetto. Per esempio: “saldo”, “controlla il saldo” o “vorrei
controllare il saldo” sono tutti esempi di possibili espressioni, che producono lo stesso
effetto in una applicazione VXML (vedi paragrafo 6.4.1). C’è da dire che ci devono
sempre piccoli pezzi di silenzio tra le parole pronunciate in una frase. Se l’utente si
ferma troppo a lungo tra una parola ed un’altra, il sistema, però, può intendere che
l’espressione è terminata e quindi processare solo una parte della frase. Si capisce,
quindi, che si tratta di parlato connesso, ma non spontaneo.