Vocalizer ist eine native PHP-Erweiterung von Akram Zerarka, die Text-to-Speech lokal in PHP ermöglicht, ohne Cloud-APIs oder Laufzeitabhängigkeiten. Sie bindet zwei Inference-Engines ein – sherpa-onnx (ONNX Runtime) und audio.cpp (ggml) – und wird als vorkompiliertes .so-Binary ausgeliefert, sodass nichts selbst kompiliert werden muss. Der Artikel von Paul Redmond auf Laravel News vom 16. Juli 2026 zeigt PHP-Entwicklern, warum sich die Erweiterung für sprachbasierte Anwendungen lohnt.
Ein einziger Aufruf von Engine::load() zeigt auf ein Modellverzeichnis und erkennt automatisch eine von acht unterstützten Familien: Chatterbox, Supertonic, Piper/VITS, Pocket, Kokoro, Kitten, Matcha und ZipVoice. Die Synthese erfolgt mit einem speak()-Aufruf, dessen Ergebnis als WAV-Datei, WAV-String oder float32-PCM abgerufen werden kann. Chatterbox ist die leistungsfähigste Option: ein einzelnes ~7,5 GB großes Modell deckt 23 Sprachen ab und klont eine Stimme aus einer 3–10 Sekunden langen Referenz-WAV. Ein Anti-Halluzinationsschutz prüft die Ausgabe auf übersprungenen Text, Schleifen oder Stille und synthetisiert bei Verdacht mit einem neuen Seed neu, standardmäßig mit zwei Wiederholungen, bevor eine Vocalizer\Exception geworfen wird. Supertonic 3 ist für Echtzeit-Synthese in 31 Sprachen gedacht, Pocket TTS ist leichtgewichtig für FR/EN-Cloning, und Piper/VITS ist das schnellste Modell mit einem Modell pro Sprache.
Robustheit ist für den Produktiveinsatz vorgesehen. Modelle werden pro PHP-Worker mit LRU-Eviction gecacht, und die Synthese läuft standardmäßig im Fork-Modus, sodass ein Absturz der Engine abgefangen und wiederholt wird, ohne den FPM-Worker zu beenden. Chatterbox ist die Ausnahme, da sein ggml-Thread-Pool nicht fork-sicher ist, und läuft daher immer direkt. Zusätzlich gibt es speakAsync() für Synthese außerhalb des Requests, php.ini-Einstellungen für Isolation, Timeout, max_models und max_concurrency sowie Timeouts pro Aufruf.
Die Installation erfolgt über ein curl-Skript, das die ~44 MB große vorkompilierte Erweiterung herunterlädt und per SHA256 verifiziert. Voraussetzungen sind Linux x86-64 mit glibc ≥ 2.28 und PHP 8.4 oder 8.5 NTS; Alpine/musl, ARM und ZTS werden nicht unterstützt. Modelle werden separat geladen, darunter Chatterbox mit ~7,5 GB und Supertonic 3 mit ~120 MB. Die Erweiterung steht unter MIT-Lizenz und bindet statisch sherpa-onnx (Apache-2.0), audio.cpp/ggml (MIT), ONNX Runtime (MIT) und espeak-ng (GPL-3.0-Phonemisierungsdaten) ein.