목적
VOICEVOX 에디터의.vvproj를 그대로 활용해서 Laravel에서 토크·송을 재생성할 수 있게 합니다.
최상위 구조
.vvproj는 UTF-8 JSON입니다. 토크와 송을 같은 파일에 저장합니다.
talk 섹션
talk.audioKeys는 순서 배열, talk.audioItems는 ID를 키로 하는 Record입니다.
TalkAudioItem
.vvproj에 query가 저장되어 있으면 /audio_query를 재실행하지 않고 그대로 합성으로 진행할 수 있습니다.
accentPhrases
song 섹션
Track
Note
tick·초·프레임 변환
단일 템포에서는 다음으로 변환합니다.tempos를 position 오름차순으로 구간 적산합니다.
Note::len() 헬퍼로 tick에서 프레임 길이로 변환하는 구현은 Score와 Note 상세를 참조하세요.
송 음성 생성 흐름
직접 편집 시 주의점
tracks의 키 집합과trackOrder를 반드시 일치시킵니다.talk.audioKeys와talk.audioItems도 마찬가지로 동기화합니다.position >= 0,duration >= 1,noteNumber는0..127을 유지합니다.tempos[0].position은 통상0,timeSignatures[0].measureNumber는 통상1.- 알 수 없는 키는 가능하면 유지한 채 재저장하여, 미래 버전과의 호환성을 깨뜨리지 않습니다.
Laravel 코드 예
.vvproj를 읽어 들여 토크와 송을 생성하는 최소 예입니다.