[#wpdev] SpeechAPI: in app dialog

Windows-Phone-8-big-logoNei precedenti articoli di questa serie, abbiamo visto come integrare il riconoscimento vocale nelle nostre applicazioni sviluppate per Windows Phone 8. Abbiamo analizzato i 3 blocchi principali (Voice Command, Speech Recognition e Text-To-Speech) e capito come programmarli correttamente. In questo post vedremo invece come mettere insieme i tre blocchi al fine di creare un vero e proprio “dialogo” con la nostra applicazione.

In uno scenario di tipo “in app dialog”, la cosa che dobbiamo tenere sempre a mente è che, l’intero flusso di interazione, deve basarsi esclusivamente su una interazione vocale. La nostra applicazione (o meglio, la funzionalità che decidiamo di implementare), non deve mai richiedere che l’utente usi il dispositivo. Usando questo principio come linea guida, proviamo ad immaginare un workflow per il salvataggio di un appunto vocale.

Il primo passo sarà sicuramente quello di creare un Voice Command adeguato che ci rimandi ad una pagina specifica per l’inserimento del nostro appunto. Esattamente come abbiamo visto qui. Una volta riconosciuto il comando, verremo ridirezionati alla pagina di creazione di una nota. Useremo molto probabilmente la stessa pagina che viene usata nel normale flusso con la differenza che, sapendo che siamo arrivati usando un comando vocale, avvieremo l’interazione vocale anziché aspettarci l’input da tastiera. Questa interazione dovrà basarsi sull’accoppiata Text-To-Speech e riconoscimento vocale per guidare l’utente verso il completamento del task (creare l’appunto vocale). Un ipotesi di flusso per un task semplice come questo potrebbe essere la seguente:

30-04-2013 12.21

L’interazione, come visibile nel diagramma, è abbastanza semplice: useremo il text to speech per effettuare tutte le varie richieste, i custom grammar per i comandi ed il riconoscitore vocale per il riconoscimento del testo da inserire nella nota.

Vediamone i vari passaggi tradotti in codice. Il primo passaggio è quello di iniziare una interazione vocale se abbiamo avviato l’app usando il Voice Command:

30-04-2013 12.48

Il metodo StartReco incapsula tutta la parte di interazione vocale quindi, come primo passaggio, predisponiamo il riconoscitore vocale:

30-04-2013 12.51

ed i comandi:

30-04-2013 14.01

A questo punto, usiamo il sintetizzatore per chiedere al nostro utente di dettare la nota ed avviamo il riconoscitore vocale

30-04-2013 14.03

Usando lo SpeechRecognizerUI abbiamo il vantaggio che la rilettura del testo riconosciuto viene fatta automaticamente. A questo punto, non ci resta che richiedere all’utente il comando da eseguire e processarlo correttamente:

30-04-2013 14.12

A questo punto, sta a noi decidere cosa fare a fine interazione. In questo caso, si viene rimandati alla pagina principale ma potrebbe essere sensato anche chiudere l’applicazione, il tutto usando solo i comandi vocali.

L’interazione mostrata in questo esempio, sebbene completa, è abbastanza semplice da implementare. Qualora doveste trovarvi di fronte a tipi di interazione più complesse, ricordate sempre la regola che, se in uno scenario di tipo in app dialog, non deve mai essere necessario usare il touch screen per chiudere l’interazione e, con questa premessa, implementate il vostro codice.

,