# Check if the System.Speech assembly is available try { Add-Type -AssemblyName System.Speech } catch { Write-Error "Windows Text-to-Speech (SAPI5) is not installed or not available. Please ensure you have Windows 10/11 with the latest updates." exit 1 } # Create a SpeechSynthesizer instance $synth = New-Object System.Speech.Synthesis.SpeechSynthesizer # Check if the synthesizer can retrieve voices try { # Get the list of available voices #$voices = $synth.GetVoices() $voices = $synth.GetInstalledVoices()|ForEach-Object { $_.VoiceInfo } if ($voices.Count -eq 0) { Write-Host "No TTS voices available." -ForegroundColor Yellow } else { Write-Host "Available TTS Voices:" -ForegroundColor Green Write-Host "------------------------" -ForegroundColor Green foreach ($voice in $voices) { $voiceName = $voice.Name $voiceInfo = $voice.Info $language = $voiceInfo.Language $displayName = $voiceInfo.DisplayName $gender = $voiceInfo.Gender Write-Host $voice.name Write-Host "Name: $voiceName" -ForegroundColor White Write-Host " Language: $language" -ForegroundColor Gray Write-Host " Display Name: $displayName" -ForegroundColor Cyan Write-Host " Gender: $gender" -ForegroundColor Magenta Write-Host "------------------------" -ForegroundColor Green } } } catch { Write-Error "Error retrieving voices: $_" exit 1 }