Skip to main content

在 Client 模式讓角色歌唱

Client 模式的歌聲合成使用官方 VOICEVOX 引擎的 sing_frame_audio_queryframe_synthesis API。 與 Talk 不同,需要先建立 ScoreNote

事前準備

建立 ScoreNote

使用 Note::len($ticks, $bpm) 可以從 MIDI 的 ticks 與 BPM 計算 frame length。將四分音符視為 480 ticks 較好理解。

基本用法

teacherid

  • teacher: 傳給 sing_frame_audio_query 的 style ID。目前只有 6000 一個,故預設為 6000。
  • generate(id:): 傳給 frame_synthesis 的 style ID
可用的歌聲 speaker 清單可透過 singers() 取得。

使用 tap() 調整 F0 與音量

Song 中 tap() 的用途特別清楚,可以先調整 SongAudioQuery 後再送入 generate()
若要分別更新 F0 與音量,請依 F0 → 音量 順序執行。
想在變更 Score 後重新同步,tap() 也很方便。
tap() 的觀念已整理於 tap() helper 與 Tappable trait。VOICEVOX for Laravel 是「不改變回傳值,只調整中間物件」的典型範例。

下一步閱讀

Score 與 Note 詳解

確認 frame length 計算與 JSON 管理模式。

Native Song

以 FFI 的 Native 模式使用相同的 Score

VOICEVOX Core for PHP 用法

確認核心 library 單獨的語音合成流程。
最後修改於 2026年8月2日