Public/Out-Speech.ps1
<# todo Test Out-Speech -TextToSpeech 'Zwölf laxe Typen qualmen verdächtig süße Objekte.' -VoiceSpeed +2 -Volume 80 Out-Speech Out-Speech -TextToSpeech 'Zwölf laxe Typen qualmen verdächtig süße Objekte.' -VoiceSpeed 200 -Volume 70 Out-Speech -TextToSpeech 'Zwölf laxe Typen qualmen verdächtig süße Objekte.' -VoiceSpeed zwei -Volume 70 Get-Command Out-Speech -Syntax Get-Help -Name Out-Speech -ShowWindow 'Franz jagt im komplett verwahrlosten Taxi quer durch Bayern', 'Bei jedem klugen Wort von Sokrates rief Xanthippe zynisch: Quatsch!' | Out-Speech Get-ChildItem c:\temp -File | Out-Speech #> function Out-Speech { <# .SYNOPSIS Text zu Sprach-Ausgabe. .DESCRIPTION Wandelt String-Objekte in Sprachausgabe um. .PARAMETER TextToSpeech Das String String-Objekt das in eine Sprachausgabe umgewandelt werden soll. .PARAMETER VoiceSpeed Geschwindigkeit der Sprachausgabe von -10 bis 10. .PARAMETER Volume Lautstärke der Sprachausgaben von 0 bis 100 .EXAMPLE Get-Command -Name Out-Speech -Syntax Get-Help -Name Out-Speech -ShowWindow Cmdlet verstehen. .EXAMPLE Out-Speech -TextToSpeech 'Zwölf laxe Typen qualmen verdächtig süße Objekte.' Beschreibung des Beispiels.... .EXAMPLE Out-Speech -TextToSpeech 'Zwölf laxe Typen qualmen verdächtig süße Objekte.' -VoiceSpeed +2 -Volume 80 Beschreibung des Beispiels.... #> param( [Parameter(Mandatory, ValueFromPipeline)] [string]$TextToSpeech, [ValidateRange(-10,10)] [int]$VoiceSpeed = 0, [ValidateRange(0,100)] [int]$Volume = 100 ) begin { Add-Type -AssemblyName System.Speech # TODO Evtl. wird das akt. immer geladen $Speaker = New-Object -TypeName 'System.Speech.Synthesis.SpeechSynthesizer' $Speaker.Rate = $VoiceSpeed $Speaker.Volume = $Volume } process { $Speaker.Speak($TextToSpeech) } end { Remove-Variable -Name Speaker -Force -ErrorAction Ignore } } |