Skip to main content

Objectif

Utiliser tel quel le .vvproj de l’éditeur VOICEVOX pour regénérer Talk et Song depuis Laravel.

Structure de haut niveau

.vvproj est un JSON UTF-8. Il conserve Talk et Song dans un même fichier.

Section talk

talk.audioKeys est un tableau ordonné ; talk.audioItems est un Record indexé par ID.

TalkAudioItem

Si query est déjà stocké dans le .vvproj, on peut passer directement à la synthèse sans réexécuter /audio_query.

accentPhrases

Section song

Track

Note

Conversion tick / seconde / frame

Avec un tempo unique, la conversion est la suivante.
Avec plusieurs tempos, cumulez les segments en parcourant tempos par position croissant.
Pour l’implémentation de la conversion de ticks vers une longueur en frames via le helper Note::len(), consultez Détails Score et Note.

Flux de génération de la voix Song

Précautions pour l’édition directe

  • Faites toujours correspondre l’ensemble des clés de tracks et trackOrder
  • Synchronisez de la même manière talk.audioKeys et talk.audioItems
  • Respectez position >= 0, duration >= 1 et noteNumber dans 0..127
  • Habituellement tempos[0].position vaut 0 et timeSignatures[0].measureNumber vaut 1
  • Conservez si possible les clés inconnues à la réécriture pour ne pas casser la compatibilité avec les versions futures

Exemple de code Laravel

Exemple minimal pour charger un .vvproj et générer Talk et Song.
Dernière modification le 13 juillet 2026