Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Le prime parole: «Ciao Mondo»

Esempi di risposta dell'applicazione in TTS e Audio
Esempi di risposta dell'applicazione in TTS e Audio
Link copiato negli appunti

I prompt

Siamo pronti per far emettere al nostro pc la famosa frase "ciao mondo", ovviamente dopo averla debitamente tradotta in italiano, per fare questo usiamo il tag <prompt>. Questo tag però non può trovarsi subito dopo il tag <vxml>, ma deve stare all'interno di un elemento di dialogo: ovvero i tag <form> o <menu>. Per comodità usiamo il primo e scriviamo:

Listato 1.2: Ciao Mondo

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0">

<menu>
<prompt>Ciao Mondo</prompt>
</menu>
</vxml>

A questo punto possiamo comodamente provare la nostra applicazione componendo il numero dell'area "demo" del nostro provider, come abbiamo visto nella lezione precedente.

Prompt con lingue diverse

Supponiamo di voler ascoltare la fatidica frase anche in lingua inglese. Anzitutto diciamo alla nostra applicazione che stiamo lavorando in lingua italiana, e costruiamo due prompt nelle due lingue diverse (che verranno ovviamente letti con le rispettive pronunce).

Listato 1.3: Ciao Mondo in multilingua

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" xml:lang="it-IT" >

<menu>
<prompt xml:lang="it-IT">Ciao Mondo</prompt>
<prompt xml:lang="en-GB">Hello World</prompt>
</menu>
</vxml>

Nel tag <vxml> abbiamo attribuito a xml:lang il valore: it-IT che indica la lingua italiana, poi abbiamo usato il medesimo attributo per indicare al motore di TTS la lingua inglese per la seconda frase.

L'attributo "bargein"

Ogni volta che invochiamo un prompt in verità indichiamo all'interprete VoiceXML di richiedere al motore di TTS la sintesi di un particolare testo, ma esiste un attributo del tag <prompt> al quale dobbiamo prestare attenzione: l'attributo bargein.

Con bargein stabiliamo se il parlato della nostra applicazione (TTS) possa o meno essere interrotto dall'utente, ovvero che l'utente possa "parlarci sopra". Assume due valori:

  • true: l'utente può interrompere
  • false: il prompt non può essere interrotto dall'utente.

Il bargein di default viene settato su "true", ma a volte sarà utile far si che l'utente ascolti fino in fondo un prompt: qualora si tratti di istruzioni sull'uso dell'applicazione, o molto più semplicemente il jingle della nostra azienda.

L'attributo "bargeintype"

Un'altro importantissimo attributo, sempre legato all'uso del bargein, è bargeintype che indica al processore TTS in quali casi applicare il bargein, assume due diversi valori:

  • speech: che è il valore predefinito, indica al TTS di interrompere la lettura ogni qualvolta l'utente parla o viene ricevuto un input di tipo DTMF (ovvero dal tastierino del telefono)
  • hotword: indica al TTS di continuare fino a quando ciò che viene detto dall'utente non corrisponda precisamente (match completo) con una delle grammatiche attive . Questo significa, inoltre, che utilizzando "hotword" non verranno generati eventi di nomatch (approfondiremo le grammatiche e gli eventi di match più avanti)

L'attributo "cond"

L'ultimo attributo che esaminiamo per il tag <prompt> è cond, che ci permette di inserire una espressione condizionale. Quando l'espressione è verificata indica al TTS di inviare l'audio.

Un uso tipico di questo attributo è quello che prevede di gestire prompt diversi in base ad un determinato stato dell'applicazione ad esempio:

Listato 1.4: Ciao Mondo con file audio

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0">
<menu>
<prompt cond="language=='ITA'" >Ciao Mondo</prompt>
<prompt cond="language=='ENG' >Hello World</prompt>
</menu>
</vxml>

Questo listato è simile al precedente, ma abbiamo salvato il valore della lingua in una variabile (language) e usiamo il cond per esprimere la condizione nella quale verrà utilizzato il prompt.

Audio

Una validissima alternativa all'uso di frasi sintetizzate è l'uso di file audio preregistrati, tali file possono, infatti, contenere delle frasi lette da speaker professionisti aumentando così il feeling con la nostra applicazione.

Per incorporare un file audio all'interno della nostra applicazione è sufficiente usare il tag <audio>. Facciamo subito un esempio:

Listato 1.5: Ciao Mondo con file audio

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0">
<menu>
<audio src="hello.wav"></audio>
</menu>
</vxml>

Il listato appena visto altro non è che il listato 1.2, modificato sostituendo il prompt con il file audio corrispondente. L'attributo src="..." ci permette di indicare la URI del file.

È buona norma indicare all'interno del tag audio un prompt equivalente, per prevenire cancellazioni o spostamenti e la conseguente impossibilità di riproduzione del file. In questo caso il nostro interprete VoiceXML sa che, in assenza del file o per ogni errore di riproduzione, deve riprodurre il testo corrispondente con il TTS. Applicando questa regola il nostro listato diventa:

Listato 1.5: Ciao Mondo con file audio e prompt

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0">
<menu>
<audio src="hello.wav">Ciao Mondo</audio>
</menu>
</vxml>

I formati dei file audio soffrono di una leggera eterogeneità da piattaforma a piattaforma, mediamente possiamo dire che i file supportati sono:

  • Ecoding: Mu-law encoding, A-law encoding, e linear encoding.
  • Frequenza: solitamente si consigliano 8-bit per 8KHz mono.
  • Formati di file: tra i formati supportati troviamo: WAV, AU, RAW, e MP3.

Per i dettagli sui formati e gli encoding è buona pratica consultare la guida di riferimento della piattaforma sulla quale si andrà a pubblicare il file.

Ti consigliamo anche