martedì 3 dicembre 2013

Regalati un Lumia 925 per Natale con DVLUP!!!

Sei pronto per un Natale ricco? 2 nuove apps su Windows Phone 8 e Windows 8 per i punti o 3 per avere in piu' un fantastico regalo di Natale !!!

 

image

 

DVLUP, il portale Nokia che fornisce opportunità agli sviluppatori Windows Phone 7.x/8 e Windows 8 offre un challenge interessante per natale.

3 app per Windows Phone e Windows 8 e avrete un Lumia 925.

Maggiori info all’indirizzo http://www.dvlup.com/Challenge/308 

A prescindere dalla challenge, vi consiglio di visitare il portale!!

Buon Natale!!!

 

giovedì 21 novembre 2013

BING Speech Recognition nelle Windows Store app

Vi segnalo il mio guest post sul blog di MSDN Italia riguardante la funzionalità di Speech Regonition fornita da BING per le applicazioni Windows Store.

Il link al post e’ il seguente:

http://blogs.msdn.com/b/italy/archive/2013/11/21/guest-post-bing-speech-recognition-nelle-windows-store-app.aspx

 

Buona lettura!!! Smile

 

lunedì 18 novembre 2013

Le novità di Visual Studio 2013: prossimi eventi

 

Vi segnalo l’evento di lancio italiano di Visual Studio 2013 che si terrà domani presso la sede Microsoft di Milano e che verrà trasmesso in streaming.

Informazioni e link all’indirizzo http://www.microsoft.com/italy/visualstudio/evento2013/

Vi segnalo anche il nostro (dove con nostro intendo di DomusDotNet) evento locale che si terrà il pomeriggio del 29 Novembre prossimo presso la sede Microsoft di Roma.

Per quanto riguarda quest’ultimo evento, potete trovare agenda e iscrizioni al link https://communitydevtool.microsoft.it/public/frmdetailevent.aspx?eventid=0203FGFDRRBTEPROGTCSSE

Attualmente abbiamo qualche problema con il portale di DomuDotNet, quindi utilizzate il link presente in questa pagina per l’iscrizione.

Ci vediamo il 29!!!!

 

mercoledì 30 ottobre 2013

CodeTailor per Windows Store Apps!!!!

Settimana di rilasci!!!

Oggi è il turno dell’applicazione Windows Store Apps del mio blog.

L’applicazione è disponibile all’indirizzo http://apps.microsoft.com/windows/app/codetailor/e3fe05ba-e27f-4944-9e2f-fd26436ddb11

Per chi sta navigando questa pagina utilizzando il browser “Store App” di Windows 8/8.1, può utilizzare l’opzione “Get app for this site” mostrata dalla seguente figura (dovreste vedere apparire un “+” nell’icona della chiave inglese):

image

che vi porta direttamente nella pagina dello store relativa all’app.

Se volete abilitare anche voi le pagine del vostro sito al suggerimento dell’app, qui c’è l’indicazione di come fare.

 

martedì 29 ottobre 2013

Razze Canine per Windows Phone 8 is out!!!

Dopo la versione Windows Store Apps sono riuscito a completare anche la versione per Windows Phone 8 che finalmente è nello store!!

Razze Canine è la raccolta delle razze canine riconosciute e non dall'FCI (Fédération Cynologique Internationale). Caratteristiche, particolarità, informazioni e curiosità relative al miglior amico dell'uomo. Raggruppa le tue razze preferite nei preferiti oppure crea una tile secondaria per aprire la scheda della tua razza preferita. La raccolta è in continua evoluzione e il numero di razze censite aumenterà ad ogni aggiornamento. La tile principale dell'app è animate con le razze preferite dell'utente.

Non necessita di connessione ad internet.

Buon download!!! Smile

 

lunedì 21 ottobre 2013

Syncfusion “Succinctly” interessanti e gratuiti!

Vorrei segnalarvi (per chi non li conoscesse già) gli e-book gratuiti offerti da Syncfusion e disponibili a questa pagina.

