
powershell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
C:\tts\instal·la-veus-onecore.ps1
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 }