GUIDE

Synthèse vocale en PHP et WordPress hors ligne

PHP n’a pas de synthèse vocale intégrée, donc la plupart des tutoriels envoient votre texte à une API cloud et paient au caractère. Pour un site qui veut une version audio de chaque article, des notifications parlées ou de l’audio pour une boutique, la facture grandit à chaque publication, et chaque texte quitte votre serveur.

Ce guide montre comment appeler le moteur gratuit SuperClonica depuis PHP via un serveur HTTP local : des voix naturelles, des fichiers WAV que vous gardez et aucun frais par requête.

Comment PHP peut parler

Générez l’audio une fois par version du texte et servez-le comme fichier ; ne synthétisez pas à chaque visite.

  • API cloud : voix naturelles, mais compte, clé, facturation au caractère et votre texte sur leurs serveurs.
  • SuperClonica : un serveur HTTP local à côté de votre site, avec des voix naturelles, de personnages et personnalisées, hors ligne.
  • Dans les deux cas, PHP envoie du JSON et reçoit de l’audio ; seule l’adresse change.
  • Il parle 31 langues ; le chinois n’est pas encore pris en charge.

Écouter les voix gratuitement

Avant d’écrire du code, ouvrez la page de n’importe quelle voix, saisissez une phrase de 30 à 100 caractères, choisissez la langue et cliquez sur le bouton de synthèse. En quelques secondes, vous entendez la voix que pourrait avoir votre site, sans compte.

Lancer le serveur vocal

Une carte graphique NVIDIA accélère le tout avec l’image cuda, mais un processeur ordinaire suffit.

  • Lancez le serveur sur la même machine ou sur une machine privée : docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu.
  • Le premier démarrage télécharge le modèle Supertonic 3, environ 385 Mo, dans le volume ; GET /health indique quand il est prêt.
  • POST /synthesize reçoit du JSON avec text, voice, lang, seed et normalize, et répond par un WAV mono 16 bits.
  • voice est un nom de base de M1 à M5 et de F1 à F5, ou le contenu décodé d’un fichier de voix.

L’appeler depuis PHP

Aucune extension n’est nécessaire au-delà des fonctions standard : $voice = json_decode(file_get_contents('voice.json'), true); $body = json_encode(['text' => 'Bonjour depuis PHP !', 'voice' => $voice, 'lang' => 'fr', '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); La même requête fonctionne avec l’extension cURL ou un client HTTP comme Guzzle. Pour une voix de base, passez 'voice' => 'F1' au lieu du fichier décodé. Convertissez le WAV en MP3 avec ffmpeg si vous voulez des fichiers plus légers pour le web.

WordPress et bonnes pratiques

Dans WordPress, générez l’audio depuis un hook de publication ou une tâche en arrière-plan, enregistrez-le dans le dossier uploads et associez-le à l’article, pour que les visiteurs téléchargent un fichier au lieu d’attendre la synthèse. N’exposez pas le port 8000 sur internet : définissez SUPERCLONICA_API_KEY et envoyez-la comme jeton Bearer, ou gardez le serveur sur localhost. Choisissez une voix de base neutre pour les publications, indiquez que l’audio est généré et gardez l’article écrit accessible.