Texto a Voz para Sitios WPML: Lo Que Realmente Funciona
Si tienes un sitio con WPML y quieres que cada traducción tenga su propia narración en la voz adecuada, el plugin que elijas debe hacer tres cosas bien: leer el post traducido, generar un archivo de audio separado por idioma y detectar el idioma activo dentro de las llamadas AJAX. La mayoría de los plugins de texto a voz fallan en alguna de esas. Texto a Voz - TTSWP fue creado para manejar las tres.
Este artículo es el complemento práctico de nuestra guía para Weglot. El enfoque técnico es el opuesto, así que empezamos explicando por qué.
WPML guarda las traducciones como posts reales. Weglot no.
WPML y Weglot resuelven el multilingüismo en WordPress de maneras muy distintas, y esa diferencia determina lo que un plugin de texto a voz necesita hacer.
WPML crea un registro de post separado para cada traducción. La versión en inglés de un artículo vive en wp_posts con un ID. La versión en español vive en la misma tabla con un ID distinto. WPML los vincula a través de la tabla icl_translations. El texto traducido es texto real en la base de datos, editado por una persona o por el pipeline de traducción automática de WPML.
Weglot funciona al revés. La base de datos guarda solo el original. Las traducciones se generan en tiempo de ejecución y se inyectan en el HTML antes de que la página llegue al navegador. Un plugin que lee desde get_post() en un sitio con Weglot siempre verá el idioma fuente.
Para texto a voz, esto lo cambia todo. En WPML, leer el contenido del post desde la base de datos es correcto: el texto traducido ya está ahí. Los errores tienen que ver con qué post lee el plugin, en qué idioma cree que está y si guarda uno o varios archivos de audio.