Si tratta di ottimi e-book mirati su singole tecnologie. In particolare, per chi come me lavora con tecnologie .NET, vi segnalo:

Unit Testing Succinctly

Learn the basics of unit testing, different ways to implement it, and why it may not always be a good idea.


WPF Succinctly

Create applications with stunning UI while separating your front end from your business logic and data.


WPF Succinctly

Make your transition to developing Windows Store apps as smooth as the Windows 8 UI.


ASP.NET MVC 4 Mobile Websites Succinctly

The proliferation of mobile devices has forced developers into a mad rush to adapt their websites to function on any device in addition to the conventional desktop or laptop. With ASP.NET MVC 4 Mobile Websites Succinctly by Lyle Luppes, you'll learn how to create mobile-friendly websites using the powerful MVC 4 framework while minimizing duplicate content, leveraging jQuery.Mobile and HTML 5, and enhancing performance.


Fatevi un giro al link per vedere ‘elenco completo dei libri disponibili.

Per ogni e-book potete trovare la versione PDF e la versione MOBI per Amazon Kindle.

Buona lettura!!!! Open-mouthed smile

 

giovedì 3 ottobre 2013

Windows Phone App Studio: applicazioni rapide per Windows Phone 8

Per chi se lo fosse perso, vi segnalo Windows Phone App Studio, una web application molto ben fatta che vi permette di costruire delle applicazioni Windows Phone in maniera RAD.

Come tutte le piattaforme RAD ha i pro e i contro ma conoscendoli si possono sfruttare a nostro vantaggio.

Le applicazioni che Windows Phone App Studio è in grado di realizzare sono applicazioni che consentono la consultazione di sorgenti dati, siano esse un feed RSS o una pagina HTML interna all’app stessa.

La scorsa settimana ho voluto provare a realizzare una applicazione che mostrasse alcune informazioni del mio comune (che, fortunatamente, ha un sito che espone un feed RSS).

In una mezz’oretta sono riuscito a realizzare una semplice app che mostra le ultime notizie (feed RSS), le note storiche (HTML embeddato), informazioni generali sul comune (ancora HTML) e una galleria di immagini (anch’esse inserite nell’app ma si ha anche la possibilità di farle scaricare da un servizio on the cloud).

Ho messo dentro un paio di sfondi (di dubbio gusto vista la mia totale inadeguatezza come designer) e 4 iconette e il gioco è stato completato.

L’applicazione è nello store, all’indirizzo http://www.windowsphone.com/s?appid=8560035e-3c48-4dde-b772-188bf3dde977

La cosa interessante è che la piattaforma è in grado di generarvi anche la solution Visual Studio per poter intervenire nelle vostre personalizzazioni spinte.

Non mi sogno di sostenere che sia la panacea dello sviluppo Windows Phone ma provatelo, tanto è gratis!!! Smile

P.S.: La piattaforma è in evoluzione, quindi aspettatevi di trovare nuove funzionalità con il passare del tempo!!!

 

giovedì 26 settembre 2013

Intel Perceptual Computing SDK R5 is out!!

E’ stata rilasciata ieri la versione R5 dell’SDK di Intel Perceptual Computing.

In questa verisone sono presenti delle ottimizzazioni e alcune nuove funzionalità nelle classi UtilCapture e UtilMPipeline per l’accesso diretto ai formati delle immagini e alle proprietà dei device.

Il link per scaricare l’SDK è presente nella pagina di Intel Perceptual Computing di Intel Developer Zone.

 

lunedì 23 settembre 2013

Windows 8.1 RTM: Text to Speech e “Access Denied”

Riprendo il post http://codetailor.blogspot.com/2013/07/windows-81-store-apps-text-2-speech.html per segnalarvi che in Windows 8.1 RTM, allo stato attuale delle cose, il codice:

