跳转到主要内容

目的

直接利用 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、秒、帧的转换

在单一速度下按以下方式换算。
在存在速度变化时,将 temposposition 升序累加各区间。
使用 Note::len() helper 将 tick 转换为帧长的实现请参考 Score 与 Note 详解

Song 音频生成流程

直接编辑时的注意事项

  • 必须使 tracks 的键集合与 trackOrder 一致
  • talk.audioKeystalk.audioItems 同样需要保持同步
  • 保持 position >= 0duration >= 1noteNumber 处于 0..127
  • tempos[0].position 通常为 0timeSignatures[0].measureNumber 通常为 1
  • 未知的 key 尽可能保留并重新保存,以避免破坏与未来版本的兼容性

Laravel 代码示例

以下是读取 .vvproj 并生成 Talk 与 Song 的最小示例。
最后修改于 2026年7月18日