windows phone 8 speech: parliamo con la nostra app

33
WINDOWS PHONE 8 SPEECH: PARLIAMO CON LA NOSTRA APP Michele Locuratolo Nokia Developer Champion Microsoft MVP

Upload: microsoft-mobile-developer

Post on 09-May-2015

961 views

Category:

Technology


0 download

DESCRIPTION

Microsoft Windows Phone ha un sistema di riconoscimento vocale molto sofisticato. Ci permette di impartire comandi al sistema operativo, leggere e dettare SMS, effettuare chiamate etc. In Windows Phone 8 è stata introdotta, per noi sviluppatori, la possibilità di utilizzare i comandi vocali anche nelle nostre applicazioni. In questa sessione vedremo come implementare il riconoscimento vocale nelle nostre app. / Microsoft Windows Phone has a very sophisticated speech-recognition system. Users can give commands to the operating system, read and dictate text messages, make phone calls, etc. With Windows Phone 8, developers have the ability to use voice commands in applications. In this webinar, you’ll find out how to implement voice recognition in your apps.

TRANSCRIPT

Page 1: Windows Phone 8 speech: parliamo con la nostra app

WINDOWS PHONE 8 SPEECH: PARLIAMO CON LA NOSTRA APP Michele Locuratolo

Nokia Developer Champion

Microsoft MVP

Page 2: Windows Phone 8 speech: parliamo con la nostra app

AGENDA

Nuove funzionalità riconoscimento vocale

Uso dei comandi vocali

Riconoscimento vocale e sintesi nelle app

_1

_2

_3

Page 3: Windows Phone 8 speech: parliamo con la nostra app

NUOVE FUNZIONALITÀ RICONOSCIMENTO VOCALE • VoiceCommand: viene gestita a livello di sistma operativo e

