{"id":16497,"date":"2025-07-03T18:24:18","date_gmt":"2025-07-03T16:24:18","guid":{"rendered":"https:\/\/www.beseit.net\/?p=16497"},"modified":"2025-07-04T10:02:41","modified_gmt":"2025-07-04T08:02:41","slug":"python-i-veus","status":"publish","type":"post","link":"http:\/\/www.beseit.net\/?p=16497","title":{"rendered":"python i veus"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Requisits:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tener instal\u00b7lat Python.<\/li>\n\n\n\n<li>Instal\u00b7lar la llibreria <code>pyttsx3<\/code>:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install pyttsx3<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>pip install pyttsx3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PS C:\\WINDOWS\\system32&gt; <strong>python -V<\/strong>\nPython 3.13.5\nPS C:\\WINDOWS\\system32&gt;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>import pyttsx3\n\ndef llistar_veus():\n    engine = pyttsx3.init()\n    voices = engine.getProperty('voices')\n    \n    for idx, voice in enumerate(voices):\n        print(f\"Veu {idx + 1}:\")\n        print(f\"  ID: {voice.id}\")\n        print(f\"  Nom: {voice.name}\")\n        print(f\"  Llengua: {voice.languages}\")\n        print(f\"  G\u00e8nere: {voice.gender}\")\n        print()\n\nif __name__ == \"__main__\":\n    llistar_veus()\n<\/code><\/pre>\n\n\n\n<p>Aquest script es pot llan\u00e7ar des de powerShell<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#e41919\" class=\"has-inline-color\">python c:\\python\\llista_veus.py<\/mark><\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#e41919\" class=\"has-inline-color\">python s:\\python\\llista_veus.py<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"923\" height=\"547\" src=\"https:\/\/www.beseit.net\/wp-content\/uploads\/2025\/07\/image-1.png\" alt=\"\" class=\"wp-image-16498\" srcset=\"http:\/\/www.beseit.net\/wp-content\/uploads\/2025\/07\/image-1.png 923w, http:\/\/www.beseit.net\/wp-content\/uploads\/2025\/07\/image-1-300x178.png 300w, http:\/\/www.beseit.net\/wp-content\/uploads\/2025\/07\/image-1-768x455.png 768w, http:\/\/www.beseit.net\/wp-content\/uploads\/2025\/07\/image-1-500x296.png 500w\" sizes=\"auto, (max-width: 923px) 100vw, 923px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>si volem afegir les OneCore<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#e41919\" class=\"has-inline-color\">python c:\\python\\llista_veus_onecore.py<\/mark><\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#e41919\" class=\"has-inline-color\">python s:\\python\\llista_veus_onecore.py<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"925\" height=\"579\" src=\"https:\/\/www.beseit.net\/wp-content\/uploads\/2025\/07\/image-2.png\" alt=\"\" class=\"wp-image-16499\" srcset=\"http:\/\/www.beseit.net\/wp-content\/uploads\/2025\/07\/image-2.png 925w, http:\/\/www.beseit.net\/wp-content\/uploads\/2025\/07\/image-2-300x188.png 300w, http:\/\/www.beseit.net\/wp-content\/uploads\/2025\/07\/image-2-768x481.png 768w, http:\/\/www.beseit.net\/wp-content\/uploads\/2025\/07\/image-2-479x300.png 479w\" sizes=\"auto, (max-width: 925px) 100vw, 925px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#e41919\" class=\"has-inline-color\">python c:\\python\\llista_veus_onecore.py<\/mark><\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#e41919\" class=\"has-inline-color\">python s:\\python\\llista_veus_onecore.py<\/mark><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pyttsx3\nimport winreg\n\ndef llistar_veus_sapi():\n    print(\"?\ufe0f Veus SAPI instal\u00b7lades:\\n\")\n    engine = pyttsx3.init()\n    voices = engine.getProperty('voices')\n    for idx, voice in enumerate(voices):\n        print(f\"Veu {idx + 1}:\")\n        print(f\"  ID: {voice.id}\")\n        print(f\"  Nom: {voice.name}\")\n        print(f\"  Llengua: {voice.languages}\")\n        print(f\"  G\u00e8nere: {voice.gender}\")\n        print()\n\ndef obtenir_nom_veu_onecore(subkey):\n    for value_name in &#91;\"\", \"Name\", \"DisplayName\", \"Attributes\"]:\n        try:\n            val = winreg.QueryValueEx(subkey, value_name)&#91;0]\n            if isinstance(val, str) and val.strip():\n                return val.strip()\n        except FileNotFoundError:\n            continue\n    return \"Desconegut\"\n\ndef llistar_veus_onecore():\n    base_key = r\"SOFTWARE\\Microsoft\\Speech_OneCore\\Voices\\Tokens\"\n    try:\n        with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, base_key) as key:\n            print(\"?\ufe0f Veus OneCore disponibles:\\n\")\n            for i in range(winreg.QueryInfoKey(key)&#91;0]):\n                subkey_name = winreg.EnumKey(key, i)\n                with winreg.OpenKey(key, subkey_name) as subkey:\n                    nom = obtenir_nom_veu_onecore(subkey)\n                    print(f\"ID: {subkey_name}\")\n                    print(f\"Nom: {nom}\\n\")\n    except FileNotFoundError:\n        print(\"No s'ha trobat la clau de registre per a les veus OneCore. Assegura't que est\u00e0s a Windows 11.\")\n\nif __name__ == \"__main__\":\n    llistar_veus_sapi()\n    llistar_veus_onecore()\n\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ed0d0d\" class=\"has-inline-color\">python c:\\python\\veus_sapi_onecore.py<\/mark><\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ed0d0d\" class=\"has-inline-color\">python s:\\python\\veus_sapi_onecore.py<\/mark><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pyttsx3\nimport winreg\n\ndef llistar_veus_sapi():\n    print(\"?\ufe0f Veus SAPI instal\u00b7lades:\\n\")\n    engine = pyttsx3.init()\n    voices = engine.getProperty('voices')\n    for idx, voice in enumerate(voices):\n        print(f\"Veu {idx + 1}:\")\n        print(f\"  ID: {voice.id}\")\n        print(f\"  Nom: {voice.name}\")\n        print(f\"  Llengua: {voice.languages}\")\n        print(f\"  G\u00e8nere: {voice.gender}\")\n        print()\n\ndef obtenir_nom_veu_onecore(subkey):\n    for value_name in &#91;\"\", \"Name\", \"DisplayName\", \"Attributes\"]:\n        try:\n            val = winreg.QueryValueEx(subkey, value_name)&#91;0]\n            if isinstance(val, str) and val.strip():\n                return val.strip()\n        except FileNotFoundError:\n            continue\n    return \"Desconegut\"\n\ndef llistar_veus_onecore():\n    base_key = r\"SOFTWARE\\Microsoft\\Speech_OneCore\\Voices\\Tokens\"\n    try:\n        with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, base_key) as key:\n            print(\"?\ufe0f Veus OneCore disponibles:\\n\")\n            for i in range(winreg.QueryInfoKey(key)&#91;0]):\n                subkey_name = winreg.EnumKey(key, i)\n                with winreg.OpenKey(key, subkey_name) as subkey:\n                    nom = obtenir_nom_veu_onecore(subkey)\n                    print(f\"ID: {subkey_name}\")\n                    print(f\"Nom: {nom}\\n\")\n    except FileNotFoundError:\n        print(\"No s'ha trobat la clau de registre per a les veus OneCore. Assegura't que est\u00e0s a Windows 11.\")\n\nif __name__ == \"__main__\":\n    llistar_veus_sapi()\n    llistar_veus_onecore()\n<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Requisits: pip install pyttsx3 Aquest script es pot llan\u00e7ar des de powerShell python c:\\python\\llista_veus.py python s:\\python\\llista_veus.py si volem afegir les OneCore python c:\\python\\llista_veus_onecore.py python s:\\python\\llista_veus_onecore.py python c:\\python\\llista_veus_onecore.py python s:\\python\\llista_veus_onecore.py python c:\\python\\veus_sapi_onecore.py python s:\\python\\veus_sapi_onecore.py<\/p>\n","protected":false},"author":2,"featured_media":3168,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[185],"tags":[],"class_list":["post-16497","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-veus"],"_links":{"self":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/16497","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16497"}],"version-history":[{"count":7,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/16497\/revisions"}],"predecessor-version":[{"id":16512,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/16497\/revisions\/16512"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/media\/3168"}],"wp:attachment":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16497"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}