Vocalizer est une extension PHP native créée par Akram Zerarka qui apporte la synthèse vocale locale à PHP, sans API cloud ni dépendances d'exécution. Elle intègre deux moteurs d'inférence — sherpa-onnx (ONNX Runtime) et audio.cpp (ggml) — et est distribuée sous forme de binaire .so précompilé, ce qui évite toute compilation. L'article de Paul Redmond publié sur Laravel News le 16 juillet 2026 explique aux développeurs PHP pourquoi cette extension mérite l'attention pour des applications avec voix.
Un simple appel à Engine::load() pointe vers un répertoire de modèles et détecte automatiquement l'une des huit familles prises en charge : Chatterbox, Supertonic, Piper/VITS, Pocket, Kokoro, Kitten, Matcha et ZipVoice. La synthèse se fait via un appel unique à speak(), dont le résultat peut être enregistré en WAV, renvoyé en tant que chaîne WAV ou lu en PCM float32. Chatterbox est l'option la plus puissante : un seul modèle d'environ 7,5 Go couvre 23 langues et clone une voix à partir d'un WAV de référence de 3 à 10 secondes. Une protection anti-hallucination vérifie la sortie pour détecter du texte sauté, des boucles ou du silence, et resynthétise avec une nouvelle graine si nécessaire, avec deux tentatives par défaut avant de lever une Vocalizer\Exception. Supertonic 3 vise la synthèse multilingue en temps réel (31 langues), Pocket TTS est léger pour le clonage FR/EN, et Piper/VITS est le plus rapide avec un modèle par locale.
La robustesse est pensée pour la production. Les modèles sont mis en cache par worker PHP avec éviction LRU, et la synthèse s'exécute par défaut en mode fork pour qu'un crash du moteur soit rattrapé et réessayé sans tuer le worker FPM. Chatterbox est l'exception, car son pool de threads ggml n'est pas compatible avec fork, il s'exécute donc toujours en mode direct. On trouve aussi speakAsync() pour la synthèse hors requête, des directives php.ini pour isolation, timeout, max_models et max_concurrency, ainsi que des timeouts par appel.
L'installation se fait par un script curl qui télécharge l'extension précompilée d'environ 44 Mo et la vérifie via SHA256. Les prérequis sont Linux x86-64 avec glibc ≥ 2.28 et PHP 8.4 ou 8.5 NTS ; Alpine/musl, ARM et ZTS ne sont pas supportés. Les modèles se téléchargent séparément, dont Chatterbox (~7,5 Go) et Supertonic 3 (~120 Mo). L'extension est sous licence MIT et lie statiquement sherpa-onnx (Apache-2.0), audio.cpp/ggml (MIT), ONNX Runtime (MIT) et espeak-ng (données de phonémisation GPL-3.0).