Vai al contenuto principale

Sintesi vocale di base

Il seguente talk.php è un esempio che sintetizza audio dal testo e lo scrive in un file WAV.
PHP FFI è normalmente disabilitato negli ambienti server Web (come FPM). Esegui questo script da CLI, ad esempio con php talk.php.
Esecuzione:

Sintesi in un solo passo (metodo tts)

Se vuoi evitare i due passaggi createAudioQuery + synthesis, puoi usare il metodo tts():

Sintesi da notazione katakana

È possibile sintetizzare anche partendo da una notazione katakana in stile AquesTalk:

Usare il dizionario utente

Per registrare la lettura di parole personalizzate, usa UserDict:

Regolare l’AudioQuery

Regolando il JSON ottenuto con createAudioQuery prima di sintetizzare, puoi controllare finemente intonazione, ritmo, ecc.:

Ottenere le frasi accentate

Puoi ottenere le informazioni sulle frasi accentate del testo per verificarle o modificarle:

Usare la modalità GPU

Negli ambienti in cui è disponibile una GPU, specificare AccelerationMode::Gpu velocizza l’esecuzione:

Usare più modelli vocali

Caricando più file .vvm e cambiando l’ID di stile puoi utilizzare più voci di personaggi diversi:
Per controllare il comportamento quando un modello con lo stesso ID è già caricato, passa un OnExistingVoiceModelId come secondo argomento di loadVoiceModel(). Il valore predefinito Error genera un’eccezione, Reload ricarica il modello e Skip non fa nulla:

Rendering PCM per frame

Crea un AudioFeature con createAudioFeature(), poi suddividilo per intervalli di frame con slice() ed esegui render() su ciascuna porzione per convertire un testo lungo in audio un pezzo alla volta. Questo esempio scrive il PCM in blocchi di circa 0,3 secondi:
render() restituisce PCM grezzo a 16 bit, non un file WAV. Questo percorso richiede un modello VVM v2. L’API C espone la creazione di AudioFeature e il rendering per intervalli, ma non l’API di livello superiore streaming_synthesis.
Ultima modifica il 27 ottobre 2026