目的
直接利用 VOICEVOX 编辑器的.vvproj,让 Laravel 能重新生成 Talk / Song。
顶层结构
.vvproj 是 UTF-8 JSON。Talk 与 Song 保存在同一个文件中。
talk 部分
talk.audioKeys 是有序数组,talk.audioItems 是以 ID 为键的 Record。
TalkAudioItem
如果
.vvproj 已保存有 query,则可以不再执行 /audio_query,直接进入合成。
accentPhrases
song 部分
Track
Note
tick、秒、帧的转换
在单一速度下按以下方式换算。tempos 按 position 升序累加各区间。
Note::len() helper 将 tick 转换为帧长的实现请参考 Score 与 Note 详解。
Song 音频生成流程
直接编辑时的注意事项
- 必须使
tracks的键集合与trackOrder一致 talk.audioKeys与talk.audioItems同样需要保持同步- 保持
position >= 0、duration >= 1、noteNumber处于0..127 tempos[0].position通常为0,timeSignatures[0].measureNumber通常为1- 未知的 key 尽可能保留并重新保存,以避免破坏与未来版本的兼容性
Laravel 代码示例
以下是读取.vvproj 并生成 Talk 与 Song 的最小示例。