Text to Speech para Sites WPML: O Que Realmente Funciona

12 min de leitura 17 min de escuta
Text to Speech para Sites WPML: O Que Realmente Funciona

Se você tem um site WPML e quer que cada tradução tenha sua própria narração na voz certa, o plugin escolhido precisa fazer três coisas corretamente: ler o post traduzido, gerar um arquivo de áudio separado por idioma e detectar o idioma atual dentro de chamadas AJAX. A maioria dos plugins de TTS falha em pelo menos um desses pontos. O Conversão de Texto em Voz - TTSWP foi desenvolvido para lidar com os três.

Este post é o complemento prático do nosso guia sobre Weglot. O ângulo técnico é o oposto, por isso começamos explicando o motivo.

O WPML armazena traduções como posts reais. O Weglot não.

WPML e Weglot resolvem o WordPress multilíngue de formas muito diferentes, e essa diferença define o que um plugin de TTS precisa fazer.

O WPML cria um registro de post separado para cada tradução. A versão em inglês de um artigo fica em wp_posts com um ID. A versão em espanhol fica na mesma tabela com um ID diferente. O WPML os vincula pela tabela icl_translations. O texto traduzido é texto real no banco de dados, editado por uma pessoa ou pelo pipeline de tradução automática do WPML.

O Weglot funciona ao contrário. O banco de dados guarda apenas o original. As traduções são geradas em tempo de execução e inseridas no HTML antes que a página chegue ao navegador. Um plugin que lê via get_post() em um site Weglot sempre vê apenas o idioma de origem.

Para TTS, isso muda tudo. No WPML, ler o conteúdo do post diretamente do banco de dados está correto. O texto traduzido já está lá. Os problemas são sobre qual post o plugin lê, qual idioma ele identifica e se armazena um ou vários arquivos de áudio.

Diagrama comparando o armazenamento de posts separados do WPML com a tradução em tempo de execução do Weglot, com implicações para arquivos de áudio TTS em cada modelo
O WPML mantém cada tradução como um post real no banco de dados. O Weglot traduz em tempo de execução. Os dois modelos exigem estratégias de TTS diferentes.

Os quatro erros mais comuns em plugins TTS com WPML

Testamos várias configurações em um site WPML multilíngue de homologação. Os mesmos quatro problemas apareceram repetidamente. Se o seu plugin atual tem algum deles, o áudio que seus visitantes ouvem não é o que você acredita ter publicado.

1. Áudio no idioma errado por falha na detecção via AJAX

Esse é o problema silencioso. A maioria dos players de TTS busca o arquivo de áudio ou a URL do stream por uma requisição admin-ajax ou REST após o carregamento da página. Dentro dessa requisição, o WordPress perde o contexto de URL do front-end. O plugin pergunta ao WPML "em que idioma estamos?" e recebe a resposta errada.

A causa mais comum é a constante antiga ICL_LANGUAGE_CODE. Ela é definida uma única vez no início da requisição e reflete o idioma que o WPML detectou na inicialização. Durante uma chamada AJAX disparada a partir de uma página em espanhol, essa constante frequentemente retorna o idioma padrão, não o espanhol. O plugin de TTS então gera áudio em inglês para um artigo em espanhol, ou carrega um arquivo em inglês do cache e o reproduz no player da página em espanhol.

A abordagem correta é usar os filtros de tempo de execução do WPML. O filtro wpml_current_language retorna o idioma ativo no momento em que é consultado. O hook wpml_post_language_details retorna o idioma de um post específico, o que é ainda mais seguro porque vincula o áudio ao ID do post em vez do estado da requisição.

Como identificar o problema como leitor: abra um artigo traduzido, dê play e ouça o primeiro segundo de áudio. Se você ouvir uma voz em inglês em uma página que não está em inglês, o plugin está usando o caminho errado de detecção de idioma.

2. Um único arquivo de áudio compartilhado por todas as traduções

Alguns plugins geram o áudio quando o post original é publicado e vinculam o mesmo arquivo a todas as traduções. É rápido e barato. Mas está errado. Um leitor em espanhol ouve a narração em inglês, ou um sotaque sintético que não combina com a página que está lendo.

Como as traduções do WPML são posts separados com IDs distintos, o comportamento correto é gerar um novo arquivo de áudio para cada post traduzido. Cada arquivo fica armazenado com seu próprio ID de post e é servido apenas para aquela tradução. O TTSWP segue esse modelo e usa o ID do post, não o ID original, como chave de cache.

