Skip to main content

Goal

Use VOICEVOX Editor .vvproj data directly in Laravel so you can regenerate both talk and song output.
VOICEVOX is a Japanese text-to-speech and singing synthesis software. This page focuses on interoperability with the official VOICEVOX Editor project file.

Top-level structure

.vvproj is UTF-8 JSON. One file can include both talk and song data.

talk section

talk.audioKeys defines order. talk.audioItems is a record keyed by the same IDs.

TalkAudioItem

If query is already stored in .vvproj, you can skip /audio_query and synthesize directly.

accentPhrases

song section

Track

Note

Tick/seconds/frame conversion

For a single tempo:
With tempo changes, sum each segment in tempos order:
For Note::len() helper usage (tick-to-frame workflow), see Score and Note Deep Dive.

Song synthesis flow

Notes for direct JSON editing

  • Keep tracks keys and trackOrder perfectly aligned
  • Keep talk.audioKeys aligned with talk.audioItems
  • Validate position >= 0, duration >= 1, noteNumber in 0..127
  • Prefer tempos[0].position = 0 and timeSignatures[0].measureNumber = 1
  • Preserve unknown keys when possible for forward compatibility

Laravel code example

Minimal example to load .vvproj and render both talk and song outputs:
Last modified on May 28, 2026