Una piacevole novità introdotta con Windows Phone 8 è caratterizzata dalla possibilità di sfruttare anche nelle nostre app il sintetizzatore vocale che, unito anche alla possibilità di riconoscere comandi vocali, ci permette di creare un'esperienza più completa all'utente, soprattutto in quelle situazioni in cui non può guardare il display.
Utilizzare il sintetizzatore è piuttosto semplice, perché disponiamo di una classe SpeechSynthesizer, del namespace Windows.Phone.Speech.Synthesis, che, in completo stile WinRT ci permette di riprodurre il testo che vogliamo con metodi asincroni. Per farlo dobbiamo prima di tutto istanziare la classe; possiamo intercettare l'evento SpeechStarted per sapere quando avviene la riproduzione, in modo da personalizzare l'interfaccia, oppure impostare la voce da utilizzare. Quest'ultimo passo è facoltativo, perché il sistema utilizza in autonomia la voce di sistema, ma è utile se vogliamo forzare la lingua e il sesso da utilizzare. Nello snippet seguente possiamo quindi vedere come riprodurre del testo.
SpeechSynthesizer s = new SpeechSynthesizer(); s.SpeechStarted += s_SpeechStarted; // Facoltativamente imposto la voce var l = InstalledVoices.All.ToArray(); s.SetVoice(l[0]); // Riproduco il testo await s.SpeakTextAsync("Questa è una prova");
Prima di poter usare il sintetizzatore, però, è fondamentale inserire tra le capability la voce ID_CAP_SPEECH_RECOGNITION, pena un'eccezione.
In alternativa a SpeechTextAsync, possiamo usare SpeakSsmlAsync, che permette di specificare una sintassi SSML, la quale ci consente di definire meglio il contenuto da riprodurre, con pause e enfasi. E' interessante notare che possiamo utilizzare queste API anche in applicazioni di tipo GPS e quindi anche se l'app non è in foreground.
Speech Synthesis Markup Language Reference
http://msdn.microsoft.com/en-us/library/hh361578
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Effettuare il refresh dei dati di una QuickGrid di Blazor
La gestione della riconnessione al server di Blazor in .NET 9
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Aggiornare a .NET 9 su Azure App Service
Utilizzare Locust con Azure Load Testing
Utilizzare Hybrid Cache in .NET 9
Eseguire script pre e post esecuzione di un workflow di GitHub
Potenziare la ricerca su Cosmos DB con Full Text Search
Path addizionali per gli asset in ASP.NET Core MVC
Simulare Azure Cosmos DB in locale con Docker
Eseguire query in contemporanea con EF
I più letti di oggi
- Creare un router per Single Page Application con l'evento navigate
- Serializzazione e deserializzazione JSON in JavaScript
- Utilizzare app-shell per rendere un'applicazione Angular più responsiva alla partenza
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!