3. A mesma voz lendo todos os idiomas

Um artigo em francês narrado por uma voz treinada em inglês soa estranho mesmo quando as palavras estão corretas. As vozes do ElevenLabs carregam sotaque e prosódia dos seus dados de treinamento. Uma voz treinada em inglês americano vai ler o francês com sotaque americano, a menos que você atribua uma voz compatível com o idioma de destino.

O TTSWP permite mapear uma voz do ElevenLabs para cada idioma do WPML. A tradução em espanhol recebe uma voz treinada em espanhol, a tradução em alemão recebe uma voz em alemão, e assim por diante. Consulte a documentação de mapeamento de voz por idioma para ver a configuração detalhada.

4. Schema que não declara o idioma do áudio

Esse é o detalhe de AEO que a maioria dos plugins ignora. Os dados estruturados do AudioObject devem incluir a propriedade inLanguage. O valor deve ser uma tag IETF BCP 47 (es, de, nb-NO) que corresponda ao hreflang da página.

Um valor inLanguage correto dá aos buscadores e às ferramentas de IA um sinal claro e legível por máquina sobre o idioma do áudio. Ele reforça o sinal hreflang já presente na página. Quando o schema está ausente, ou todas as traduções compartilham o mesmo valor apenas em inglês, esse sinal desaparece e os sistemas que trabalham por idioma não conseguem distinguir as versões. Explicamos como os mecanismos de IA tratam o áudio no nosso guia de AEO e áudio.

Escolhendo o modelo ElevenLabs certo para cobertura com WPML

O ElevenLabs oferece vários modelos, e eles não cobrem os mesmos idiomas. Se o WPML serve um idioma que o ElevenLabs não suporta no modelo escolhido, você não consegue narrar essa tradução adequadamente.

A cobertura atual em 2026:

  • O Multilingual v2 suporta 29 idiomas, incluindo inglês, espanhol, francês, alemão, italiano, português, holandês, polonês, sueco, dinamarquês, finlandês, turco, árabe, hindi, japonês, coreano e chinês.
  • O Flash v2.5 suporta 32 idiomas: todos os idiomas do v2 mais húngaro, norueguês e vietnamita, com latência de modelo de aproximadamente 75 ms.
  • O Eleven v3 suporta 74 idiomas, a cobertura mais ampla de qualquer modelo. Ele vem com uma restrição que pesa mais do que seus recursos extras: não foi desenvolvido para uso em tempo real. O próprio ElevenLabs deixa isso claro. O modelo é maior e usa um codec de voz de maior fidelidade, então a geração demora mais. Para casos de uso em tempo real ou conversacionais, o ElevenLabs recomenda o Flash v2.5.

Para um site WPML com tradução para o norueguês, o Multilingual v2 não vai cobrir. O Flash v2.5 cobre. Para um site que precisa de um idioma suportado apenas pelo v3, você aceita uma latência de geração maior em troca da cobertura. O TTSWP direciona cada idioma para uma voz de sua escolha, então você pode combinar modelos conforme necessário.

Como testar se o seu plugin de TTS realmente funciona com WPML

Você não precisa ler código para verificar isso. Cinco minutos no navegador revelam o que está acontecendo.

  1. Troque o idioma. Abra o artigo original e mude para uma tradução usando o seletor de idiomas do WPML. Confirme que a URL mudou (por exemplo para /es/) e que o slug do post é o slug traduzido.
  2. Dê play e ouça. A voz deve corresponder ao idioma da página. Uma voz em inglês em uma página em espanhol indica que o plugin falhou nessa etapa.
  3. Inspecione a URL do áudio. Clique com o botão direito no player e copie a fonte de áudio. Compare com a URL de áudio do artigo original. Se as duas URLs são idênticas em todos os idiomas, o plugin está compartilhando um único arquivo.
  4. Veja o código-fonte da página e procure por AudioObject. Procure o campo inLanguage. Ele deve ser igual ao código do idioma da página. Se o campo estiver ausente ou sempre for en, o schema está errado.
  5. Verifique o hreflang. O inLanguage no áudio deve corresponder ao hreflang da página. Divergências confundem a busca por IA e quebram as citações por idioma.

Faça esse checklist antes de instalar qualquer coisa. Funciona com qualquer plugin de TTS, não só o TTSWP.

Como é uma configuração correta de TTS com WPML

