sfruttare cortana e le speech api nelle nostre app
TRANSCRIPT
![Page 1: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/1.jpg)
Template designed by
Massimo [email protected]://codetailor.blogspot.com@massimobonanni
Sfruttare Cortana e le Speech API nelle nostre app
![Page 2: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/2.jpg)
Slide con sponsor che arriva a qualche giorno dalla conferenza
sponsor
![Page 3: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/3.jpg)
MASSIMO BONANNISoftware architect e trainer @ eXagile (Roma)Microsoft MVP dal 2011Intel Software Innovator dal 2014Fondatore di DomusDotNet (www.domusdotnet.org) e dotNet{podcast} (www.dotnetpodcast.com)
chi sono
![Page 4: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/4.jpg)
IntroduzioneForeground App ActivationSpeech recognitionBackground App ActivationConclusioni
Agenda
![Page 5: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/5.jpg)
Differenziare la propria app con i comandi vocaliPermettere un’interazione utente più naturaleAumentare il coinvolgimento dell’utenteAumentare la produttività
Perchè Cortana
![Page 6: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/6.jpg)
Le Windows Universal App possono registrare dei comandi vocali che Cortana è in grado di interpretare.
Cortana esegue l’applicazione nel momento in cui riconosce un commando vocale valido.
Disponibile sia per le applicazioni XAML, Javascript e Hosted web App.
Foreground App Voice Command
![Page 7: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/7.jpg)
Foreground Voice Command - Architettura
2
Windows SpeechPlatform
Call
Text
Remind
ShowListByName
3 6
4
5
XApplication
Voice Command Definition
7
1
Microsoft SpeechRecognition Service
Shopping List, show list for Market
![Page 8: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/8.jpg)
Creare un Voice Command Definition (VCD) file
Foreground Voice Command
Registrare il VCD all’avvio dell’applicazione
Gestire l’attivazione dell’applicazione nel caso di Voice Command
![Page 9: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/9.jpg)
Determinare quale operazione eseguire e cosa l’utente deve dire:
• Avvia una chat con {nomeContatto}• Invia un messaggio a {nomeContatto}
Definire la risposta che Cortana fornisce all’utente nel momento in cui sta avviando l’applicazione:
• Avvio della chat con {nomeContatto}
Fornire un esempio di cosa l’utente può pronunciare da visualizzare nel “What can I do?”:
• Avvia una chat con Mario Rossi
Scopo del Voice Command Definition
![Page 10: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/10.jpg)
L’utente deve pronunciare il nome dell’app come parte del comando:
• Viber, avvia una chat con Mario Rossi• Facebook, cosa succede a Giuseppe Verdi?• Lista Spesa, visualizza la lista del Supermercato
Per default viene utilizzato il nome dell’app (display name).E’ opportuno fornire dei termini alternativi quando il nome dell’app è troppop lungo o di difficile pronuncia.
Voice Command & App Name
![Page 11: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/11.jpg)
Specificare esplicitamente il nome dell'applicazione nel posto in cui «suona» più naturaleç
• Avvia una chat con Mario Rossi con Viber• Cosa accade a Giuseppe Verdi su Facebook?• Visualizza la mia Lista Spesa del supermercato
Aumentare l'accuratezza del riconoscimento fornendo una frase più ricca:
NO: Dammi Mario Rossi su ViberSI: Avvia una chat con Mario Rossi su Viber
Evitare di utilizzare un commando riservato, come Chiama, Apri, Cerca, etc.. Se necessario, utilizzare il nome dell’app come prefisso:
Viber, chiama Mario Rossi
Linee guida per Voice Commands
![Page 12: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/12.jpg)
Registrazione del Voice Command• Registrare il file di Voice Command allo startup
dell'applicazione
• Utilizzare VoiceCommandDefinitionManager per registrare il file
• Aggiornare il VCD con i dati dell'applicazione (ad esempio le PhraseList)
var commandFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///ShoppingListCommands.xml"));await VoiceCommandDefinitionManager.InstallCommandDefinitionsFromStorageFileAsync(commandFile);
VoiceCommandDefinition commandSetEnUs;
if (VoiceCommandDefinitionManager.InstalledCommandDefinitions.TryGetValue("ShoppingListCommandSet_en-us", out commandSetEnUs)) await commandSetEnUs.SetPhraseListAsync("listName", listNames);
![Page 13: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/13.jpg)
Gestione dell’attivazione per Voice Command• Eseguire l'override di App.OnActivated.
• Controllare che l'attivazione avvenga per ActivationKind.VoiceCommand.
• Utilizzare VoiceCommandActivatedEventArgs.Result per capire quale comando è stato effettivamente richiesto dall'utente.
• Navigare verso la pagina corrispondente.
![Page 14: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/14.jpg)
Hi, Cortanashow me the code!
Foreground Commands
![Page 15: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/15.jpg)
Controllare se l’interazione viene eseguita tramite voce o in maniera convenzionale (mouse, touch, tastiera, …).Se l’utente inizia l’interazione con la voce, continuare l’interazione in tale maniera.Le API per lo speech synthesis sono contenute nel namespace Windows.Media.SpeechSynthesis.Le API per lo speech recognition sono contenute nel namespace Windows.Media.SpeechRecognition.
Speech Recognition
![Page 16: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/16.jpg)
Utilizzare SpeechRecognizer.RecognizeWithUIAsync per eseguire lo speech recognition mostrando all’utente l’interfaccia di sistemaUtilizzare SpeechRecognizer.RecognizeAsync per eseguire lo speech recognition in maniera silente (senza interfaccia grafica)Grammatiche predefinite: Dictation, Web Search, Form FillingGrammatiche Custom: elenco di stringhe o file SRGS
Speech Recognition
![Page 17: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/17.jpg)
SpeechRecognizer.ContinuousRecognitionSession permette un ascolto continuo da parte dell’app.Può essere utilizzato con la grammatica Dictation negli scenari in cui l’utente ha la necessità di parlare per lungo tempo.Può essere utilizzato con una grammatica custom per gli scenari in cui debbono essere interpretati comandi con continuità.
Speech Recognition
![Page 18: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/18.jpg)
Hi, Cortanashow me the code!Speech Recognition
![Page 19: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/19.jpg)
Le Universal App hanno la capacità di registrare voice commands che possono essere eseguiti in un AppService.L’AppService è un background task che prende in carico i comandi vocali riconosciuti da Cortana.Deve essere utilizzato il pannello di Cortana e lo speech synthesis per comunicare con l’utente.Disponibile per applicazioni XAML e Javascript.
Background Voice Command
![Page 20: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/20.jpg)
Background Voice Commands Architecture
2
Windows SpeechPlatform
36
4
5
Isolated Storage
Voice CommandApp Service
Render XAML
7
Web Service
Microsoft SpeechRecognition Service
Shopping List, show my lists VCD
Your App
8
Go to Vocal Shopping List
Here are your listsA
ButcherJuly 15th
MarketMay 29th
9
1
![Page 21: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/21.jpg)
Background Voice Command
Creare un Voice Command Definition (VCD)
Registrare il file VCD all’avvio dell’app
Gestire i comandi vocali all’interno dell’AppService interagendo con il pannello di Cortana
![Page 22: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/22.jpg)
<Extensions> <uap:Extension Category="windows.appService" EntryPoint="ShoppingList.App.ShoppingListAppService"> <uap:AppService Name="ShoppingListAppService"/> </uap:Extension></Extensions>
Creare l’AppService
La classe che implementa l'AppService deve implementare IBackgroundTask (in una Windows Runtime Library)
Registrare l'AppService nel manifest
public async void Run(IBackgroundTaskInstance taskInstance)
![Page 23: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/23.jpg)
Rappresenta la connessione tra l’AppService e Cortana.
Usata per recuperare i voice command compresi da Cortana e comunicare i messaggi da visualizzare nel pannello e “annunciati” da Cortana.
Si tratta di una classe Universal.
VoiceCommandServiceConnection
![Page 24: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/24.jpg)
Le risposte dei nostri comandi finiscono nel pannello (canvas) di Cortana
Cortana comunica all’utente i risultati del commando con lo speech synthesis
Interazione con la UI di Cortana
Content Area
App GUI Text
App Icon
Link all’applicazione (con parametri)
Text-To-Speech (TTS)
Content Tile
Here are your lists
May 14th 2015Market
May 28th 2015Butcher
Go to Vocal Shopping List
June 24th 2015Drugstore
Which one do you wanna
show?
A
![Page 25: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/25.jpg)
VoiceCommandResponse
Here are your lists
May 14th 2015Market
May 28th 2015Butcher
Go to Vocal Shopping List
June 24th 2015Drugstore
Which one do you wanna
show?
A
![Page 26: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/26.jpg)
Here are your lists
May 14th 2015Market
May 28th 2015Butcher
Go to Vocal Shopping List
June 24th 2015Drugstore
Which one do you wanna
show?
A
VoiceCommandResponse
![Page 27: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/27.jpg)
VoiceCommandContentTile
Which one do you want to display?
Title NameText Line OneText Line TwoText Line Three
A
![Page 28: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/28.jpg)
VoiceCommandContentTileType
Listening…
Listening…
TitleOnly
Title Name One
Title Name Two
Title Name Three
Title Name Four
TitleWithText
Title Name OneLong text lorem ipsum dolor sit amet, Consec tetuer amias Sed do eiusmod
Title Name TwoLong text lorem ipsum dolor sit amet, Consec tetuer amias Sed do eiusmod
TitleWith68x92IconAndText
Title Name One
Long text two lines lorem ipsum consec tetuer amias
Title Name Two
Long text two lines lorem ipsum consec tetuer amias
TitleWith280x140IconAndText
Title Name OneOne line text
Long text two lines lorem ipsum consec tetuer amias odoran
TitleWith68x68IconAndText
Title Name One
Long text lorem ipsum
Title Name Two
Long text lorem ipsum
Title Name Three
Long text lorem ipsum
![Page 29: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/29.jpg)
Hi, Cortanashow me the code!
Background Commands
![Page 30: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/30.jpg)
Which one do you want to remove?
Listening…
Ambiguità
Market
ARemove this list?
Listening…
Yes No
Conferma
Yes
ACancelling this List…
Cancel
Go to Vocal Shopping List
Stato di avanzamento
ACancelled this list.
Go to Voice Shopping List
Completamento
A
Which list do you wanna delete?
Market or Butcher.Do you wanna
remove ‘Market’? Removing list…I’ve cancelled it. [success-earcon]
Remove list
May 14th 2015Market
May 28th 2015Butcher
May 14th 2015Market
May 14th 2015Market
May 14th 2015Market
![Page 31: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/31.jpg)
Market
The first one
The one on May 14th
Possiamo richiamare il metodo RequestDisambiguationAsync() di VoiceCommandServiceConnection per richiedere all’utente di “risolvere” l’ambiguitàL’utente può selezionare un’opzione utilizzando la voce o mouse e tastiera.Cortana cerca di riconoscere automaticamente le parole (o le espressioni) che identificano automaticamente una tile.Il metodo RequestDisambiguationAsync() termina solo quando l’utente ha eseguito la selezione.
Which one do you want to remove?
Listening…
A
Which list do you wanna delete?
Market or Butcher.
May 14th 2015Market
May 28th 2015Butcher
Ambiguità
![Page 32: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/32.jpg)
Yes
No
La conferma è sempre opportuna in quelle operazioni distruttive.Utilizzare il metodo RequestConfirmationAsync() per richiedere conferma all’utente tramite Cortana.Anche in questo caso il metodo ritorna solo quando l’utente ha effettivamente selezionato la risposta
Remove this list?
Listening…
Yes No
A
Do you wanna remove ‘Market’?
May 14th 2015Market
Conferma
![Page 33: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/33.jpg)
L’utilizzo del Text To Speech è opzionale.Possono essere inviati più stati di avanzamento.Inviare sempre dei messaggi di avanzamento per le operazioni di lunga durata.Se non vengono inviati messaggi di avanzamento per più di 5 secondi, Cortana interrompe l’operazione.Lo stato di avanzamento si invia con il metodo ReportProgressAsync().
Cancelling this List…
Cancel
Go to Vocal Shopping List
A
Removing list…
May 14th 2015Market
Stato di Avanzamento
![Page 34: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/34.jpg)
Listening…
Working on that…
Cancel
I’ll get Vocal Shopping LIst on that.
Vocal Shopping ListLooking for list for Market
Cancel
Search “Cancel my list for Market”
Looking for your list for Market…
A
AGo to Vocal Shopping List
Viene visualizzato automaticamente se la risposta dell’AppService supera i 500ms
La stringa di feedback viene recuperata dal VCD.
May 14th 2015Market
Viene mostrato automaticamente dopo il ritorno dei metodi RequestConfirmation o RequestDisambiguation se l’app non risponde rapidamente (500ms)
Il contenuto è recuperato dalla response del precedente Confirmation/Disambiguation
Cortana Progress Screens
![Page 35: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/35.jpg)
• Per operazioni che richiedono interazioni complesse
• Per operazioni che richiedono l’attenzione dell’utente per un lungo periodo
Foreground vs Background
• Per operazioni semplici che non richiedono input addizionali oltre la risoluzione dell’ambiguità o la conferma
• Per operazioni rapide• Per avviare attività remote• Si può utilizzare il metodo
RequestAppLaunchAsync per lanciare l’app e completare l’operazione
Foreground Background
![Page 36: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/36.jpg)
Launch a foreground app with voice commands in Cortana (XAML)http://bit.ly/CortanaForeground
Launch a background app with voice commands in Cortana (XAML)http://bit.ly/CortanaBackground
Cortana design guidelineshttp://bit.ly/CortanaDesignGuide
Speech design guidelineshttp://bit.ly/SpeechDesignGuide
//build 2015 : Cortana and Speech Platform In Depthhttp://channel9.msdn.com/Events/Build/2015/3-716
//build 2015: Cortana Extensibility in Universal Windows Appshttp://channel9.msdn.com/Events/Build/2015/2-691
Reference
![Page 37: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/37.jpg)
![Page 38: Sfruttare cortana e le speech api nelle nostre app](https://reader031.vdocumenti.com/reader031/viewer/2022013123/58f061611a28ab59078b467d/html5/thumbnails/38.jpg)
Grazie a tutti per la partecipazioneRiceverete il link per il download a slide e demo via email nei prossimi giorniPer contattarmi
Grazie