wie Silverlight sprechen lernte

Wissen Sie was COM oder gar CORBA ist? Uraltes Zeugs. Microsoft hat COM ( das Component Object Modell) vor langer Zeit für Windows erfunden um Fremdanwendungen leichter in eigene Programme einbinden zu können. Also z.B. Excel aus Word aufrufen. COM ist heute noch State of the Art. Selbst Silverlight 4 kann nun COM Objekte instanziieren oder laufende COM Server nutzen. Einzig Late Binding muss verwendet werden. Der größte Nachteil von Latebinding ist das man erst zur Laufzeit erfährt ob der Code auch funktioniert. Weder Compiler noch Intellisense können den Code prüfen.

COM Automatisierung funktioniert nur bei elevated Trust und installierten Anwendungen also OOB ( out of browser).

Die meisten Beispiele zeigen die Verwendung von Word oder Excel per COM. Das ist auch sicher naheliegend aber keine echte Herausforderung für mich. In meine Silverlight Kursen will ich ja schließlich mehr bieten als man in den Büchern liest. Dabei habe ich ganz tief im Betriebssystem nach COM Objekten gegraben und bin über die Speech API gestolpert. Ich habe schon vor vielen Jahren damit gearbeitet und es hat immer wunderbar funktioniert. Das Teil kann Sprachkommandos erkennen, Texterkennung durchführen und letztendlich auch geschriebenen Text vorlesen. Ich finde Microsoft hat schon oft klasse Technologie entwickelt,  die später dann von anderen aufgegriffen und erst richtig erfolgreich wurde. (XMLHTTP, Tablet PC, Speech, Smart Phone).

Um Silverlight das sprechen auf Deutsch beizubringen braucht man noch ein paar Vorbereitungen. Out of The Box kann nahezu jedes Microsoft Betriebssytem von Microsoft bis Windows 7 Text vorlesen. Allerdings nur auf Englisch.

Für unseren Test installieren wir den MS Reader 2.5 (Software um Bücher elektronisch zu lesen kommt mir auch irgendwie bekannt vor) aus dem Jahre 2002! und das deutsche Sprachpaket dazu. Dann findet sich in der Systemsteuerung unter Sprachen zwei neue Sprecher LH Stefan und LH Anna.

image

Der Code in Silverlight ist da nur mehr ein Klacks. Um zu verhindern das die Anwendung im Online Modus einen Fehler wirft wird der eigentliche Code in eine IF Verzweigung gepackt. Mit der AutomationFactory lässt sich diese Prüfung durchführen oder ein Com Objekt erzeugen. Dann wird die Sprache ausgewählt und Lautstärke und Sprechgeschwindigkeit eingestellt. Per Speak spricht der Computer dann wirklich.

If AutomationFactory.IsAvailable Then
            Dim co = AutomationFactory.CreateObject("SAPI.SpVoice")
            co.voice = co.GetVoices("Name=LH Stefan").Item(0)
            co.Volume = 100 '0-.100
            co.Rate = -1   '-10 - +10
            co.Speak("Hallo Welt, ich bin hannesp")
End If

Das ist eigentlich schon ziemlich cool. Aber es geht noch besser. Man kann die Ausgabe auch in eine Datei schreiben lassen statt den Text im Lautsprecher auszugeben. Das Format ist WAV. So eine WAV Datei kann dann jeder abspielen egal ob diese per Mail kommt oder im Browser ein Link steht.

   Dim co = AutomationFactory.CreateObject("SAPI.SpVoice")
   co.voice = co.GetVoices("Name=LH Stefan").Item(0)
   co.Volume = 100 '0-.100
   co.Rate = -1   '-10 - +10
   Dim fs = AutomationFactory.CreateObject("SAPI.SpFileStream")
   SpeechStreamFileMode.SSFMCreateForWrite=3
   fs.Open("c:\test.wav", 3, False)
   co.AudioOutputStream = fs
   co.Speak("Hallo Welt, ich bin hannesp und arbeite für ppedv AG")
   fs.Close()
Dank COM ist man auch nicht an die üblichen Grenzen des Dateizugriffes von Silverlight Anwendungen gebunden und kann an beliebige Stelle die WAV Datei speichern.

Kommentar schreiben