🛠️ Script PowerShell complet i robust per instal·lar veus OneCore

Idiomes i veus que vols instal·lar

$languageTags = @(
“en-US”, # English (US)
“en-GB”, # English (UK)
“es-ES”, # Spanish (Spain)
“ca-ES”, # Catalan (Spain)
“fr-FR”, # French (France)
“de-DE” # German
)

ObtĂ© la llista actual d’idiomes

$currentLangs = Get-WinUserLanguageList | ForEach-Object { $_.LanguageTag }

foreach ($lang in $languageTags) {
Write-Host “🔄 Processant $lang…” -ForegroundColor Cyan
try {
# Afegeix l’idioma si no hi Ă©s
if (-not ($currentLangs -contains $lang)) {
Write-Host “âž• Afegint idioma $lang…”
$langList = Get-WinUserLanguageList
$langList.Add($lang)
Set-WinUserLanguageList $langList -Force
} else {
Write-Host “✔️ L’idioma $lang ja estĂ  instal·lat.”
}

    # Comprova si la veu bàsica ja està instal·lada
    $capability = "Language.$lang~Basic~~~"
    $installed = Get-WindowsCapability -Online | Where-Object { $_.Name -eq $capability }
    if ($installed.State -ne "Installed") {
        Write-Host "⬇️ Instal·lant veu bàsica per a $lang..."
        Add-WindowsCapability -Online -Name $capability -ErrorAction Stop
    } else {
        Write-Host "✔️ Veu bàsica ja instal·lada per a $lang."
    }

    # Instal·la reconeixement de veu si no hi és
    $speechCap = "Language.$lang~Speech~~~"
    $speechInstalled = Get-WindowsCapability -Online | Where-Object { $_.Name -eq $speechCap }
    if ($speechInstalled.State -ne "Installed") {
        Write-Host "🎙️ Instal·lant reconeixement de veu per a $lang..."
        Add-WindowsCapability -Online -Name $speechCap -ErrorAction SilentlyContinue
    } else {
        Write-Host "✔️ Reconeixement de veu ja instal·lat per a $lang."
    }

} catch {
   Write-Warning ("Error instal·lant per a $lang: " + $_.Exception.Message)

}

}

Mostra les veus disponibles al final

Write-Host “`nđź“‹ Veus SAPI instal·lades:” -ForegroundColor Yellow
Add-Type -AssemblyName System.Speech
(New-Object System.Speech.Synthesis.SpeechSynthesizer).GetInstalledVoices() |
ForEach-Object { “• ” + $_.VoiceInfo.Name }