PSVoice
Fast jede Windows Version hat mittlerweile einen Sprach Synthesizer eingebaut, mit dem Windows Texte auch "vorlesen" kann. Die Funktion gibt es schon Seit Windows 98 und mit dem .NET-Framework 3.0 ist es sehr einfach auch per PowerShell diese Funktion zu nutzen.
"Hello" per Sprache
Genau genommen reicht ein Dreizeiler, um dem PC die ersten Töne zu entlocken
Add-Type -AssemblyName System.speech $voice = New-Object System.Speech.Synthesis.SpeechSynthesizer $voice.Speak("Hallo, This is your Computer")
Auf ihrem PC können mehrere "Personas" installiert sein. Normalerweise spricht "Microsoft Anna". Das können Sie einfach ermitteln
PS C:\> $voice.voice.Name Microsoft Anna
Anna ist natürlich mit einer amerikanischen Aussprache gesegnet. Deutsche Texte hören sich entsprechend unnatürlich an.
Methoden und Properties von System.Speech.Synthesis.SpeechSynthesizer
Wenn man nun mal in "$voice" die Klasse instanziert hat, kann ein Blick in die Eigenschaften schon aufschlussreich sein
PS C:\> $voice | gm TypeName: System.Speech.Synthesis.SpeechSynthesizer Name MemberType Definition ---- ---------- ---------- BookmarkReached Event System.EventHandler`1[System.Speech... PhonemeReached Event System.EventHandler`1[System.Speech... SpeakCompleted Event System.EventHandler`1[System.Speech... SpeakProgress Event System.EventHandler`1[System.Speech... SpeakStarted Event System.EventHandler`1[System.Speech... StateChanged Event System.EventHandler`1[System.Speech... VisemeReached Event System.EventHandler`1[System.Speech... VoiceChange Event System.EventHandler`1[System.Speech... AddLexicon Method void AddLexicon(uri uri, string med... Dispose Method void Dispose(), void IDisposable.Di... Equals Method bool Equals(System.Object obj) GetCurrentlySpokenPrompt Method System.Speech.Synthesis.Prompt GetC... GetHashCode Method int GetHashCode() GetInstalledVoices Method System.Collections.ObjectModel.Read... GetType Method type GetType() Pause Method void Pause() RemoveLexicon Method void RemoveLexicon(uri uri) Resume Method void Resume() SelectVoice Method void SelectVoice(string name) SelectVoiceByHints Method void SelectVoiceByHints(System.Spee... SetOutputToAudioStream Method void SetOutputToAudioStream(System.... SetOutputToDefaultAudioDevice Method void SetOutputToDefaultAudioDevice() SetOutputToNull Method void SetOutputToNull() SetOutputToWaveFile Method void SetOutputToWaveFile(string pat... SetOutputToWaveStream Method void SetOutputToWaveStream(System.I... Speak Method void Speak(string textToSpeak), voi... SpeakAsync Method System.Speech.Synthesis.Prompt Spea... SpeakAsyncCancel Method void SpeakAsyncCancel(System.Speech... SpeakAsyncCancelAll Method void SpeakAsyncCancelAll() SpeakSsml Method void SpeakSsml(string textToSpeak) SpeakSsmlAsync Method System.Speech.Synthesis.Prompt Spea... ToString Method string ToString() Rate Property int Rate {get;set;} State Property System.Speech.Synthesis.Synthesizer... Voice Property System.Speech.Synthesis.VoiceInfo V... Volume Property int Volume {get;set;}
Sie sehen eine ganze Menge von Methoden aber auch ein paar Properties. Einige Properties kann man verändern, wie z.B. "Rate" (Default 2) und "Volume" (Default =100). Andere Properties wie "Voice" können direkt nur gelesen werden.
PS C:\> $voice.Voice Gender : Female Age : Adult Name : Microsoft Anna Culture : en-US Id : MS-Anna-1033-20-DSK Description : Microsoft Anna - English (United States) SupportedAudioFormats : {System.Speech.AudioFormat.SpeechAudioFormatInfo} AdditionalInfo : {[Age, Adult], [AudioFormats, 18], [Gender, Female], [Language, 409]...}
- SpeechSynthesizer.Rate
Property
http://msdn.microsoft.com/de-de/library/system.speech.synthesis.speechsynthesizer.rate(v=vs.110).aspx - SpeechSynthesizer.Volume
Property
http://msdn.microsoft.com/de-de/library/system.speech.synthesis.speechsynthesizer.volume(v=vs.110).aspx - SpeechSynthesizer.Voice
Property
http://msdn.microsoft.com/de-de/library/system.speech.synthesis.speechsynthesizer.voice(v=vs.110).aspx
Auf meinen Windows 7 Desktop war aber auch nur "Microsoft Anna" installiert
- Microsoft Anna - The new TTS
voice in Vista
http://blogs.msdn.com/b/robch/archive/2006/08/29/730032.aspx
Weitere TTS-Engines addieren
Es gibt aber durchaus weitere Text to Speech (TTS)-Engines. Über die Systemsteuerung können Sie diese einsehen und auch erweitern. Interessanterweise ist das entsprechende Icon im ControlPanel nicht sichtbar. Sie können es aber direkt aufrufen
C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl
Allerdings hat Microsoft nur eine TTS-Engine bei Windows 7 mitgeliefert. Auf einem Windows 2012 Server mit Lync sind es schon drei Stimmen:
Weitere TTS-Engines können Sie von Drittherstellern erwerben. für erste PowerShell-Experimente ist aber auch Anna schon ganz nützlich.
Weitere Links
-
SpeechSynthesizer.GetInstalledVoices
Method (CultureInfo)
http://msdn.microsoft.com/de-de/library/ms586870(v=vs.110).aspx - Microsoft text-to-speech
voices
http://en.wikipedia.org/wiki/Microsoft_text-to-speech_voices - Microsoft Speech Platform
http://msdn.microsoft.com/en-us/library/hh361572.aspx - Interactive Loquendo TTS
Demo
http://www.nuance.com/for-business/by-solution/customer-service-solutions/solutions-services/inbound-solutions/loquendo-small-business-bundle/interactive-tts-demo/index.htm - Hans und Marlene
www.ivona.com
http://www.ivona.com/us/products/voice-windows-22khz-de_de_hans/
http://www.ivona.com/us/products/voice-windows-22khz-de_de_marlene/ - Friday Fun: Read Me a Story
http://jdhitsolutions.com/blog/2014/08/friday-fun-read-me-a-story/