Text-to-Speech in PHP und WordPress, offline
PHP hat keine eigene Sprachsynthese, deshalb schicken die meisten Anleitungen Ihren Text an eine Cloud-API und zahlen pro Zeichen. Für eine Website, die zu jedem Artikel eine Hörversion, gesprochene Benachrichtigungen oder Audio für einen Shop will, wächst diese Rechnung mit jedem Beitrag, und jeder Text verlässt Ihren Server.
Dieser Leitfaden zeigt, wie Sie die kostenlose SuperClonica-Engine aus PHP über einen lokalen HTTP-Server aufrufen: natürliche Stimmen, WAV-Dateien, die Sie behalten, und keine Gebühr pro Anfrage.
Wie PHP sprechen kann
Erzeugen Sie Audio einmal pro Textfassung und liefern Sie es als Datei aus; synthetisieren Sie nicht bei jedem Seitenaufruf.
- Cloud-APIs: natürliche Stimmen, aber Konto, Schlüssel, Abrechnung pro Zeichen und Ihr Text auf fremden Servern.
- SuperClonica: ein lokaler HTTP-Server neben Ihrer Website, mit natürlichen, Figuren- und eigenen Stimmen, offline.
- In beiden Fällen sendet PHP JSON und bekommt Audio zurück; nur die Adresse ändert sich.
- Er spricht 31 Sprachen; Chinesisch wird noch nicht unterstützt.
Die Stimmen gratis anhören
Bevor Sie Code schreiben, öffnen Sie die Seite einer beliebigen Stimme, geben einen Satz mit 30 bis 100 Zeichen ein, wählen die Sprache und klicken auf die Schaltfläche zum Vertonen. In wenigen Sekunden hören Sie die Stimme, die Ihre Website haben könnte, ohne Konto.
Den Sprachserver starten
Eine NVIDIA-Grafikkarte macht es mit dem cuda-Image schneller, ein normaler Prozessor reicht aber.
- Starten Sie den Server auf derselben oder einer privaten Maschine: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu.
- Der erste Start lädt das Modell Supertonic 3, etwa 385 MB, in das Volume; GET /health zeigt, wann er bereit ist.
- POST /synthesize nimmt JSON mit text, voice, lang, seed und normalize und antwortet mit einem 16-Bit-Mono-WAV.
- voice ist ein Standardname von M1 bis M5 und F1 bis F5 oder der dekodierte Inhalt einer Stimmdatei.
Aus PHP aufrufen
Über die Standardfunktionen hinaus ist keine Erweiterung nötig: $voice = json_decode(file_get_contents('voice.json'), true); $body = json_encode(['text' => 'Hallo aus PHP!', 'voice' => $voice, 'lang' => 'de', '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); Dieselbe Anfrage funktioniert mit der cURL-Erweiterung oder einem HTTP-Client wie Guzzle. Für eine Standardstimme übergeben Sie 'voice' => 'F1' statt der dekodierten Datei. Wandeln Sie das WAV mit ffmpeg in MP3 um, wenn Sie kleinere Dateien fürs Web wollen.
WordPress und Produktivbetrieb
Erzeugen Sie das Audio in WordPress aus einem Veröffentlichungs-Hook oder einem Hintergrundjob, speichern Sie es im uploads-Ordner und hängen Sie es an den Beitrag, damit Besucher eine fertige Datei laden, statt auf die Synthese zu warten. Stellen Sie Port 8000 nicht ins Internet: Setzen Sie SUPERCLONICA_API_KEY und senden Sie ihn als Bearer-Token, oder lassen Sie den Server auf localhost. Wählen Sie für Veröffentlichungen eine neutrale Standardstimme, sagen Sie, dass das Audio generiert ist, und halten Sie den geschriebenen Artikel barrierefrei.