<# .SYNOPSIS speak-english.ps1 [] .DESCRIPTION Speaks the given text with an English text-to-speech (TTS) voice .EXAMPLE PS> .\speak-english.ps1 "Hello World" .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz / License: CC0 #> param([string]$Text = "") try { if ("$Text" -eq "") { $Text = read-host "Enter the text to speak" } $Voice = new-object -ComObject SAPI.SPVoice $Voices = $Voice.GetVoices() foreach ($OtherVoice in $Voices) { $Description = $OtherVoice.GetDescription() if ($Description -notlike "*- English*") { continue } # write-progress "$Text" $Voice.Voice = $OtherVoice [void]$Voice.Speak($Text) # write-progress -complete "$Text" exit 0 } write-error "Sorry, no English text-to-speech (TTS) voice found" exit 1 } catch { write-error "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" exit 1 }