Los cuatro errores que cometen los plugins de texto a voz con WPML
Probamos varias configuraciones en un sitio de staging WPML multilingüe. Los mismos cuatro problemas aparecían una y otra vez. Si tu plugin actual tiene alguno de estos, el audio que escuchan tus visitantes no es el que crees que publicaste.
1. Audio en el idioma equivocado por fallas en la detección de idioma con AJAX
Este es el error silencioso más peligroso. La mayoría de los reproductores de texto a voz obtienen el archivo de audio o la URL del stream a través de una petición admin-ajax o REST después de que carga la página. Dentro de esa petición, WordPress ha perdido el contexto de la URL del front-end. El plugin le pregunta a WPML «¿en qué idioma estamos?» y recibe la respuesta equivocada.
La causa habitual es la constante antigua ICL_LANGUAGE_CODE. Se define una sola vez al inicio de la petición y refleja el idioma que WPML detectó al arrancar. Durante una llamada AJAX disparada desde una página en español, esa constante suele devolver el idioma predeterminado, no el español. El plugin de texto a voz entonces genera audio en inglés para un artículo en español, o recupera un archivo en inglés del caché y lo reproduce en el reproductor en español.
La solución correcta es usar los filtros en tiempo de ejecución de WPML. El filtro wpml_current_language devuelve el idioma activo en el momento en que lo consultas. El hook wpml_post_language_details devuelve el idioma al que pertenece un post específico, lo que es incluso más seguro porque vincula el audio al ID del post y no al estado de la petición.
Cómo detectarlo como lector: abre un artículo traducido, dale play y escucha el primer segundo de audio. Si escuchas una voz en inglés en una página que no está en inglés, el plugin está usando la ruta de detección de idioma incorrecta.
2. Un solo archivo de audio compartido entre todas las traducciones
Algunos plugins generan el audio cuando se publica el post original y asocian el mismo archivo a todas las traducciones. Es rápido y económico. También es incorrecto. Un lector en español recibe la narración en inglés, o un acento sintético que no corresponde a la página que está leyendo.
Como las traducciones en WPML son posts separados con IDs distintos, el comportamiento correcto es generar un nuevo archivo de audio por cada post traducido. Cada archivo se guarda con su propio ID de post y se sirve solo a esa traducción. TTSWP sigue este modelo y usa el ID del post, no el ID original, como clave de caché.
3. La misma voz narrando todos los idiomas
Un artículo en francés narrado por una voz entrenada en inglés suena mal incluso cuando las palabras son correctas. Las voces de ElevenLabs traen el acento y la prosodia de sus datos de entrenamiento. Una voz entrenada en inglés americano leerá el francés con acento americano, a menos que asignes una voz que corresponda al idioma de destino.
TTSWP te permite asignar una voz de ElevenLabs a cada idioma de WPML. La traducción al español recibe una voz entrenada en español, la alemana recibe una voz en alemán, y así. Consulta la documentación de mapeo de idioma a voz para ver la configuración exacta.
4. Schema que no declara el idioma del audio
Este es el detalle de AEO que la mayoría de los plugins ignoran. Los datos estructurados de AudioObject deben incluir una propiedad inLanguage. El valor debe ser una etiqueta IETF BCP 47 (es, de, nb-NO) que coincida con el hreflang de la página.
Un valor de inLanguage correcto le da a los motores de búsqueda y a las herramientas de IA una señal clara y legible por máquina sobre el idioma del audio. Refuerza la señal hreflang que ya está en la página. Cuando falta el schema, o todas las traducciones comparten el mismo valor solo en inglés, esa señal desaparece y los sistemas que entienden idiomas no pueden distinguir las versiones. Explicamos cómo los motores de IA tratan el audio en nuestra guía de AEO y audio.
Elegir el modelo de ElevenLabs correcto para tu cobertura con WPML
ElevenLabs ofrece varios modelos y no todos cubren los mismos idiomas. Si WPML sirve un idioma que ElevenLabs no soporta en el modelo que elegiste, no podrás narrar esa traducción correctamente.
La cobertura actual a 2026:
- Multilingual v2 soporta 29 idiomas, incluyendo inglés, español, francés, alemán, italiano, portugués, neerlandés, polaco, sueco, danés, finlandés, turco, árabe, hindi, japonés, coreano y chino.
- Flash v2.5 soporta 32 idiomas: todos los de v2 más húngaro, noruego y vietnamita, con una latencia de modelo de aproximadamente 75 ms.
- Eleven v3 soporta 74 idiomas, la cobertura más amplia de todos los modelos. Tiene una limitación que supera sus ventajas adicionales: no está diseñado para uso en tiempo real. ElevenLabs lo indica explícitamente. El modelo es más grande y usa un códec de voz de mayor fidelidad, por lo que la generación tarda más. Para casos de uso en tiempo real o conversacionales, ElevenLabs recomienda Flash v2.5.
Para un sitio WPML con una traducción al noruego, Multilingual v2 no será suficiente. Flash v2.5 sí la cubre. Para un sitio que necesita un idioma que solo soporta v3, aceptas mayor latencia de generación a cambio de esa cobertura. TTSWP enruta cada idioma a la voz que tú eliges, así que puedes mezclar modelos según lo necesites.
Cómo verificar si tu plugin de texto a voz realmente funciona con WPML
No necesitas revisar código para comprobarlo. Cinco minutos en el navegador te dicen todo lo que pasa.
- Cambia de idioma. Abre el artículo original y luego cambia a una traducción con el selector de idioma de WPML. Confirma que la URL cambia (por ejemplo a
/es/) y que el slug del post es el slug traducido. - Dale play y escucha. La voz debe coincidir con el idioma de la página. Una voz en inglés en una página en español significa que el plugin falló en el primer paso.
- Revisa la URL del audio. Haz clic derecho en el reproductor y copia la fuente del audio. Compárala con la URL del audio en el artículo original. Si ambas URL son idénticas en todos los idiomas, el plugin está compartiendo un solo archivo.
- Ve el código fuente de la página y busca
AudioObject. Busca un campoinLanguage. Debe coincidir con el código de idioma de la página. Si falta o siempre diceen, el schema está mal. - Verifica el hreflang. El
inLanguagedel audio debe coincidir con elhreflangde la página. Las discrepancias confunden a los motores de búsqueda con IA y rompen las citas por idioma.
Aplica esta lista de verificación antes de instalar cualquier cosa. Funciona con cualquier plugin de texto a voz, no solo con TTSWP.
Cómo debe verse una configuración correcta de texto a voz con WPML
Esto es lo que recomendamos en un sitio WPML en producción. Cada paso corresponde a un error descrito arriba.
| Problema | Enfoque incorrecto | Enfoque correcto |
|---|---|---|
| Idioma en AJAX | Constante ICL_LANGUAGE_CODE | Filtro wpml_current_language o wpml_post_language_details vinculado al ID del post |
| Almacenamiento de audio | Un archivo compartido entre todas las traducciones | Un archivo por ID de post traducido, servido desde CDN |
| Selección de voz | La misma voz para todos los idiomas | Una voz de ElevenLabs asignada por idioma de WPML |
| Selección de modelo | Modelo fijo para todos los idiomas | Elección por idioma entre Multilingual v2, Flash v2.5 o Eleven v3 |
| Schema | AudioObject ausente o solo en inglés | AudioObject con inLanguage que coincide con el hreflang de la página |
TTSWP sigue la columna de la derecha por defecto. El plugin lee el post traducido directamente, genera un archivo de audio nuevo por ID de post, lo entrega a través de CloudFront y emite schema AudioObject por idioma. La documentación de integración con WPML explica la configuración paso a paso.
Una limitación real
El audio por idioma consume más caracteres que un solo archivo compartido. Si publicas un artículo de 1500 palabras y lo traduces a cinco idiomas, pagas por cinco generaciones, no una. Ese es el costo de hacerlo bien. Compartir un solo archivo sería más barato, pero el audio no correspondería a la página. No recomendamos sacrificar la experiencia del lector para ahorrar créditos, y lo decimos claramente en la documentación de créditos.
Si el presupuesto es ajustado, genera audio solo para los idiomas que reciben tráfico real. Las estadísticas de idioma de WPML y tu herramienta de analítica te dirán qué traducciones vale la pena narrar.
Preguntas frecuentes
¿TTSWP es compatible con WPML desde el inicio?
Sí. Con ambos plugins activos, TTSWP detecta WPML, lee el contenido del post traducido para cada idioma y guarda un archivo de audio separado por traducción. Asignas una voz por idioma en la configuración de TTSWP y publicas las traducciones como siempre. El audio se regenera cuando se actualiza una traducción. Consulta la página de integración con WPML para ver los pasos de configuración.
¿Por qué mi plugin de texto a voz actual lee todo en inglés en páginas traducidas?
La causa más probable es la constante obsoleta ICL_LANGUAGE_CODE dentro de una llamada AJAX. Durante AJAX, esa constante suele devolver el idioma predeterminado del sitio en lugar del activo, así que el plugin genera o sirve audio en inglés en páginas que no están en inglés. La solución es cambiar al filtro wpml_current_language o leer el idioma directamente desde el ID del post.
¿Puedo usar voces de ElevenLabs distintas por idioma en WPML?
Sí. TTSWP asigna una voz de ElevenLabs a cada idioma de WPML. Las traducciones al español las narra una voz en español, las alemanas una voz en alemán, y así. También puedes elegir distintos modelos por idioma, lo que importa cuando un idioma de destino solo está disponible en Flash v2.5 o Eleven v3 y no en Multilingual v2.
¿Qué idiomas cubre ElevenLabs para sitios con WPML?
Multilingual v2 cubre 29 idiomas, Flash v2.5 cubre 32 (agregando noruego, húngaro y vietnamita) y Eleven v3 cubre 74 idiomas. Elige el modelo con la mayor cobertura que tu presupuesto de latencia permita. La mayoría de los sitios WPML funcionan bien con Multilingual v2 o Flash v2.5. Los sitios con idiomas menos comunes mueven esas traducciones a Eleven v3.
¿TTSWP emite schema por idioma para búsqueda con IA?
Sí. TTSWP genera un AudioObject por post traducido con un valor inLanguage que coincide con el hreflang de la página. Esto le da a los motores de búsqueda y a las herramientas de IA una señal clara sobre a qué versión de idioma pertenece cada audio, en vez de etiquetar todas las traducciones de la misma manera.
Siguiente paso
Aplica la prueba de cinco pasos en el navegador con el plugin de texto a voz que uses hoy. Si algún paso falla, ese es el error que debes resolver antes de agregar más traducciones. Si quieres una configuración que maneje los cinco desde el primer momento, instala Texto a Voz - TTSWP desde WordPress.org, conéctalo al backend de TTSWP y asigna una voz por idioma de WPML. El plugin se encarga del resto.
Articulos relacionados
Los mejores plugins de texto a voz para WordPress (2026)
Una guía imparcial de 2026 con los siete mejores plugins de texto a voz para WordPress, sus puntos fuertes, sus limitaciones y una tabla comparativa completa.
Texto a Voz para sitios WordPress con Weglot: qué funciona realmente
La mayoría de los plugins de TTS dicen ser compatibles con Weglot, pero leen desde la base de datos, no desde la traducción. Esto es lo que requiere una compatibilidad real con Weglot.
¿Qué es el Texto a Voz? Una guía en lenguaje claro
El texto a voz convierte contenido escrito en audio hablado. Descubre cómo funciona, por qué importa y cómo agregarlo a tu sitio WordPress.