Skip to main content

Obiettivo

Sfruttare direttamente i file .vvproj dell’editor VOICEVOX per rigenerare talk e song in Laravel.

Struttura di primo livello

.vvproj è JSON in UTF-8. Talk e song sono salvati nello stesso file.

Sezione talk

talk.audioKeys è un array ordinato, talk.audioItems è un Record con l’ID come chiave.

TalkAudioItem

Se .vvproj contiene già query, puoi passare direttamente alla sintesi senza rieseguire /audio_query.

accentPhrases

Sezione song

Track

Note

Conversione tra tick, secondi e frame

Con tempo unico si converte così:
Con cambi di tempo, somma i segmenti scorrendo tempos in ordine crescente di position.
Per l’implementazione della conversione da tick a lunghezza di frame con l’helper Note::len(), consulta Dettagli di Score e Note.

Flusso di generazione audio per il song

Attenzioni nella modifica diretta

  • L’insieme delle chiavi di tracks deve sempre coincidere con trackOrder
  • Analogamente sincronizza talk.audioKeys e talk.audioItems
  • Mantieni position >= 0, duration >= 1 e noteNumber in 0..127
  • Di solito tempos[0].position è 0 e timeSignatures[0].measureNumber è 1
  • Se possibile, conserva le chiavi sconosciute nel risalvataggio per non rompere la compatibilità con versioni future

Esempio in codice Laravel

Esempio minimo per caricare un .vvproj e generare talk e song.
Ultima modifica il 13 luglio 2026