Skip to main content

Objetivo

Aprovechar tal cual el .vvproj del editor VOICEVOX para poder regenerar talk y canciones desde Laravel.

Estructura del nivel superior

.vvproj es JSON en UTF-8. Talk y song se guardan en el mismo archivo.

Sección talk

talk.audioKeys es un array ordenado y talk.audioItems es un Record indexado por ID.

TalkAudioItem

Si el .vvproj ya tiene query guardada, puedes saltarte /audio_query y sintetizar directamente.

accentPhrases

Sección song

Track

Note

Conversión tick / segundo / frame

Con un tempo único, se convierte así:
Con cambios de tempo, se integra por tramos usando tempos en orden ascendente de position.
Para la implementación que convierte de ticks a longitud de frame con el helper Note::len(), consulta Detalle de Score y Note.

Flujo de generación de audio de canción

Precauciones al editar directamente

  • El conjunto de claves de tracks y trackOrder deben coincidir siempre
  • Sincroniza también talk.audioKeys con talk.audioItems
  • Mantén position >= 0, duration >= 1 y noteNumber en 0..127
  • tempos[0].position suele ser 0 y timeSignatures[0].measureNumber suele ser 1
  • Si es posible, conserva las claves desconocidas al volver a guardar, para no romper la compatibilidad con versiones futuras

Ejemplo de código Laravel

Ejemplo mínimo que lee un .vvproj y genera talk y canción.
Última modificación el 13 de julio de 2026