Private Async Sub PlayText(text As String, voice As VoiceInformation)
    Using synth = New Windows.Media.SpeechSynthesis.SpeechSynthesizer
        Dim synthStream As Windows.Media.SpeechSynthesis.SpeechSynthesisStream
        synth.Voice = voice
        Try
            synthStream = Await synth.SynthesizeTextToStreamAsync(text)
        Catch ex As Exception
            synthStream = Nothing
        End Try
        If synthStream Is Nothing Then
            Dim dialog = New MessageDialog("Error during Synthetize")
            Await dialog.ShowAsync()
        Else
            MediaElement.SetSource(synthStream, synthStream.ContentType)
            MediaElement.Play()
        End If
    End Using
End Sub

ottiene, in fase di esecuzione, un inesorabile quanto inspiegabile System.UnauthorizedAccessException:

image

Accesso non autorizzato a cosa?

Bene, navigando un pochino nella grande rete e chiedendo in giro ai miei informatori, ho scoperto (o, meglio, hanno scoperto e mi hanno riferito Smile) che si tratta di un un problema della RTM con il registro di sistema (non so se legato a questa funzionalità specifica o generale).

Una soluzione al problema specifico consiste nel rimuovere le chiavi di registro contenute nella chiave

HKEY_CURRENT_USER\Software\Microsoft\Speech

come mostrato in figura:

image
In questo modo sembrerebbe che le funzionalità del text to speech funzionino tranquillamente.

Ovviamente si tratta di toccare il registro di sistema, quindi vi raccomando cautela e calma per evitare di fare danni inenarrabili.

 

