[#wpdev] Speech API: registrazione del file VCD

Nel precedente post, abbiamo analizzato tutti gli aspetti relativi all’importante VoiceCommandDefinition file. In questo post, vedremo come registrare il file appena creato nel sistema operativo, per poter utilizzare i comandi vocali.

L’operazione, di per se, è molto semplice: si tratta di una sola riga di codice:

08-02-2013 20.24

E’ sufficiente chiamare il metodo InstallCommandSetFromFileAsync dell’oggetto VoiceCommandService per effettuare la registrazione. Sebbene sia sufficiente eseguire questo metodo solo una volta, questo approccio è sconsigliabile per un semplice motivo: backup/restore del device.

In caso di restore infatti, il file non risulterà registrato e non saranno utilizzabili i comandi vocali. Per risolvere questa problematica, l’approccio consigliato è quello di registrare il file ad ogni avvio dell’applicazione inserendo la chiamata nel metodo Application_Launching del file App.Xaml.cs.

08-02-2013 20.33

Un approccio più evoluto potrebbe inoltre essere quello di memorizzare, in un setting, l’avvenuta registrazione.

E’ inoltre buona norma inserire la registrazione del file VCD all’interno di un blocco Try/Catch in quanto potrebbero verificarsi problemi in fase di registrazione. Il problemi più comuni sono 2 (entrambi già individuabili in fase di debug). Il primo, in cui in genere si incappa la prima volta, è un errore di tipo UnauthorizedAccessException. Accade perchè, per il corretto funzionamento del riconoscimento vocale, dobbiamo impostare 2 capability specifiche:

  • ID_CAP_MICROPHONE
  • ID_CAP_SPEECH_RECOGNITION

Il secondo problema “comune” è l’utilizzo, come CommandPrefix, di una parola riservata. Il CommandPrefix, come abbiamo visto qui, serve a definire il nome “pronunciabile” della nostra applicazione. Ma, come sappiamo, esistono una serie di comandi nativi come “chiama”, “apri”, “cerca” etc. Se usassimo uno di questi nomi, otterremo una eccezione di tipo System.Execption su System.Collections.ListDictionaryInternal .

Nel blocco try/catch, è comunque buona norma prevedere un sistema di logging ed invio degli errori (questo vale in generale, e non solo per la registrazione del file VCD).

Una volta registrato il file, i nostri comandi saranno disponibili all’interno del sistema di riconoscimento vocale di Windows Phone 8 (tenendo premuto il pulsante start)

screen_002screen_003screen_006screen_004

Come è possibile vedere nelle immagini, le informazioni e gli esempi sono esattamente quelli che avevamo definito nel nostro file VCD.

Nel prossimo post, vedremo come gestire l’arrivo dei comandi vocali nella nostra applicazione.

,