permette di interagire con la nostra app dall’esterno (quando l’app non è in esecuzione

• Speech Recognition: è il motore vero e proprio di riconoscimento vocale, quello che permette di “tradurre” l’input vocale in testo

• Text to speech (TTS): è il sintetizzatore vocale. Quello che ci permette di far “parlare” la nostra applicazione

Page 4: Windows Phone 8 speech: parliamo con la nostra app

SCHEMA INTERAZIONE

Page 5: Windows Phone 8 speech: parliamo con la nostra app

SCENARI D’USO

• Aprire un app ad una pagina specifica (“mostrami il meteo di oggi”)

• Dettare appunti vocali

• Interagire con l’applicazione (“leggimi la nota 5”)

• … etc

Page 6: Windows Phone 8 speech: parliamo con la nostra app

VOICE COMMAND: STEP BY STEP

1. Specificare i comandi nel VoiceCommandDefinition

2. Registrare il file VCD (al primo avvio)

3. Gestire i comandi all’avvio dell’applicazione

4. Aggiornare, se necessario, i parametri dinamicamente

Page 7: Windows Phone 8 speech: parliamo con la nostra app

VOICE COMMAND OVERVIEW

• Da una qualunque schermata sul device, si può pronunciare il nome dell’applicazione ed il comando da eseguire.

• L’app viene lanciata passando il comando ed i parametri in querystring

• Built-UI per feedback, discoverability etc

Page 8: Windows Phone 8 speech: parliamo con la nostra app

VOICE COMMAND OVERVIEW

• I comandi sono contenuti nel file VoiceCommandDefinition (VCD)

• Supporto per Dynamic Parameter

• Supporto per più lingue

• Il VCD viene istanziato una sola volta all’avvio dell’applicazione

• I parametri possono essere aggiornati dinamicamente

Page 9: Windows Phone 8 speech: parliamo con la nostra app

ANATOMIA VCD (STEP 1) Nome leggibile con cui aprire

l’app

Esempio da mostrare nella

UI Comando

Pagina di destinazione

Lingua

Parametri

Page 10: Windows Phone 8 speech: parliamo con la nostra app

VOICE COMMAND UI

Page 11: Windows Phone 8 speech: parliamo con la nostra app

REGISTRAZIONE VCD (STEP 2)

using Windows.Phone.Speech.VoiceCommands; // Carica il fine VCD App.xaml.cs private async void Application_Launching(object sender, LaunchingEventArgs e){ try { // Specificare il path del file Uri uri = new Uri("ms-appx:///VoiceCommandDefinition.xml"); await VoiceCommandService.InstallCommandSetsFromFileAsync(uri); } catch (Exception ex) { // Gestire l’eccezione } }

Page 12: Windows Phone 8 speech: parliamo con la nostra app

GESTIONE COMANDI (STEP 3) private void MainPage_Loaded(object sender, RoutedEventArgs e){

// Was the page launched by voice commands?

if (this.NavigationContext.QueryString.ContainsKey("voiceCommandName")){

string voiceCommandName = this.NavigationContext.QueryString["voiceCommandName"];

switch (voiceCommandName) {

case “ShowNotes":

string noteID = this.NavigationContext.QueryString["num"];

// Mostra la nota selezionata

break;

// altro

default:

// No match

break;

}

}

}

Page 13: Windows Phone 8 speech: parliamo con la nostra app

AGGIORNAMENTO PARAMETRI (STEP 5)

// Recupera il commandset

VoiceCommandSet memosVcs =

VoiceCommandService.InstalledCommandSets[“DemoCommandSet”];

// Aggiorna l’elenco dei parametri(any time) await memosVcs.UpdatePhraseListAsync("num", new string[] {"1", "2", "3", "4", "5"});

Aggiornamento dinamico per nuovi elementi relativi all’applicazione (ad esempio, ID delle note, titoli etc)

Page 14: Windows Phone 8 speech: parliamo con la nostra app

CAPABILITIES

Required capabilities

ID_CAP_MICROPHONE

ID_CAP_SPEECH_RECOGNITION

Page 15: Windows Phone 8 speech: parliamo con la nostra app

Nokia Internal Use Only

DEMO

Page 16: Windows Phone 8 speech: parliamo con la nostra app

IN APP DIALOG

• Sintesi vocale (Text to Speech)

• Riconoscimento vocale

• Buit-In UI per feedback

• «grammatiche» predefinite e custom

Page 17: Windows Phone 8 speech: parliamo con la nostra app

Nokia Internal Use Only

DEMO TTS

Page 18: Windows Phone 8 speech: parliamo con la nostra app

TTS

private async void playNote_click(object sender, EventArgs e) { SpeechSynthesizer synth = new SpeechSynthesizer();

await synth.SpeakTextAsync(_selectedNote.Text); }

Page 19: Windows Phone 8 speech: parliamo con la nostra app

TTS

• Sintesi vocale di testi normali

• Sintesi Speech Synthesis Markup Language (SSML) via SpeakSsmlAsync

• Eventi: • SpeechStarted

• BookmarkedReached

• API per selezionare la voce da usare

• http://msdn.microsoft.com/en-us/library/hh361578

Page 20: Windows Phone 8 speech: parliamo con la nostra app

Nokia Internal Use Only

DEMO SSML

Page 21: Windows Phone 8 speech: parliamo con la nostra app

RICONOSCIMENTO VOCALE

• Riconoscimento vocale integrato

• Possibilità di utilizzo di custom grammar

• Built-in UI personalizzabile (esempio etc)

• Result object con • Alternates

• Confidence

• Semantics

• Etc…

Page 22: Windows Phone 8 speech: parliamo con la nostra app

SPEECHRECOGNIZERUI

ListenText definisce il messaggio da visualizzare nell’interfaccia di riconoscimento vocale (ad

esempio: detta la tua nota)

ExampleText è il classico testo di esempio da mostrare all’utente

ReadoutEnabled se impostato a true, il testo riconosciuto verrà riletto dal sistema. E’ molto utile per dare

un feedback all’utente che, molto probabilmente, non stà guardando il display del

dispositivo

ShowConfirmation mostra l’eventuale conferma di avvenuto riconoscimento. Se impostato a false, il testo

riconosciuto non verrà riletto

Page 23: Windows Phone 8 speech: parliamo con la nostra app

SPEECHRECOGNIZERUI private async void recNote_click(object sender, EventArgs e) {

SpeechRecognizerUI sr = new SpeechRecognizerUI(); sr.Settings.ListenText = "Cosa scrivo?"; sr.Settings.ExampleText = "far vedere la demo"; sr.Settings.ReadoutEnabled = true; sr.Settings.ShowConfirmation = true; SpeechRecognitionUIResult result = await sr.RecognizeWithUIAsync(); if (result.ResultStatus == SpeechRecognitionUIStatus.Succeeded) { tbxNote.Text = result.RecognitionResult.Text; } }

Page 24: Windows Phone 8 speech: parliamo con la nostra app

CONFIDENCE

• Il livello di confidence, accessibile dalla property result.RecognitionResult.TextConfidence

• Può avere i valori High, Medium, Low e Rejected

• In caso di confidence != High, possiamo accedere alle alternative usando il metodo GetAlternates()

Page 25: Windows Phone 8 speech: parliamo con la nostra app

Nokia Internal Use Only

DEMO SPEECH RECOGNITION

Page 26: Windows Phone 8 speech: parliamo con la nostra app

SPEECH RECOGNITION GRAMMAR

• Set di parole specifiche interne all’applicazione

• Limitazione del range di ricerca delle parole

• Miglioramento accuratezza

• Latenza ridotta

• No UI di conferma

• Molto usato per comandi come Salva, Annulla etc.

Page 27: Windows Phone 8 speech: parliamo con la nostra app

SPEECH RECOGNITION GRAMMAR

2 set predefiniti su Windows Phone

Default: Short message dictation (SMD)

WebSearch

Esempio

myReco.Grammars.AddGrammarFromPredefinedType

("mySearch",SpeechPredefinedGrammar.WebSearc);

Page 28: Windows Phone 8 speech: parliamo con la nostra app

CUSTOM GRAMMAR COMANDI //Istanziamo il sintetizzatore SpeechSynthesizer synthesizer = new SpeechSynthesizer(); //Definiamo i comandi SpeechRecognizer recognizerCommand = new SpeechRecognizer(); var command = new[] { "salva", "annulla", "ripeti" }; recognizerCommand.Grammars.AddGrammarFromList("commands", command);

//Richiediamo il comando da eseguire await synthesizer.SpeakTextAsync("puoi dire salva ripeti o annulla"); SpeechRecognitionResult commandresult = await recognizerCommand.RecognizeAsync(); string commandResultText = commandresult.Text.ToLower(); switch (commandResultText) { case "salva"

Page 29: Windows Phone 8 speech: parliamo con la nostra app

IN-APP DIALOG

• Possiblità di interagire con l’applicazione usando la voce

• Merge di comandi e speech recognition

Page 30: Windows Phone 8 speech: parliamo con la nostra app

Nokia Internal Use Only

DEMO IN-APP DIALOG

Page 31: Windows Phone 8 speech: parliamo con la nostra app

CONCLUSIONI

• Ricco set di API per riconoscimento vocale

• Possibilità di avviare l’applicazione con la voce

• Text to Speech

• Riconoscimento vocale

• In-App dialog per poter interagire dinamicamente con l’app

Page 32: Windows Phone 8 speech: parliamo con la nostra app

Nokia Internal Use Only

• Documentazione ufficiale: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206958(v=vs.105).aspx

• SSML: http://www.w3.org/TR/speech-synthesis/

• Lista articoli in italiano: http://www.michelelocuratolo.com/speech-api-in-windows-phone-8-2/

RISORSE

12/17/2013 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 33: Windows Phone 8 speech: parliamo con la nostra app

Nokia Internal Use Only

12/17/2013 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Thank you!