P.S.: Piccolo spazio pubblicità: se volete saperne di più su Text to Speech in Win8.1 vi aspetto alla mia sessione ai Community Days di Roma il 25 Settembre presso la sede Microsoft (http://www.communitydays.it/events/communitydays2013-roma/).

 

martedì 17 settembre 2013

Kinect 1.8, Kinect Dev Center e …. altro

Per chi non lo sapesse, è stata rilasciata la versione 1.8 dell’SDK di Kinect e relativo toolkit.

Sono state introdotte alcune migliorie per la rimozione dello sfondo e l’interazione con HTML.

Tutte le novità le trovate elencate nel seguente post http://blogs.msdn.com/b/kinectforwindows/archive/2013/09/16/updated-sdk-with-html5-kinect-fusion-improvements-and-more.aspx

Nel post trovate anche i link per scaricare SDK, toolkit e risorse varie.

Vi segnalo anche il portale Kinect for Dev, punto di riferimento per gli sviluppatori:

http://www.microsoft.com/en-us/kinectforwindowsdev/default.aspx

Infine un interessante libro pubblicato da PACK Publishing dal titolo Augmented Reality with Kinect.

Kinect 4384OT_Mini

Non ho ancora completato la lettura mail libro è decisamente interessante. Maggiori dettagli ve li darò non appena avrò terminato di leggerlo.

Rimanete connessi!!!

 

martedì 10 settembre 2013

lunedì 9 settembre 2013

Windows 8.1: Text to Speech, SSML e i marker

Nel precedente post abbiamo parlato di Text to Spech e abbiamo accennato alla possibilità di utilizzare un file nel formato SSML (http://www.w3.org/TR/speech-synthesis/) grazie al metodo SpeakSsmlFromUriAsync della classe SpeechSynthesizer:

Public Async Function PlaySSML() As Task
    Dim synth = New SpeechSynthesizer()
    Dim ssmlString = Await LoadSSMLFile("SSML.xml")
    Dim stream = Await synth.SynthesizeSsmlToStreamAsync(ssmlString)
    MediaElement.SetSource(stream, stream.ContentType)
    MediaElement.Play()
End Function

La funzione LoadSSMLFile() si occupa di leggere il file dal disco e restituire la stringa del contenuto.

Tra le molteplici funzionalità offerte dal formato SSML c’è quella di poter inserire, all’interno del file XML, dei marcatori (marker) che possono essere segnalati l nostro codice e che ci permettono di sincronizzare l’interfaccia in maniera opportuna.

Immaginiamo, ad esempio, un libro per bambini in cui la storia, raccontata dalla voce del tablet, viene affiancata con delle immagini. Queste immagini possono essere sincronizzate, appunto, utilizzando dei marker.

Il file SSML potrebbe essere del tipo:

<?xml version="1.0"?>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.w3.org/2001/10/synthesis
                   http://www.w3.org/TR/speech-synthesis/synthesis.xsd">
  <mark name="Primo disegno"/>
    <p>C'era una volta</p>
  <mark name="Secondo disegno"/>
    <p>in un regno lontano lontano</p>
  .
  .
  .
  <mark name="Fine"/>
  <p>E vissero tutti felici e contenti</p>
</speak>

Poichè è il MediaElement ad occuparsi dell’esecuzione dello stream di text to speech, è il MediaElement a segnalare il raggiungimento dei marker.

In particolare ci basterà gestire l’evento merkerReached dello stesso MediaElement e agire di conseguenza sull’interfaccia.

Private Sub MediaElement_MarkerReached(sender As Object,
                                       e As TimelineMarkerRoutedEventArgs) Handles MediaElement.MarkerReached
    ' Possiamo gestir ela visualizzazione delle immagini
    ' in base alla propriet Marker dell'argomento e
End Sub

Tutto molto semplice……se funzionasse!!!

Il problema è che, pur gestendo lo stream del Text to Speech i marker (la collezione Markers della classe SpeechSynthesisStream è valorizzata correttamente), questi non sono compatibili con quelli gestiti dal MediaElement.
Non si sa se tale scelta sia voluta o sia un bug che verrà corretto, in ogni caso, per poter gestire i marker nel MediaElement siamo costretti a crearli a partire dal quelli dello stream del Text to Speech.

La cosa più semplice è creare un extension method che gestisce il tutto:

Imports Windows.Media.SpeechSynthesis

Public Module MediaElementExtensions

    <Extension()>
    Public Sub SetSpeechSynthesisSource(control As MediaElement, stream As SpeechSynthesisStream)
        If control Is Nothing Then Throw New NullReferenceException("MediaElement")
        control.SetSource(stream, stream.ContentType)
        If stream.Markers IsNot Nothing Then
            For index = 0 To stream.Markers.Count() - 1
                Dim marker = stream.Markers(index)
                control.Markers.Add(New TimelineMarker() With {.Text = marker.Text,
                                                               .Time = marker.Time,
                                                               .Type = marker.MediaMarkerType})
            Next
        End If
    End Sub
End Module

In sostanza, impostiamo la sorgente del MediaElement in modo “convenzionale” e, successivamente, scorriamo i marker dello stream generato dallo SpeechSynthesizer e per ognuno di questi creiamo un marker gestibile dal MediaElement (TimelineMarker) e lo aggiungiamo alla collezione Markers.

In questo modo, possiamo scrivere:

Public Async Function PlaySSML() As Task
    Dim synth = New SpeechSynthesizer()
    Dim ssmlString = Await LoadSSMLFile("SSML.xml")
    Dim stream = Await synth.SynthesizeSsmlToStreamAsync(ssmlString)
    MediaElement.SetSpeechSynthesisSource(stream)
    MediaElement.Play()
End Function

 

martedì 3 settembre 2013

Face Recognition….avanti un altro!!!

Ebbene si, continuerò a devastarvi le giornate con i miei articoli introduttivi su Intel© Perceptual Computing SDK.

Stavolta tocca alla prima parte sul Face Recognition. In questa prima parte vedremo come effettivamente funziona il modulo fornito di serie dalla piattaforma per riconoscere un volto.

L’articolo è qui: http://software.intel.com/it-it/articles/introduzione-a-intel-perceptual-computing-sdk-face-recognition-parte-1

Se siete interessati a Intel© Perceptual Computing, vi consiglio di farvi un giro sul portale Intel Developer Zone e, se siete dalle parti di Roma il 25 settembre prossimo, vi consiglio di venire ai CommunityDays e, in particolare, di seguire la sessione di Francesco Baldassarri (Italian Community Manager di Intel Corporation) proprio sull’argomento: Intel Perceptual Computing Technology: Gold SDK R4

Ovviamente, la tortura dei miei articoli sull’argomento non è affatto terminata!!!!


 

mercoledì 28 agosto 2013

Ora tocca a Gesture Recognition

Rieccomi qui a segnalarvi l’ennesimo articolo su Intel Developer Zone relativo alla piattaforma Intel Perceptual Computing SDK.

Questa volta affrontiamo la parte di gesture recognition: Introduzione a Intel Perceptual Computing SDK: Gesture recognition

La cosa brutta per voi è che gli argomenti non sono ancora finiti e sarete costretti a subirvi ancora i miei articoli.

Per complicarvi la vita ho, inoltre, realizzato una apposita pagina nel mio blog in modo che possiate avere una visione di insieme su ciò che è stato pubblicato.

L’indirizzo della pagina è  http://codetailor.blogspot.it/p/intel-perceptual-computing.html e vi troverete tutti gli articoli scritti sullàargomento, anche non presenti in Intel Developer Zone.

 

Stay Tuned!!!

 

martedì 27 agosto 2013

myTimeSheet is out!!!

Vi segnalo la pubbblicazione della versione 1.0 di myTimeSheet, l'applicazione per Windows Phone 8 che aiuta a tenere traccia degli orari di lavoro giornaliero.
Il link allo store è il seguente:

http://www.windowsphone.com/s?appid=7d60f740-7186-46bb-b429-298cec6ad8c7

Attualmente sono supportati l'italiano e l'inglese ma prossimamente uscirà l'aggiornamento per altre lingue.
L'app è a pagamento ma ha la versione di prova con le seguenti limitazioni:
  • Fino a 3 clienti memorizzabili;
  • Non può esportare i dati in formato CSV;
  • Non sono abilitati I tool per la cancellazione della banca dati.
L'applicazione può sfruttare la geolocalizzazione per capire il cliente presso cui ci si trova e facilitare l'operazione di check-in.

mercoledì 21 agosto 2013

Intel Perceptual Computing SDK: gestire i moduli e le web cam

Vi segnalo l’uscita di un nuovo articolo su Intel Developer Zone relativo a Intel Perceptual Computing SDK.

Questa volta si tratta della gestione dei moduli e, in particolare, di come poter selezionare le web cam quando abbiamo più sorgenti video all’interno del nostro pc.

http://software.intel.com/it-it/articles/introduzione-a-intel-perceptual-computing-sdk-i-moduli-e-le-webcam

Buona lettura e rimanete connessi perché il meglio deve ancora venire!!

 

lunedì 19 agosto 2013

Giudice di Intel Perceptual Computing Challenge

Sono onorato di essere stato nominato (assieme al grande Marco Dal Pino) giudice del concorso internazionale Intel Perceptual Computing Challenge indetto da Intel e la cui fase finale comincerà a partire dal 24 settembre prossimo.

cercheremo di tenere alto l’onore dell’Italia visto che siamo gli unici due italiani.

Se vi interessa capire di cosa si tratta, il sito ufficiale del concorso è https://perceptualchallenge.intel.com

Al solito un grandissimo ringraziamento va a DomusDotNet (e a tutti i ragazzi che ne fanno parte) perché senza la visibilità offerta da una community oramai così importante non sarei riuscito ad ottenere questo risultato.

 

 

martedì 13 agosto 2013

Intel Perceptual SDK sbarca su HTML.it

Dopo i primi articoli pubblicati su Intel Developer Zone e in attesa dei prossimi, ecco che Intel Perceptual SDK sbarca su HTML.it.

http://www.html.it/articoli/face-detection-con-intel-perceptual-computing-sdk/

L'articolo approccia l'argomento in maniera differente rispetto a come sono stati implementate le demo degli articoli di IDZ. In particolare potete trovare codice VB.NET e C# (ebbene si!!!!) da poter scaricare e provare.

Buon ferragosto e buon divertimento!!

Stay tuned!

giovedì 25 luglio 2013

Articolo su architettura di Intel Perceptual Computing e VB.NET

Per chi come me sviluppa utilizzando VB.NET e sta approcciando all’utilizzo di Intel Perceptual Computing SDK, su Intel Developer Zone è stato pubblicato un articolo sugli oggetti non visibili per i linguaggi “Case Insensitive” a causa dell’organizzazione con cui sono state strutturate le classi all’interno delle librerie di PerC.

Dategli un’occhiata perché eviterà a molti di diventare matti!!! :-)

Il link all’articolo è http://software.intel.com/it-it/articles/vbnet-e-i-tipi-invisibili-nella-libreria-libpxcclrdll

 

mercoledì 10 luglio 2013

martedì 2 luglio 2013

Windows 8.1 Store Apps: Text 2 Speech

Con l’arrivo di Windows 8.1 sono arrivate anche una miriade di API con nuove funzionalità interessanti.

Una di queste, già presente tra le API a disposizione di chi sviluppa per Windows Phone 8, è quella relativa al Text To Speech (TTS), cioè alla possibilità che abbiamo di far “parlare” la nostra Windows Store App.

Per chi conosce le API a disposizione di WP8, le API per Windows 8.1 prevedono un approccio differente.

Le nuove API, dato un testo o un file SSML, permettono di ottenere uno stream audio (vedremo in seguito di che tipo) che, per essere riprodotto, deve essere dato in pasto ad un MediaElement.

La seguente figura mostra il flusso da seguire per far parlare la nostra app:

 

image

Supponendo di avere la seguente interfaccia XAML (molto semplice):

<Page
    x:Class="Text2Speech.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Text2Speech"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <TextBox Name="txtText" Grid.Row="0" HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="200" Margin="10"/>
        <Button Grid.Row="1" Content="Text2Speech" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10" Click="Button_Click"/>
        <MediaElement x:Name="Audio"/>
    </Grid>
</Page>

 

Il codice necessario per far pronunciare, nella lingua di default, il testo inserito nel textbox è il seguente:

Using synth = New Windows.Media.SpeechSynthesis.SpeechSynthesizer
    Dim synthStream As Windows.Media.SpeechSynthesis.SpeechSynthesisStream
    Try
        synthStream = Await synth.SynthesizeTextToStreamAsync(txtText.Text)
    Catch ex As Exception
        synthStream = Nothing
    End Try
    If synthStream Is Nothing Then
        Dim dialog = New MessageDialog("Error during Synthetize")
        Await dialog.ShowAsync()
    Else
        Audio.AutoPlay = True
        Audio.SetSource(synthStream, synthStream.ContentType)
        Audio.Play()
    End If
End Using

 

La classe da utilizzare per “sintetizzare” il testo è la SpeechSynthesizer.

Utilizzando il metodo SynthesizeTextToStreamAsync (rigorosamente asincrono), otteniamo lo stream di sintesi vocale (di tipo SpeechSynthesisStream) che possiamo impostare come sorgente di un MediaElement e riprodurlo.

La classe SpeechSynthesizer espone anche il metodo SynthesizeSsmlToStreamAsync per eseguire la sintesi di un file SSML (per lo standard SSML vedere http://www.w3.org/TR/speech-synthesis/) il cui funzionamento è identico al precedente.

Infine, la stessa classe può essere utilizzata per recuperare l’insieme delle lingue disponibili nel sistema. La proprietà statica InstalledVoices restituisce la collezione di VoiceInformation relative a tutte le lingue installate nel sistema. Attualmente ci sono 17 lingue disponibili (ma non l’italiano).

In ogni caso, se volessimo la prima lingua italiana presente nel sistema (qualora esistesse), potremmo scrivere:

Dim voices = Windows.Media.SpeechSynthesis.SpeechSynthesizer.AllVoices

Dim italianVoice = voices.Where(Function(v) v.Language = "it-IT").FirstOrDefault()

 

ItalianVoice e’ un’istanza di classe VoiceInformation al cui interno troviamo le informazioni relative alla voce:

image

Per  impostare la lingua desiderata prima di eseguire lo speech, utilizziamo la proprietà Voice della classe SpeechSynthesizer.

Private Sub SetItalianVoice(synth As Windows.Media.SpeechSynthesis.SpeechSynthesizer)
    Dim voices = Windows.Media.SpeechSynthesis.SpeechSynthesizer.AllVoices
    Dim italianVoice = voices.Where(Function(v) v.Language = "it-IT").FirstOrDefault()
    If italianVoice IsNot Nothing Then
        synth.Voice = italianVoice
    End If
End Sub

 

Per maggiori informazioni sul namespace relativo al Text To Speech, l’indirizzo MSDN è http://msdn.microsoft.com/en-us/library/windows/apps/windows.media.speechsynthesis.aspx

Un esempio (C#, Javascript e C++) è disponibile all’ indirizzo http://code.msdn.microsoft.com/windowsapps/Speech-synthesis-sample-6e07b218

 

venerdì 28 giugno 2013

Introduzione a Intel Perceptual Computing SDK: Face Detection

Vi segnalo un mio articolo su Intel Developer Zone relativo alle funzionalità di Face Detection del Perceptual Computing SDK utilizzate in una applicazione .NET e più precisamente in VB.NET.

Potete trovare l’articolo all’indirizzo:

http://software.intel.com/it-it/articles/introduzione-a-intel-perceptual-computing-sdk-face-detection

Rimanete collegati perchè la serie di articoli su Perceptual Computing non è terminata. Open-mouthed smile

 

lunedì 24 giugno 2013

lunedì 17 giugno 2013

Recensione : Kinect in Motion–Audio and Visual Tracking by Example

image
Come molti di voi sanno, da un pò di tempo mi interesso di sviluppo per Kinect e, più in generale, di realizzazione di interfacce NUI ed è per questo che non poteva “sfuggirmi” questo libro di due compatrioti sull’argomento.
Si tratta di un libro molto snello (oserei dire “estivo”) con sole 112 pagine che si legge rapidamente ma che può anche essere usato come reference guide prendendo spunto dagli esempi riportati.
Sono proprio gli esempi a guidare i capitoli del libro, se si eccettua il primo capitolo (in cui si parla dell’hardware Kinect) e la parte dell’ultimo dedicata al Kinect Studio.
Negli altri capitoli vengono prese in esame le funzionalità offerte dal Kinect (camera, depth stream, skeletal tracking e speech recognition) proponendo esempi e ragionando sugli stessi.
Personalmente preferisco partire dalla teoria per arrivare agli esempi, ma mi rendo conto che avere degli esempi “pronti via” sia decisamente più facile per chi si avvicina al device per la prima volta.
In questo caso, per ogni funzionalità del Kinect, vengono suggeriti esempi completi (anche più d’uno per ogni funzionalità) e, prendendo spunto da questi, viene anche generalizzato il concetto per renderlo più chiaro.
Interessante, all’interno del capitolo sullo Skeletal Tracking, il paragrafo sulla realizzazione di un semplice GestureManager basato su un approccio algoritmico: evidentemente si tratta di un esempio che può essere utilizzato solo in determinati ambiti applicativi ma riesce benissimo a dare l’idea dell’approccio da seguire per calare il concetto di Skeletal Tracking all’interno del mondo reale.
I punti deboli del libro sono, a mio personalissimo parere, i seguenti:
  • 112 pagine sono decisamente poche per approfondire l’argomento in maniera opportunaò
  • il libro è basato sulla versione 1.6 del Kinect SDK (attualmente è fuori la 1.7).
Si tratta, in ogni caso, di un libro che chi si avvicina al mondo delle gesture recognition e del Kinect può tranquillamente prendere in esame (anche considerato il prezzo abordabilissimo).
Consiglierei alla casa editrice una versione aggiornata alla ultimissima versione dell’SDK e, magari, un capitolo sui concetti base delle NUI in modo da far ben capire che il Kinect non è un sostituto del mouse.
Un libro molto buono, ben scritto e ricco di esempi. Se non avete da leggere sotto l’ombrellone……Smile

Potete trovare il libro direttamente dal sito Packt al seguente link.

martedì 30 aprile 2013

WP8 : Installare dinamicamente i Voice Command Definition, DynamicVCD

I Voice Command Definition sono dei file XML che permettono di configurare quali sono i comandi vocali, gestiti da Windows Phone 8, a cui la nostra applicazione risponde.

Per una trattazione più approfondita sull’argomento vi rimando al blog di Michele Locuratolo (anatomia del file VCD, registrazione del file VCD, Gestione del Voice Command).

In questo post vorrei suggerire un modo per gestire dinamicamente l’installazione e la configurazione di tali file.

Una app può installare un solo VCD e, una volta installato, si possono solamente modificare le phrase list e non si possono aggiungere o rimuovere i comandi (a meno di non reinstallare il file).

L’idea è quella di creare una struttura dati che descriva il voice command definition:

image

e, utilizzando, queste strutture costruire “al volo” i file VCD da salvare su storage e installare in maniera “canonica”.

  1. Public Shared Async Function InstallVoiceCommandDefinitionAsync(voiceCommandDefinition As VoiceCommandDefinition) As Task
  2.     If voiceCommandDefinition Is Nothing Then Throw New ArgumentNullException("voiceCommandDefinition")
  3.     Try
  4.         Dim xmlString = CreateXml(voiceCommandDefinition)
  5.         If Await SaveAsync(VCDFileName, xmlString) Then
  6.             Await MSSpeech.VoiceCommandService.InstallCommandSetsFromFileAsync(GetLocalUri(VCDFileName))
  7.         End If
  8.     Catch ex As Exception
  9.         Dim newEx = ExceptionFactory.CreateException(ex)
  10.         Throw newEx
  11.     End Try
  12. End Function

In questo contesto non stiamo a dettagliare i vari metodi utilizzati (anche perchè il codice è disponibile su Codeplex).

In sostanza potremo creare una nostra classe VoiceCommandService che fa da wrapper all’omologa fornita dalle Speech API di Windows Phone 8 e che fornisce, oltre alle funzioni di serie, anche la possibilità di creare ed installare al volo un VCD.

Un esempio può essere:

  1. Public Async Function InstallVCD() As task
  2.     Dim vcd = New VoiceCommandDefinition
  3.     ' Define command set
  4.     Dim cs = New CommandSet
  5.     cs.Name = "MyAppCommandSet"
  6.     cs.Culture = "en-US"
  7.     cs.CommandPrefix = "MyApp"
  8.     cs.Example = "Sample"
  9.     vcd.AddCommandSet(cs)
  10.     ' Define single Command
  11.     Dim c = New Command() With {.Name = "OpenDocument",
  12.                                 .Feedback = "I'm opening a document...",
  13.                                 .Example = "Open a document"}
  14.     c.ListenForList.Add("open [a] document")
  15.     c.ListenForList.Add("show [a] document")
  16.     cs.AddCommand(c)
  17.     ' Try to install the VCD
  18.     Try
  19.         Await VoiceCommandService.InstallVoiceCommandDefinitionAsync(vcd)
  20.         MessageBox.Show("VCD installed correctly")
  21.     Catch ex As Exception
  22.         MessageBox.Show(ex.Message)
  23.     End Try
  24. End Function

Sta alla nostra fantasia, poi, utilizzare le funzionalità di configurazione al volo in maniera opportuna. Ad esempio si potrebbero attivare comandi in base alle funzionalità acquistate dall’utente o permettere allo stesso di personalizzare i propri comandi.

Il progetto, il cui nome è DynamicVCD, è disponibile in licensa Ms-PL su CodePlex all’indirizzo https://dynamicvcd.codeplex.com/ ed è disponibile anche su NuGet (https://www.nuget.org/packages/DynamicVCD/).

Critiche, consigli e proposte di nuove funzionalità sono bene accetti! Winking smile