{"id":16807,"date":"2025-10-06T12:00:02","date_gmt":"2025-10-06T10:00:02","guid":{"rendered":"https:\/\/www.beseit.net\/?p=16807"},"modified":"2025-10-06T17:42:10","modified_gmt":"2025-10-06T15:42:10","slug":"script-powershell-test-de-veu-amb-entrada-personalitzada","status":"publish","type":"post","link":"https:\/\/www.beseit.net\/?p=16807","title":{"rendered":"Script PowerShell: Test de veu amb entrada personalitzada"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code><\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Script:<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code># Crear l'objecte de s\u00edntesi de veu\n$speak = New-Object -ComObject SAPI.SpVoice\n\n# Mostrar les veus disponibles\nWrite-Host \"Veus disponibles:\"\n$voices = $speak.GetVoices()\nfor ($i = 0; $i -lt $voices.Count; $i++) {\n    Write-Host \"$i - \" $voices.Item($i).GetDescription()\n}\n\n# Seleccionar veu\n$index = Read-Host \"Introdueix el n\u00famero de la veu que vols utilitzar\"\n$speak.Voice = $voices.Item($index)\n\n# Entrada de text\n$entrada = Read-Host \"Introdueix el text que vols escoltar\"\n\n# Reproduir el text\n$speak.Speak($entrada)\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">?\ufe0f <strong>Com executar-lo<\/strong><\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Obre <strong>PowerShell<\/strong> com a administrador.<\/li>\n\n\n\n<li>Enganxa el codi anterior.<\/li>\n\n\n\n<li>Se&#8217;t mostrar\u00e0 la llista de veus disponibles.<\/li>\n\n\n\n<li>Introdueix el n\u00famero corresponent a la veu que vols provar.<\/li>\n\n\n\n<li>Escriu el text que vols que es llegeixi.<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aquest script accedeix a les <strong>veus SAPI<\/strong>, com <em>Microsoft David Desktop<\/em>, <em>Zira Desktop<\/em>, etc.<\/li>\n\n\n\n<li>Les veus <strong>Neural<\/strong> del Narrador (com <em>JennyNeural<\/em>, <em>HelenaNeural<\/em>) no s\u00f3n accessibles amb aquest m\u00e8tode directe. Si vols, et puc preparar una versi\u00f3 amb <strong>WinRT<\/strong> per accedir a les veus OneCore.<\/li>\n<\/ul>\n\n\n\n<p>Amb les veus del narrador:<\/p>\n\n\n\n<p>Vols que et generi tamb\u00e9 la versi\u00f3 avan\u00e7ada amb WinRT per accedir a les veus del Narrador?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Requereix Windows 10\/11 i PowerShell 5.x o superior\n\nAdd-Type -AssemblyName System.Runtime.WindowsRuntime\n$SynthType = &#91;Windows.Media.SpeechSynthesis.SpeechSynthesizer]\n$Synth = New-Object $SynthType\n\n# Llistar veus disponibles\n$voices = $Synth.AllVoices\nWrite-Host \"Veus OneCore disponibles:\"\nfor ($i = 0; $i -lt $voices.Count; $i++) {\n    $voice = $voices&#91;$i]\n    Write-Host \"$i - $($voice.DisplayName) &#91;$($voice.Language)]\"\n}\n\n# Seleccionar veu\n$index = Read-Host \"Introdueix el n\u00famero de la veu que vols utilitzar\"\n$Synth.Voice = $voices&#91;$index]\n\n# Entrada de text\n$text = Read-Host \"Introdueix el text que vols escoltar\"\n\n# Sintetitzar i reproduir\n$stream = $Synth.SynthesizeTextToStreamAsync($text).GetAwaiter().GetResult()\n$player = New-Object System.Media.SoundPlayer\n$player.Stream = $stream.AsStream()\n$player.PlaySync()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Com executar-lo<\/strong><\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Obre <strong>PowerShell com a administrador<\/strong>.<\/li>\n\n\n\n<li>Enganxa el codi anterior.<\/li>\n\n\n\n<li>Veur\u00e0s la llista de veus OneCore disponibles (amb nom i idioma).<\/li>\n\n\n\n<li>Introdueix el n\u00famero de la veu que vols provar.<\/li>\n\n\n\n<li>Escriu el text que vols escoltar.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Script: ?\ufe0f Com executar-lo Amb les veus del narrador: Vols que et generi tamb\u00e9 la versi\u00f3 avan\u00e7ada amb WinRT per accedir a les veus del Narrador? Com executar-lo<\/p>\n","protected":false},"author":2,"featured_media":3167,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[194,185,1],"tags":[],"class_list":["post-16807","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tts","category-veus","category-bloc-de-notes"],"_links":{"self":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/16807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16807"}],"version-history":[{"count":5,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/16807\/revisions"}],"predecessor-version":[{"id":16818,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/16807\/revisions\/16818"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/media\/3167"}],"wp:attachment":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}