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!!!!