GUIA

Texto em fala em PHP e WordPress offline

O PHP não tem síntese de voz própria, então a maioria dos tutoriais manda o seu texto para uma API na nuvem e paga por caractere. Para um site que quer uma versão em áudio de cada artigo, notificações faladas ou áudio para uma loja, essa conta cresce a cada post, e cada texto sai do seu servidor.

Este guia mostra como chamar o motor gratuito SuperClonica a partir do PHP por meio de um servidor HTTP local: vozes naturais, arquivos WAV que ficam com você e nenhuma cobrança por requisição.

Como o PHP pode falar

Gere o áudio uma vez por versão do texto e sirva como arquivo; não sintetize a cada visita.

  • APIs na nuvem: vozes naturais, mas conta, chave, cobrança por caractere e o seu texto nos servidores deles.
  • SuperClonica: um servidor HTTP local ao lado do seu site, com vozes naturais, de personagens e próprias, offline.
  • Nos dois casos o PHP envia JSON e recebe áudio; só muda o endereço.
  • Ele fala 31 idiomas; o chinês ainda não é suportado.

Ouça as vozes grátis

Antes de escrever código, abra a página de qualquer voz, escreva uma frase de 30 a 100 caracteres, escolha o idioma e clique no botão para gerar. Em poucos segundos você ouve a voz que o seu site poderia ter, sem conta.

Suba o servidor de voz

Uma placa de vídeo NVIDIA acelera com a imagem cuda, mas um processador comum basta.

  • Suba o servidor na mesma máquina ou numa privada: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu.
  • A primeira execução baixa o modelo Supertonic 3, cerca de 385 MB, no volume; GET /health avisa quando está pronto.
  • POST /synthesize recebe JSON com text, voice, lang, seed e normalize e responde com um WAV mono de 16 bits.
  • voice é um nome padrão de M1 a M5 e de F1 a F5, ou o conteúdo decodificado de um arquivo de voz.

Chame pelo PHP

Nenhuma extensão além das funções padrão é necessária: $voice = json_decode(file_get_contents('voice.json'), true); $body = json_encode(['text' => 'Olá do PHP!', 'voice' => $voice, 'lang' => 'pt', 'seed' => 7]); $wav = file_get_contents('http://localhost:8000/synthesize', false, stream_context_create(['http' => ['method' => 'POST', 'header' => 'Content-Type: application/json', 'content' => $body]])); file_put_contents('hello.wav', $wav); A mesma requisição funciona com a extensão cURL ou um cliente HTTP como o Guzzle. Para uma voz padrão, passe 'voice' => 'F1' em vez do arquivo decodificado. Converta o WAV para MP3 com o ffmpeg se quiser arquivos menores para a web.

WordPress e hábitos para produção

No WordPress, gere o áudio a partir de um hook de publicação ou de uma tarefa em segundo plano, guarde na pasta uploads e anexe ao post, para os visitantes baixarem um arquivo em vez de esperar a síntese. Não exponha a porta 8000 na internet: defina SUPERCLONICA_API_KEY e envie como token Bearer, ou mantenha o servidor no localhost. Escolha uma voz padrão neutra para publicações, avise que o áudio é gerado e mantenha o artigo escrito acessível.