{"id":2066,"date":"2023-01-18T21:09:00","date_gmt":"2023-01-18T20:09:00","guid":{"rendered":"https:\/\/theroamingworkshop.cloud\/b\/?p=2066"},"modified":"2023-11-19T15:29:20","modified_gmt":"2023-11-19T14:29:20","slug":"%f0%9f%90%a2tortoise-tts-generacion-de-voz-a-partir-de-texto-con-ia","status":"publish","type":"post","link":"https:\/\/theroamingworkshop.cloud\/b\/2066\/%f0%9f%90%a2tortoise-tts-generacion-de-voz-a-partir-de-texto-con-ia\/","title":{"rendered":"\ud83d\udc22TorToiSe-TTS: generaci\u00f3n de voz a partir de texto con IA"},"content":{"rendered":"\n<p>La moda de la IA va para largo, y hoy se habla mucho de <strong>Vall-E<\/strong> y su futura combinaci\u00f3n con GPT-3. Pero hay que recordar que todos estos productos de Inteligencia Artificial provienen de investigaciones colaborativas que han sido de c\u00f3digo abierto, por lo que siempre encontraremos un equivalente de software libre, y deber\u00edamos estar agradecidos por ello.<\/p>\n\n\n\n<p>Es el caso de <strong>TorToiSe-TTS<\/strong> (text to speech), un generador de voz a partir de texto mediante IA totalmente gratuito para usar en tu ordenador.<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/neonbjb\/tortoise-tts\" target=\"_blank\">https:\/\/github.com\/neonbjb\/tortoise-tts<\/a><\/p>\n\n\n\n<p>Aqu\u00ed te dejo un anticipo de la voz de <strong>Morgan Freeman<\/strong>:<\/p>\n\n\n\n<iframe style=\"border:0;width:100%;height:250px\" src=\"https:\/\/theroamingworkshop.cloud\/aM\/freeman.php\"><\/iframe>\n\n\n\n<div id=\"menu\" style=\"padding:20px 20px 20px 20px; border-left:2px solid darkgrey;\">\n<p style=\"font-weight:bold;\">Contenido<\/p>\n<\/div>\n<script>\nvar text;\nvar element;\n\nfunction fillmenu(){\n\nfor (let i=0; i<window.document.getElementsByTagName(\"h2\").length; i++){\nelement = window.document.getElementsByTagName(\"h2\")[i];\ntext = \"\u25b9 \"+element.innerHTML;\nvar newelement = document.createElement(\"a\");\nnewelement.innerHTML=text;\nvar postid=window.document.getElementsByTagName(\"article\")[0].id;\nvar url = \"https:\/\/theroamingworkshop.cloud\/b\/?p=\"+postid.substr(5,postid.length)+\"#\"+element.id;\nnewelement.setAttribute(\"href\", url);\nnewelement.appendChild(document.createElement(\"br\"));\nwindow.document.getElementById(\"menu\").appendChild(newelement);\n}\n}\n\nif(window.location.href.includes(\"tag\")){\n\n}else{\nwindow.setTimeout(fillmenu,2000);\n}\n\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"instalacion\">Instalaci\u00f3n<\/h2>\n\n\n\n<p>Lo m\u00e1s f\u00e1cil es usar el script en la nube de <strong>Google Collab<\/strong> que ha habilitado su desarrollador:<\/p>\n\n\n\n<p><a href=\"https:\/\/colab.research.google.com\/drive\/1wVVqUPqwiDBUVeWWOUNglpGhU3hg_cbR?usp=sharing\">https:\/\/colab.research.google.com\/drive\/1wVVqUPqwiDBUVeWWOUNglpGhU3hg_cbR?usp=sharing<\/a><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts3.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"435\" src=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts3-1024x435.png\" alt=\"\" class=\"wp-image-2068\" srcset=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts3-1024x435.png 1024w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts3-300x127.png 300w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts3-768x326.png 768w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts3-676x287.png 676w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts3.png 1125w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Solo tendremos que iniciar sesi\u00f3n e ir d\u00e1ndole al \"play\" \u25b6 para ejecutar cada bloque de c\u00f3digo.<\/p>\n\n\n\n<p>Pero seguro que quieres ejecutar TorToiSe-TTS de forma local, sin necesidad de internet, y guardar los audios en tu disco duro, as\u00ed que seguimos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"instalar-python3\">Instalar python3<\/h3>\n\n\n\n<p>Como muchas aplicaciones de IA, TorToiSe-TTS se ejecuta en python, por lo que debes instalar <strong>python3<\/strong> en tu ordenador. Ya sabes que yo siempre recomiendo el uso de Linux, pero podr\u00e1s ejecutarlo tambi\u00e9n en un terminal de Windows.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.python.org\/downloads\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.python.org\/downloads\/<\/a><\/p>\n\n\n\n<p>En Linux podr\u00e1s instalarlo desde el repositorio de tu distribuci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get update\nsudo apt-get install python3.11<\/code><\/pre>\n\n\n\n<p>Y tambi\u00e9n necesitar\u00e1s el m\u00f3dulo <strong>venv<\/strong> para virtualizar un entorno de python (en Windows suele venir con el instalador):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install python3.11-venv<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"descargar-repositorio\">Descargar repositorio<\/h3>\n\n\n\n<p>Deber\u00e1s descargar el repositorio oficial:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/neonbjb\/tortoise-tts\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/neonbjb\/tortoise-tts<\/a><\/p>\n\n\n\n<p>Bien como archivo comprimido:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts1.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"450\" src=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts1-1024x450.png\" alt=\"\" class=\"wp-image-2067\" srcset=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts1-1024x450.png 1024w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts1-300x132.png 300w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts1-768x338.png 768w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts1-676x297.png 676w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts1.png 1240w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>O usando <strong>git<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/neonbjb\/tortoise-tts<\/code><\/pre>\n\n\n\n<p>Tambi\u00e9n puedes descargar mi repositorio, donde a\u00f1ado instrucciones m\u00e1s detalladas, un lanzador de interfaz en terminal y las voces de prueba de Ultr\u00f3n (si, el androide maligno de Tony Stark) que ver\u00e1s m\u00e1s abajo.<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/TheRoam\/tortoise-tts-linuxLauncher\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/TheRoam\/tortoise-tts-linuxLauncher<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"crear-entorno-vitual-python\">Crear entorno virtual de python<\/h3>\n\n\n\n<p>A continuaci\u00f3n tendremos que instalar una serie de m\u00f3dulos necesarios para arrancar TorToiSe-TTS, pero antes vamos a crear una versi\u00f3n virtual de python, para que la instalaci\u00f3n de esos m\u00f3dulos no afecte al resto de la instalaci\u00f3n de python. Ver\u00e1s que al final esto es muy \u00fatil cuando utilizas diferentes apps de IA que utilizan distintas versiones de cada m\u00f3dulo.<\/p>\n\n\n\n<p>En un terminal escribimos lo siguiente, de forma que creamos el entorno \"TTS\":<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd tortoise-tts\npython3 -m venv TTS<\/code><\/pre>\n\n\n\n<p>Y lo activamos as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source TTS\/bin\/activate<\/code><\/pre>\n\n\n\n<p>Ahora ver\u00e1s que tu terminal hace referencia al entorno TTS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(TTS) abc@123:~$ |<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"instalar-modulos-python\">Instalar m\u00f3dulos de python<\/h3>\n\n\n\n<p>Vamos a instalar los m\u00f3dulos de python necesarios, siguiendo las indicaciones del collab:<\/p>\n\n\n\n<p><a href=\"https:\/\/colab.research.google.com\/drive\/1wVVqUPqwiDBUVeWWOUNglpGhU3hg_cbR?usp=sharing#scrollTo=Gen09NM4hONQ\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/colab.research.google.com\/drive\/1wVVqUPqwiDBUVeWWOUNglpGhU3hg_cbR?usp=sharing#scrollTo=Gen09NM4hONQ<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip3 install -U scipy\npip3 install transformers==4.19.0\npip3 install -r requirements.txt\npython3 setup.py install<\/code><\/pre>\n\n\n\n<p>Con esto podemos probar a ejecutar TorToiSe-TTS, pero te adelant\u00f3 que fallar\u00e1n algunas librer\u00edas, dependiendo de tu instalaci\u00f3n de python:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 scripts\/tortoise_tts.py \"This is The Roaming Workshop\" -v \"daniel\" -p \"fast\" -o \"test1.wav\"<\/code><\/pre>\n\n\n\n<p>Probamos el comando anterior hasta que no falle. En mi caso he tenido que a\u00f1adir los siguientes m\u00f3dulos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip3 install torch\npip3 install torchaudio\npip3 install llvmlite\npip3 install numpy==1.23<\/code><\/pre>\n\n\n\n<p>Y listo, ese <strong>test1.wav<\/strong> suena as\u00ed en la voz de <strong>daniel<\/strong> (que resulta ser <strong>Daniel Craig<\/strong>):<\/p>\n\n\n\n<iframe style=\"border:0;width:100%;height:250px\" src=\"https:\/\/theroamingworkshop.cloud\/aM\/daniel.php\"><\/iframe>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"uso-de-tortoise-tts\">Uso de TorToiSe-TTS<\/h2>\n\n\n\n<p>El programa m\u00e1s sencillo de <strong>TorToiSe-TTS<\/strong> se encuentra en la carpeta <code>scripts\/tortoise_tts.py<\/code> y estos son sus principales argumentos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 scripts\/tortoise_tts.py \"texto\" -v \"voz\" -V \"ruta\/a\/carpeta\/de\/voces\" --seed semilla -p \"fast\" -o \"fichero-de-salida.wav\" <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\"texto\"<\/code>: cadena de texto que se convertir\u00e1 en voz<\/li>\n\n\n\n<li><code>-v<\/code>: voz a utilizar para convertir el texto. Debe ser el nombre de una de las carpetas disponibles en <code>\/tortoise\/voices\/<\/code><\/li>\n\n\n\n<li><code>-V<\/code>: especifica una carpeta para las voces, para el caso de usar una personalizada. Podemos crear nuevas carpetas en <code>\/tortoise\/voices\/<\/code><\/li>\n\n\n\n<li><code>--seed<\/code>: semilla para caracterizar el algoritmo (cualquier n\u00famero vale)<\/li>\n\n\n\n<li><code>-p<\/code>: modo predefinido para determinar la calidad (\"ultra_fast\", \"fast\", \"standard\", \"high_quality\").<\/li>\n\n\n\n<li><code>-o<\/code>: ruta y nombre del fichero de salida. Se debe especificar el formato del archivo, que ser\u00e1 <code>.wav<\/code><\/li>\n<\/ul>\n\n\n\n<p>Si usas el script de mi repositorio <code>TTS.sh<\/code> se te pedir\u00e1n estos argumentos por pantalla y se ejecutar\u00e1 el algoritmo autom\u00e1ticamente.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts4.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"947\" height=\"608\" src=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts4.png\" alt=\"\" class=\"wp-image-2070\" srcset=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts4.png 947w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts4-300x193.png 300w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts4-768x493.png 768w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts4-676x434.png 676w\" sizes=\"auto, (max-width: 947px) 100vw, 947px\" \/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"a\u00f1ade-tus-propias-voces\">A\u00f1ade tus propias voces<\/h2>\n\n\n\n<p>Puedes a\u00f1adir m\u00e1s voces a TurToiSe-TTS. Yo por ejemplo he querido a\u00f1adir la voz de Ultr\u00f3n, el supervillano de Marvel, siguiendo las indicaciones del desarrollador <strong>Neonbjb<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Debes recopilar unas <strong>3 grabaciones \"limpias\"<\/strong> (sin ruidos de fondo ni m\u00fasica, preferiblemente) de unos <strong>10 segundos<\/strong> de duraci\u00f3n.<\/li>\n\n\n\n<li>El formato debe ser <strong>WAV de 16bits<\/strong> de coma flotante con <strong>22500<\/strong> de frecuencia de muestreo (puedes usar <strong>Audacity<\/strong>)<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts5.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"542\" src=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts5-1024x542.png\" alt=\"\" class=\"wp-image-2072\" srcset=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts5-1024x542.png 1024w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts5-300x159.png 300w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts5-768x407.png 768w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts5-1536x814.png 1536w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts5-676x358.png 676w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/tts5.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Crea una nueva carpeta en la ruta <code>\/tortoise\/voices<\/code> (o realmente donde quieras) y guarda ah\u00ed las grabaciones.<\/li>\n\n\n\n<li>Al ejecutar TorToiSe-TTS, deber\u00e1s indicar la ruta de la carpeta de voces con el argumento <code>-V<\/code> y la nueva voz con el argumento <code>-v<\/code><\/li>\n<\/ul>\n\n\n\n<p>Por ejemplo, para usar mis grabaciones de Ultr\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 sripts\/tortoise_tts.py \"This is The Roaming Workshop\" -V \".\/tortoise\/voices\" -v \"ultron-en\" -p \"fast\" --seed 17 -o \".\/wavs\/TRW_ultron3.wav\"<\/code><\/pre>\n\n\n\n<p>Que suena as\u00ed:<\/p>\n\n\n\n<iframe style=\"border:0;width:100%;height:250px\" src=\"https:\/\/theroamingworkshop.cloud\/aM\/ultron.php\"><\/iframe>\n\n\n\n<p>Yo he tomado recortes de una escena de <em>Vengadores: la era de Ultr\u00f3n<\/em>, tanto en ingl\u00e9s (<strong>ultron-en<\/strong>) como en espa\u00f1ol (<strong>ultron-es<\/strong>) que puedes descargar de mi repositorio.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/Ultron_supervillain_close_shot_with_blurry_background_16-edited.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"2048\" height=\"1280\" src=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/Ultron_supervillain_close_shot_with_blurry_background_16-edited.png\" alt=\"\" class=\"wp-image-2075\" srcset=\"https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/Ultron_supervillain_close_shot_with_blurry_background_16-edited.png 2048w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/Ultron_supervillain_close_shot_with_blurry_background_16-edited-300x188.png 300w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/Ultron_supervillain_close_shot_with_blurry_background_16-edited-1024x640.png 1024w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/Ultron_supervillain_close_shot_with_blurry_background_16-edited-768x480.png 768w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/Ultron_supervillain_close_shot_with_blurry_background_16-edited-1536x960.png 1536w, https:\/\/theroamingworkshop.cloud\/b\/wp-content\/uploads\/2023\/01\/Ultron_supervillain_close_shot_with_blurry_background_16-edited-676x423.png 676w\" sizes=\"auto, (max-width: 2048px) 100vw, 2048px\" \/><\/a><figcaption class=\"wp-element-caption\">\"Ultron supervillain\" by Optimised Stable Diffusion + Upscayl 2. The Roaming Workshop 2023.<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Por ahora el modelo de TorToiSe-TTS est\u00e1 <strong>entrenado solo en ingl\u00e9s<\/strong>, por lo que solo funciona adecuadamente en este idioma.<\/p>\n\n\n\n<p>Puedes introducir texto en otro idioma, y la IA <strong>intentar\u00e1 leerlo<\/strong>, aunque usar\u00e1 la pronunciaci\u00f3n que ha aprendido del ingl\u00e9s y sonar\u00e1 bastante extra\u00f1o.<\/p>\n\n\n\n<p>Si te animas a entrenar un modelo para tu idioma (necesitas mucha GPU y varios meses), contacta con el desarrollador, ya que tiene bastante inter\u00e9s en ampliar el proyecto.<\/p>\n\n\n\n<p>Mientras tanto, puedes dejar tus dudas y comentarion en \ud83d\udc26 Twitter o \ud83d\udc24 Koo!<\/p>\n\n\n\n<p>\ud83d\udc26 <code><a rel=\"noreferrer noopener\" href=\"https:\/\/twitter.com\/roamingworkshop\" target=\"_blank\">@RoamingWorkshop<\/a><\/code><\/p>\n\n\n\n<p>\ud83d\udc24 <a rel=\"noreferrer noopener\" href=\"https:\/\/www.kooapp.com\/profile\/TheRoamingWorkshop\" target=\"_blank\">@TheRoamingWorkshop<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La moda de la IA va para largo, y hoy se habla mucho de Vall-E y su futura combinaci\u00f3n con GPT-3. Pero hay que recordar que todos estos productos de Inteligencia Artificial provienen de investigaciones colaborativas que han sido de c\u00f3digo abierto, por lo que siempre encontraremos un equivalente de software libre, y deber\u00edamos estar [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2069,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[590,45],"tags":[335,325,337,323,319,321,327,329,331,333],"class_list":["post-2066","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ia","category-programas","tag-ai","tag-artifitial-intelligence","tag-ia","tag-inteligencia-artificial","tag-text-to-speech","tag-texto-a-voz","tag-tortoise","tag-tts","tag-voces","tag-voices","post-preview"],"_links":{"self":[{"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/posts\/2066","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/comments?post=2066"}],"version-history":[{"count":9,"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/posts\/2066\/revisions"}],"predecessor-version":[{"id":2093,"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/posts\/2066\/revisions\/2093"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/media\/2069"}],"wp:attachment":[{"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/media?parent=2066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/categories?post=2066"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/theroamingworkshop.cloud\/b\/wp-json\/wp\/v2\/tags?post=2066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}