Veja o que recomendamos em um site WPML em produção. Cada passo corresponde a um dos erros descritos acima.

Ponto de atençãoAbordagem erradaAbordagem correta
Idioma no AJAXConstante ICL_LANGUAGE_CODEFiltro wpml_current_language ou wpml_post_language_details vinculado ao ID do post
Armazenamento de áudioUm arquivo compartilhado por todas as traduçõesUm arquivo por ID de post traduzido, servido via CDN
Seleção de vozA mesma voz para todos os idiomasUma voz do ElevenLabs mapeada por idioma do WPML
Seleção de modeloModelo fixo para todos os idiomasEscolha por idioma entre Multilingual v2, Flash v2.5 ou Eleven v3
SchemaAudioObject ausente ou apenas em inglêsAudioObject com inLanguage correspondendo ao hreflang da página

O TTSWP segue a coluna da direita por padrão. O plugin lê o post traduzido diretamente, gera um novo arquivo de áudio por ID de post, entrega via CloudFront e emite schema AudioObject por idioma. A documentação de integração com WPML explica o passo a passo da configuração.

Uma limitação real

O áudio por idioma consome mais caracteres do que um único arquivo compartilhado. Se você publica um artigo de 1.500 palavras e o traduz para cinco idiomas, paga por cinco gerações, não por uma. Esse é o custo da qualidade. Compartilhar um único arquivo sairia mais barato, mas o áudio não corresponderia à página. Não recomendamos abrir mão da experiência do leitor para economizar créditos, e deixamos isso claro na documentação de créditos.

Se o orçamento for limitado, gere áudio apenas para os idiomas que recebem tráfego real. As estatísticas de idioma do WPML e seus dados de analytics vão mostrar quais traduções valem a narração.

Perguntas frequentes

O TTSWP suporta WPML nativamente?

Sim. Com os dois plugins ativos, o TTSWP detecta o WPML, lê o conteúdo do post traduzido para cada idioma e armazena um arquivo de áudio separado por tradução. Você atribui uma voz por idioma nas configurações do TTSWP e publica as traduções normalmente. O áudio é regerado quando uma tradução é atualizada. Consulte a página de integração com WPML para os passos de configuração.

Por que meu plugin de TTS atual lê tudo em inglês nas páginas traduzidas?

A causa mais provável é a constante obsoleta ICL_LANGUAGE_CODE dentro de uma chamada AJAX. Durante o AJAX, essa constante frequentemente retorna o idioma padrão do site em vez do ativo, fazendo o plugin gerar ou servir áudio em inglês em páginas de outros idiomas. A solução é migrar para o filtro wpml_current_language ou ler o idioma diretamente pelo ID do post.

Posso usar vozes diferentes do ElevenLabs por idioma no WPML?

Sim. O TTSWP mapeia uma voz do ElevenLabs para cada idioma do WPML. As traduções em espanhol são lidas por uma voz em espanhol, as em alemão por uma voz em alemão, e assim por diante. Você também pode escolher modelos diferentes por idioma, o que importa quando um idioma de destino só é suportado pelo Flash v2.5 ou pelo Eleven v3, e não pelo Multilingual v2.

Quais idiomas o ElevenLabs cobre para sites WPML?

O Multilingual v2 cobre 29 idiomas, o Flash v2.5 cobre 32 (acrescentando norueguês, húngaro e vietnamita) e o Eleven v3 cobre 74 idiomas. Escolha o modelo com a cobertura mais ampla que sua tolerância de latência permite. A maioria dos sites WPML tem bons resultados com o Multilingual v2 ou o Flash v2.5. Sites com idiomas menos comuns movem essas traduções para o Eleven v3.

O TTSWP emite schema por idioma para busca por IA?

Sim. O TTSWP gera um AudioObject por post traduzido com um valor inLanguage correspondente ao hreflang da página. Isso dá aos buscadores e às ferramentas de IA um sinal claro sobre qual áudio pertence a qual versão de idioma do artigo, em vez de deixar todas as traduções marcadas da mesma forma.

Próximo passo

Faça o teste de cinco etapas no navegador com o plugin de TTS que você usa hoje. Se alguma etapa falhar, esse é o problema que você precisa resolver antes de adicionar mais traduções. Se quiser uma configuração que funcione corretamente em todas as cinco etapas desde o início, instale o Conversão de Texto em Voz - TTSWP do WordPress.org, conecte ao backend do TTSWP e atribua uma voz por idioma no WPML. O plugin cuida do resto.