Con il .NET Framework 3.0 è stato introdotto il supporto alla sintesi vocale (Text-To-Speech) tramite l'oggetto SpeechSynthesizer.
Con poche istruzioni è possibile fare in modo che il PC comunichi con noi tramite dei messaggi vocali, il tutto semplicemente passando una stringa con del testo al metodo Speak.

Ecco il classico "ciao mondo" relizzato in [tag=PowerShell[/tag] (ricordati di alzare il volume)
PowerShell
#importo l'assembly che contiene il supporto allo Text-To-Speech
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Speech")
#creo l'oggetto SpeechSynthesizer e lo salvo in una variabile
$voice = New-Object System.Speech.Synthesis.SpeechSynthesizer
#gli faccio pronunciare la frase tramite il metodo Speak
$voice.Speak("ciao mondo")
purtroppo il supporto è solo per la lingua inglese, quindi la pronuncia italiana non è il massimo.

Possiamo anche salvare il testo pronunciato come file Wave:
PowerShell
$voice.SetOutputToWaveFile("c:\mondo.wav")
$voice.Speak("ciao mondo")
#liberiamo le risorse (senza questo il file risulta in uso)
$voice.Dispose()

e se vogliamo farlo parlare un po' più lentamente usiamo la proprietà Rate:
PowerShell
$voice = New-Object System.Speech.Synthesis.SpeechSynthesizer
$voice.Rate = -5
$voice.Speak("ciao mondo")

oppure facciamoci leggere l'Help di un comando in modo asincrono
PowerShell
$voice = New-Object System.Speech.Synthesis.SpeechSynthesizer
$txt = Get-Help Get-Command -Full
#possiamo anche leggere da un file
#$txt = Get-Content C:\readme.txt
$voice.SpeakAsync($txt)
inizierà a leggere il contenuto di $txt restituendoci subito il controllo, lo possiamo fermare con:
PowerShell
$voice.SpeakAsyncCancelAll()
Potrebbe interessarti anche: