# 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
}
