{"id":19068,"date":"2026-09-14T12:29:32","date_gmt":"2026-09-14T10:29:32","guid":{"rendered":"https:\/\/www.beseit.net\/?p=19068"},"modified":"2026-09-14T12:50:28","modified_gmt":"2026-09-14T10:50:28","slug":"aaa","status":"publish","type":"post","link":"https:\/\/www.beseit.net\/?p=19068","title":{"rendered":"Activar Piper dins Speech-dispatcher"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Miquel@Miquel-PC:~$ docker exec piper bash -c \u00abecho \\\u00bbHola, soc l&#8217;Ona, la meva veu s&#8217;ha desenvolupat a la UPC de Barcelona.\\\u00bb | piper &#8211;model \/config\/ca_ES-upc_ona-<em>medium.onnx &#8211;output_file -\u00bb | aplay -f S16_LE -r 22050 -c 1<br>Playing WAVE &#8216;stdin&#8217; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono<br>Playing WAVE &#8216;stdin&#8217; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono<br>Playing: no se encontr\u00f3 la orden<br>Miquel@Miquel-PC:~$ tinc aquests sevidor local tts funcionant correctament. El model de Piper (<code>ca_ES-upc_ona-medium.onnx<\/code>) est\u00e0 dins Docker, i speech\u2011dispatcher <strong>no el pot carregar<\/strong>. podriem posar em model a \/etc\/speech-dispatcher\/modules\/piper-generic.conf (per qu\u00e8 pugui funcionar AddModule \u00abpiper\u00bb \u00absd_generic\u00bb \u00ab\/etc\/speech-dispatcher\/modules\/piper-generic.conf de speech-dispatcher? PER\u00d2 QUE SEGUEIXI FUNCIONAT EL SERVIDOR LOCAL 127.0.0.1<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ee1b1b\" class=\"has-inline-color\"><strong>Resposta:<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed. I <strong>no cal tocar ni aturar el servidor Docker que ja funciona a <code>127.0.0.1<\/code><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per\u00f2 hi ha un punt important: <strong>no hem de posar el fitxer <code>.onnx<\/code> dins de <code>piper-generic.conf<\/code><\/strong>. Aquest fitxer \u00e9s de configuraci\u00f3 de Speech Dispatcher. El que farem \u00e9s que el m\u00f2dul <code>piper<\/code> de Speech Dispatcher <strong>executi el Piper que tens dins del contenidor Docker<\/strong> o, encara millor, que tingui acc\u00e9s al mateix model.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com que ara mateix ja tens:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>model: <code>ca_ES-upc_ona-medium.onnx<\/code><\/li>\n\n\n\n<li>Piper funcionant dins Docker<\/li>\n\n\n\n<li>servidor local independent a <code>127.0.0.1<\/code><\/li>\n\n\n\n<li>i vols conservar-lo intacte<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">jo faria <strong>la soluci\u00f3 m\u00e9s neta: compartir el model amb Speech Dispatcher sense tocar el servidor HTTP<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Primer comprovem exactament on \u00e9s el model<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Executa:<\/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 ~\/tts-server\/ca_ES-upc_ona-medium.onnx\nls -lh ~\/tts-server\/ca_ES-upc_ona-medium.onnx.json<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I tamb\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=\"\">docker exec piper ls -lh \/config\/ca_ES-upc_ona-medium.onnx<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si les tres ordres mostren el model, ja tenim confirmat que el model del Docker \u00e9s accessible tamb\u00e9 des de l&#8217;amfitri\u00f3.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. No modifiquis encara <code>piper-generic.conf<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Abans de tocar <code>\/etc\/speech-dispatcher\/modules\/<\/code>, vull comprovar <strong>quin Piper executable tenim disponible fora del Docker<\/strong>, perqu\u00e8 aqu\u00ed tenim dues possibilitats:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A.<\/strong> Fer que Speech Dispatcher executi directament el Piper local:<\/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=\"\">Speech Dispatcher \u2192 Piper local \u2192 Ona<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>B.<\/strong> Fer que Speech Dispatcher envi\u00ef el text al Piper del Docker:<\/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=\"\">Speech Dispatcher \u2192 Docker Piper \u2192 Ona<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La <strong>B<\/strong> \u00e9s especialment interessant en el teu cas perqu\u00e8 el servidor Docker ja funciona i aix\u00ed <strong>no dupliquem el motor Piper<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I sobretot: el teu servidor HTTP <code>127.0.0.1<\/code> continuar\u00e0 funcionant independentment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per tant, <strong>no facis encara cap <code>mount -o remount,rw \/usr<\/code> ni modifiquis <code>\/usr<\/code><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Passa&#8217;m nom\u00e9s la sortida d&#8217;aquestes 3 ordres:<\/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 ~\/tts-server\/ca_ES-upc_ona-medium.onnx*\ndocker exec piper ls -lh \/config\/ca_ES-upc_ona-medium.onnx*\ndocker exec piper which piper<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Amb aix\u00f2 et preparo el <mark style=\"background-color:rgba(0, 0, 0, 0);color:#f70808\" class=\"has-inline-color\"><code>piper-generic.conf<\/code> <\/mark>exacte perqu\u00e8 <strong>Firefox \u2192 Speech Dispatcher \u2192 Ona<\/strong>, mantenint alhora el teu <strong>servidor TTS <code>127.0.0.1<\/code> intacte<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exacte. Aix\u00f2 ens aclareix el problema: <strong>el model no \u00e9s a l&#8217;amfitri\u00f3<\/strong>, nom\u00e9s \u00e9s visible dins del contenidor Docker. Per aix\u00f2 Speech Dispatcher no el pot carregar directament.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I aix\u00f2 <strong>no afecta el servidor <code>127.0.0.1<\/code> que ja tens funcionant<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ara no copiaria ni mouria res encara. Primer localitzem el model real dins Docker i veiem com est\u00e0 muntat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Executa aquestes dues ordres:<\/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=\"\">docker exec piper ls -lh \/config<\/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=\"\">docker inspect piper --format '{{range .Mounts}}{{println .Source \"->\" .Destination}}{{end}}'<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La segona ja ens havia indicat anteriorment <code>\/home\/Miquel\/tts-server -&gt; \/config<\/code>, per\u00f2 el fet que el fitxer no existeixi a l&#8217;amfitri\u00f3 \u00e9s important: <strong>pot ser que Docker estigui utilitzant un volum o que el model s&#8217;hagi descarregat dins del contenidor<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">El que volem aconseguir<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La configuraci\u00f3 final pot quedar aix\u00ed:<\/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=\"\">Firefox\n   \u2193\nSpeech Dispatcher\n   \u2193\nm\u00f2dul piper\n   \u2193\nPiper + ca_ES-upc_ona-medium\n   \u2193\n\u00e0udio Ona<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">i, paral\u00b7lelament:<\/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=\"\">127.0.0.1:10200\n        \u2193\n   Docker Piper\n        \u2193\n      Ona<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>No volem substituir ni trencar el segon cam\u00ed.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Envia&#8217;m la sortida de:<\/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=\"\">docker exec piper ls -lh \/config<\/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=\"\">docker inspect piper --format '{{range .Mounts}}{{println .Source \"->\" .Destination}}{{end}}'<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">i a partir d&#8217;aix\u00f2 et dic exactament on posar el model i com fer el <code>piper-generic.conf<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Perfecte. Ara ja tenim la dada clau: <strong>Ona \u00e9s dins de <code>\/config<\/code> del contenidor<\/strong>, juntament amb Pau i <code>voices.json<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#f51414\" class=\"has-inline-color\">*****<\/mark><\/strong> <mark style=\"background-color:rgba(0, 0, 0, 0);color:#fa2929\" class=\"has-inline-color\">Per tant, <strong>no cal posar el model dins de <code>piper-generic.conf<\/code><\/strong>. El que hem de fer \u00e9s donar a Speech Dispatcher una manera d&#8217;executar Piper amb aquest model.<\/mark><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">I podem fer-ho <strong>sense tocar el servidor TTS que ja tens funcionant<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La soluci\u00f3 que et proposo \u00e9s aquesta:<\/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=\"\">Firefox\n   \u2193\nSpeech Dispatcher\n   \u2193\npiper-generic\n   \u2193\ndocker exec piper piper --model \/config\/ca_ES-upc_ona-medium.onnx\n   \u2193\nOna<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I al mateix temps continuar\u00e0 existint:<\/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=\"\">127.0.0.1:10200\n   \u2193\nDocker Piper\n   \u2193\nOna<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9s a dir, <strong>dos usos independents del mateix contenidor\/model<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Per\u00f2 abans de modificar res<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Necessito confirmar una sola cosa: que el contenidor t\u00e9 l&#8217;executable <code>piper<\/code> accessible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Executa:<\/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=\"\">docker exec piper which piper<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">i tamb\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=\"\">docker exec piper piper --version<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si funcionen, et preparar\u00e9 el contingut exacte de:<\/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=\"\">\/etc\/speech-dispatcher\/modules\/piper-generic.conf<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">i l&#8217;entrada:<\/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=\"\">AddModule \"piper\" \"sd_generic\" \"\/etc\/speech-dispatcher\/modules\/piper-generic.conf\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>No modificarem <code>\/usr<\/code><\/strong>, no aturarem el contenidor i no tocarem el servidor <code>127.0.0.1<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Perfecte. Aix\u00f2 confirma que <strong>Piper est\u00e0 instal\u00b7lat dins del contenidor<\/strong> a:<\/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=\"\">\/lsiopy\/bin\/piper<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Per tant, podem fer que Speech Dispatcher utilitzi <strong>el mateix Piper i el mateix model Ona del Docker<\/strong>, sense copiar el model a l&#8217;host.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per\u00f2 hi ha una q\u00fcesti\u00f3 important: el <code>sd_generic<\/code> normalment executa una ordre de l&#8217;host, i <code>docker exec<\/code> necessita executar-se des de l&#8217;host. Per tant, el nostre <code>piper-generic.conf<\/code> haur\u00e0 de cridar:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark>*****<\/mark><\/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=\"\">docker exec piper \/lsiopy\/bin\/piper ...<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Fem primer una prova manual<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aix\u00f2 \u00e9s segur i <strong>no modifica res<\/strong>. Executa:<\/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=\"\">echo \"Hola, soc l'Ona. Aquesta \u00e9s una prova des de Speech Dispatcher.\" | \\\ndocker exec -i piper \/lsiopy\/bin\/piper \\\n--model \/config\/ca_ES-upc_ona-medium.onnx \\\n--output_raw | \\\naplay -f S16_LE -r 22050 -c 1<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aquesta prova \u00e9s millor que l&#8217;anterior perqu\u00e8 utilitza <code>-i<\/code> en <code>docker exec<\/code>, que \u00e9s necessari perqu\u00e8 Docker rebi el text que li passem per stdin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si sona <strong>Ona<\/strong>, ja tenim confirmat tot el cam\u00ed:<\/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=\"\">stdin\n  \u2193\ndocker exec\n  \u2193\nPiper \/config\/ca_ES-upc_ona-medium.onnx\n  \u2193\nPCM 22050 Hz\n  \u2193\naplay<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despr\u00e9s d&#8217;aix\u00f2 et donar\u00e9 el <code>piper-generic.conf<\/code> complet perqu\u00e8 puguem fer:<\/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=\"\">Firefox\n   \u2193\nSpeech Dispatcher\n   \u2193\nsd_generic\n   \u2193\ndocker exec piper\n   \u2193\nOna<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">i <strong>el servidor TTS de <code>127.0.0.1<\/code> continuar\u00e0 funcionant exactament com ara<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Miquel@Miquel-PC:~$ docker exec piper bash -c \u00abecho \\\u00bbHola, soc l&#8217;Ona, la meva veu s&#8217;ha desenvolupat a la UPC de Barcelona.\\\u00bb | piper &#8211;model \/config\/ca_ES-upc_ona-medium.onnx &#8211;output_file -\u00bb | aplay -f S16_LE -r 22050 -c 1Playing WAVE &#8216;stdin&#8217; : Signed 16 bit &hellip; <a href=\"https:\/\/www.beseit.net\/?p=19068\">Continua llegint <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-19068","post","type-post","status-publish","format-standard","hentry","category-bloc-de-notes"],"_links":{"self":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/19068","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=19068"}],"version-history":[{"count":8,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/19068\/revisions"}],"predecessor-version":[{"id":19079,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/19068\/revisions\/19079"}],"wp:attachment":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}