Utilizzando la funzionalità dei preset puoi salvare e riutilizzare combinazioni di parametri di sintesi vocale frequenti sul motore ufficiale VOICEVOX. In modalità client i preset non vengono salvati lato Laravel, ma viene utilizzata l’API dei preset gestita dal motore ufficiale a cui ti connetti.
Panoramica
I preset in modalità client vengono manipolati tramite la Facade Voicevox. Internamente, invia richieste HTTP a /presets, /add_preset, /update_preset, /delete_preset, /audio_query_from_preset del motore ufficiale VOICEVOX.
I preset del motore ufficiale sono salvati come presets.yaml nell’area utente specifica per ciascun sistema operativo. Nella build macOS dell’app VOICEVOX (versione stabile), normalmente vengono salvati nel seguente percorso.
Anche se avvii il motore ufficiale con Docker, vengono salvati nell’area utente all’interno del container. Finché continui a utilizzare lo stesso container, i dati vengono mantenuti anche dopo il riavvio. Tuttavia, se crei ogni volta un container temporaneo, ad esempio con docker run --rm, i preset vengono persi al termine del container. Per rendere persistenti i preset in modo affidabile, monta l’area utente all’interno del container tramite un volume Docker.
Questa è una gestione separata dallo storage/voicevox/presets.json della modalità nativa. Il config('voicevox.core.presets') lato Laravel non viene utilizzato in modalità client.
Prerequisiti
Avvia il motore ufficiale VOICEVOX.
Puoi modificare la destinazione con VOICEVOX_URL.
Struttura di un preset
I preset scambiati in modalità client sono array allineati allo schema dell’API del motore ufficiale.
Utilizzo di base
Creazione di un preset
Puoi creare un preset con Voicevox::addPreset(). Nel motore ufficiale, specificando 0 come id, viene assegnato un ID non ancora utilizzato.
Recupero di tutti i preset
Aggiornamento di un preset
Eliminazione di un preset
Sintesi vocale con preset
talkFromPreset()
Voicevox::talkFromPreset() utilizza /audio_query_from_preset del motore ufficiale per creare una TalkAudioQuery con il preset già applicato.
audioQueryFromPreset()
Se vuoi ottenere solo l’array della audio query prima della sintesi, usa audioQueryFromPreset().
Regolazione aggiuntiva con tap()
Anche una TalkAudioQuery creata da un preset può essere regolata con tap() come una normale Voicevox::talk().
Corrispondenza con l’Engine API
Ogni metodo della Facade Voicevox corrisponde all’API del motore ufficiale.
Differenze con la modalità nativa
Esempi pratici
Per narrazione
Per parlato veloce
Dettagli sui parametri
speedScale: 0.5 – 2.0 (velocità di parlato)
pitchScale: -0.15 – 0.15 (pitch)
intonationScale: 0.0 – 2.0 (intonazione)
volumeScale: 0.0 – 2.0 (volume)
prePhonemeLength: 0.0 – 1.5 (silenzio iniziale, in secondi)
postPhonemeLength: 0.0 – 1.5 (silenzio finale, in secondi)
Avvertenze
In modalità client viene aggiornato presets.yaml lato motore ufficiale. Non viene salvato nella storage del progetto Laravel.
- Se crei ogni volta un container temporaneo con
docker run --rm, i preset vengono persi al termine del container.
- Includi sia
speaker_uuid che style_id.
- Quando esegui
generate(id:) su una query creata con talkFromPreset(), normalmente specifica lo stesso ID dello style_id del preset.
Risoluzione dei problemi
Impossibile recuperare i preset
- Verifica che il motore ufficiale VOICEVOX sia in esecuzione.
- Verifica che
VOICEVOX_URL punti alla destinazione corretta.
- Verifica di non aver riavviato un container Docker differente.
Non trovi il file dei preset
Nella build macOS controlla il seguente percorso.
Con Docker vengono salvati nell’area utente (all’interno del container) del motore ufficiale. Se serve persistenza, monta l’area utente all’interno del container su un volume Docker.
Non conosci lo speaker_uuid
Puoi ottenere gli UUID dall’elenco degli speaker.