{"id":19243,"date":"2026-09-28T12:18:07","date_gmt":"2026-09-28T10:18:07","guid":{"rendered":"https:\/\/www.beseit.net\/?p=19243"},"modified":"2026-10-01T08:22:58","modified_gmt":"2026-10-01T06:22:58","slug":"proves-de-veu-amb-python","status":"publish","type":"post","link":"https:\/\/www.beseit.net\/?p=19243","title":{"rendered":"Proves de veu amb Python"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Prova 1 <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ens situem sobre la carpeta on s&#8217;ha creat l&#8217;espai virtual TTSW i executem el fitxer de prova.txt amb el text carregat pr\u00e8viament i executem l&#8217;escript tts.py que dona com sortida prova.mp3. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/volume1\/web\/ttsw\/python3 tts.py prova.txt prova.mp3 <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/volume1\/web\/ttsw\/venv\/bin\/python3 tts.py prova.txt prova.mp3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\/volume1\/web\/ttsw\/venv\/bin\/python3 tts.py prova.txt prova.mp3<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">o<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/volume2\/web\/ttsw\/venv\/bin\/python3 tts.py prova.txt prova.mp3<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"441\" height=\"518\" src=\"https:\/\/www.beseit.net\/wp-content\/uploads\/2026\/09\/imatge-3.png\" alt=\"\" class=\"wp-image-19244\" srcset=\"https:\/\/www.beseit.net\/wp-content\/uploads\/2026\/09\/imatge-3.png 441w, https:\/\/www.beseit.net\/wp-content\/uploads\/2026\/09\/imatge-3-255x300.png 255w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">(venv) urqtejmi@synology_vall:\/volume2\/web\/polidic$ python3.12 &#8211;version Python 3.12.13 (venv) urqtejmi@synology_vall:\/volume2\/web\/polidic$ \/\/ voldria fer una prova de veu amb ttsg-cli pel terminal<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed. I una petita correcci\u00f3: crec que et refereixes a <strong><code>gtts-cli<\/code><\/strong>, la l\u00ednia de comandes de <strong>gTTS<\/strong>, no <code>ttsg-cli<\/code>. <code>gtts-cli<\/code> permet generar un MP3 directament des del terminal i indicar l&#8217;idioma.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com que ara tens el <code>venv<\/code> actiu i Python <strong>3.12.13<\/strong>, jo faria la prova pas a pas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Comprovar que estem dins del Python 3.12<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python3 --version\nwhich python3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hauria de donar:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Python 3.12.13\n\/volume2\/web\/polidic\/venv\/bin\/python3<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Instal\u00b7lar gTTS dins d&#8217;aquest <code>venv<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python3 -m pip install gTTS<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aix\u00f2 instal\u00b7lar\u00e0 gTTS <strong>dins de <code>\/volume2\/web\/polidic\/venv<\/code><\/strong>, no al Python del sistema. La documentaci\u00f3 oficial indica <code>pip install gTTS<\/code> com a instal\u00b7laci\u00f3.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Comprovar <code>gtts-cli<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">which gtts-cli<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hauria de sortir:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/volume2\/web\/polidic\/venv\/bin\/gtts-cli<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gtts-cli --version<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. Primera prova en catal\u00e0<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gtts-cli \"Hola, s\u00f3c el Synology i estic parlant amb Python 3.12.\" --lang ca --output prova_ca.mp3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si tot va b\u00e9:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ls -lh prova_ca.mp3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">haur\u00e0s de tenir el fitxer MP3.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. I podem provar angl\u00e8s<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gtts-cli \"Hello, this is a test of Python 3.12.\" --lang en --output prova_en.mp3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I castell\u00e0:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gtts-cli \"Hola, esta es una prueba de voz.\" --lang es --output prova_es.mp3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>gtts-cli<\/code> admet <code>--lang<\/code> i <code>--output<\/code> precisament per aix\u00f2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Jo faria ara nom\u00e9s els passos 1 i 2<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python3 --version\nwhich python3\npython3 -m pip install gTTS<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Passa&#8217;m la sortida i despr\u00e9s comprovarem que <strong><code>gtts-cli<\/code> est\u00e0 realment dins del <code>venv<\/code><\/strong> abans de generar cap veu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed. I una petita correcci\u00f3: crec que et refereixes a <strong><code>gtts-cli<\/code><\/strong>, la l\u00ednia de comandes de <strong>gTTS<\/strong>, no <code>ttsg-cli<\/code>. <code>gtts-cli<\/code> permet generar un MP3 directament des del terminal i indicar l&#8217;idioma. (<a href=\"https:\/\/gtts.readthedocs.io\/en\/latest\/cli.html?utm_source=chatgpt.com\">gTTS<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com que ara tens el <code>venv<\/code> actiu i Python <strong>3.12.13<\/strong>, jo faria la prova pas a pas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Comprovar que estem dins del Python 3.12<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python3 --version\nwhich python3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hauria de donar:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Python 3.12.13\n\/volume2\/web\/polidic\/venv\/bin\/python3<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Instal\u00b7lar gTTS dins d&#8217;aquest <code>venv<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python3 -m pip install gTTS<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aix\u00f2 instal\u00b7lar\u00e0 gTTS <strong>dins de <code>\/volume2\/web\/polidic\/venv<\/code><\/strong>, no al Python del sistema. La documentaci\u00f3 oficial indica <code>pip install gTTS<\/code> com a instal\u00b7laci\u00f3. (<a href=\"https:\/\/gtts.readthedocs.io\/?utm_source=chatgpt.com\">gTTS<\/a>)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Comprovar <code>gtts-cli<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">which gtts-cli<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hauria de sortir:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/volume2\/web\/polidic\/venv\/bin\/gtts-cli<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gtts-cli --version<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. Primera prova en catal\u00e0<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gtts-cli \"Hola, s\u00f3c el Synology i estic parlant amb Python 3.12.\" --lang ca --output prova_ca.mp3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si tot va b\u00e9:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ls -lh prova_ca.mp3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">haur\u00e0s de tenir el fitxer MP3.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. I podem provar angl\u00e8s<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gtts-cli \"Hello, this is a test of Python 3.12.\" --lang en --output prova_en.mp3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I castell\u00e0:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gtts-cli \"Hola, esta es una prueba de voz.\" --lang es --output prova_es.mp3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>gtts-cli<\/code> admet <code>--lang<\/code> i <code>--output<\/code> precisament per aix\u00f2. (<a href=\"https:\/\/gtts.readthedocs.io\/en\/latest\/cli.html?utm_source=chatgpt.com\">gTTS<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Jo faria ara nom\u00e9s els passos 1 i 2<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python3 --version\nwhich python3\npython3 -m pip install gTTS<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Passa&#8217;m la sortida i despr\u00e9s comprovarem que <strong><code>gtts-cli<\/code> est\u00e0 realment dins del <code>venv<\/code><\/strong> abans de generar cap veu.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prova 1 Ens situem sobre la carpeta on s&#8217;ha creat l&#8217;espai virtual TTSW i executem el fitxer de prova.txt amb el text carregat pr\u00e8viament i executem l&#8217;escript tts.py que dona com sortida prova.mp3. \/volume1\/web\/ttsw\/python3 tts.py prova.txt prova.mp3 \/volume1\/web\/ttsw\/venv\/bin\/python3 tts.py prova.txt &hellip; <a href=\"https:\/\/www.beseit.net\/?p=19243\">Continua llegint <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":3167,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,140],"tags":[],"class_list":["post-19243","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloc-de-notes","category-synology"],"_links":{"self":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/19243","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=19243"}],"version-history":[{"count":8,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/19243\/revisions"}],"predecessor-version":[{"id":19266,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/19243\/revisions\/19266"}],"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=19243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}