Skip to main content

목적

VOICEVOX 에디터의 .vvproj를 그대로 활용해서 Laravel에서 토크·송을 재생성할 수 있게 합니다.

최상위 구조

.vvproj는 UTF-8 JSON입니다. 토크와 송을 같은 파일에 저장합니다.

talk 섹션

talk.audioKeys는 순서 배열, talk.audioItems는 ID를 키로 하는 Record입니다.

TalkAudioItem

.vvprojquery가 저장되어 있으면 /audio_query를 재실행하지 않고 그대로 합성으로 진행할 수 있습니다.

accentPhrases

song 섹션

Track

Note

tick·초·프레임 변환

단일 템포에서는 다음으로 변환합니다.
템포 변경이 있으면 temposposition 오름차순으로 구간 적산합니다.
Note::len() 헬퍼로 tick에서 프레임 길이로 변환하는 구현은 Score와 Note 상세를 참조하세요.

송 음성 생성 흐름

직접 편집 시 주의점

  • tracks의 키 집합과 trackOrder를 반드시 일치시킵니다.
  • talk.audioKeystalk.audioItems도 마찬가지로 동기화합니다.
  • position >= 0, duration >= 1, noteNumber0..127을 유지합니다.
  • tempos[0].position은 통상 0, timeSignatures[0].measureNumber는 통상 1.
  • 알 수 없는 키는 가능하면 유지한 채 재저장하여, 미래 버전과의 호환성을 깨뜨리지 않습니다.

Laravel 코드 예

.vvproj를 읽어 들여 토크와 송을 생성하는 최소 예입니다.
마지막 수정일 2026년 7월 13일