Naar hoofdinhoud gaan

Basale spraaksynthese

Het onderstaande talk.php is een voorbeeld dat spraak synthetiseert uit tekst en wegschrijft naar een WAV-bestand.
PHP FFI is in webserveromgevingen (zoals FPM) doorgaans uitgeschakeld. Voer dit script uit vanuit de CLI, bijvoorbeeld met php talk.php.
Uitvoeren:

Spraaksynthese in één stap (de tts-methode)

Als je de twee stappen createAudioQuery + synthesis wilt overslaan, kun je de tts()-methode gebruiken:

Spraaksynthese met katakana-notatie

Je kunt ook synthetiseren vanuit katakana-notatie in AquesTalk-stijl:

Een gebruikerswoordenboek gebruiken

Gebruik UserDict om de uitspraak van eigen woorden te registreren:

De AudioQuery aanpassen

Door de JSON die je met createAudioQuery hebt opgehaald aan te passen vóór de synthese, kun je intonatie, tempo en dergelijke nauwkeurig regelen:

Accentfrases ophalen

Je kunt de accentfrase-informatie van tekst ophalen om te bekijken en te bewerken:

De GPU-modus gebruiken

In een omgeving met een beschikbare GPU kun je versnellen door AccelerationMode::Gpu op te geven:

Meerdere spraakmodellen gebruiken

Door meerdere .vvm-bestanden te laden en te wisselen van stijl-ID kun je meerdere karakterstemmen naast elkaar gebruiken:
Wat er gebeurt wanneer een model met hetzelfde ID al geladen is, kun je bepalen door een OnExistingVoiceModelId mee te geven als tweede argument van loadVoiceModel(). De standaardwaarde Error gooit een exceptie, Reload laadt het model opnieuw en Skip doet niets:

PCM per frame genereren

Door een met createAudioFeature() aangemaakte AudioFeature per framebereik te slice()-en en te render()-en, kun je ook lange teksten stukje bij beetje omzetten in audiodata. Het onderstaande voorbeeld schrijft PCM weg in stukken van ongeveer 0,3 seconde:
De uitvoer van render() is geen WAV, maar ruwe 16-bit PCM-data. Voor deze methode is een VVM v2-model vereist. De C API biedt functies voor het aanmaken van een AudioFeature en het renderen van een bereik, maar geen high-level streaming_synthesis-API.
Laatst gewijzigd op 27 oktober 2026