Skip to main content

クライアントモードで歌わせる

クライアントモードの歌声合成では、公式 VOICEVOX エンジンの sing_frame_audio_queryframe_synthesis API を使います。 Talk と違って、先に ScoreNote を組み立てる必要があります。

事前準備

ScoreNote を作る

Note::len($ticks, $bpm) を使うと、MIDI の ticks と BPM からフレーム長を計算できます。四分音符を 480 ticks として扱うと分かりやすいです。

基本的な使い方

teacherid

  • teacher: sing_frame_audio_query に渡すスタイル ID。現状は6000ひとつしか存在しないのでデフォルトで6000。
  • generate(id:): frame_synthesis に渡すスタイル ID
利用可能な歌声スピーカー一覧は singers() で取得できます。

tap() で F0 とボリュームを調整する

Song では tap() の使いどころが特に分かりやすく、SongAudioQuery を調整してから generate() へ流せます。
F0 とボリュームを個別に更新する場合は F0 → ボリューム の順で実行します。
Score を変更してから再同期したいときも tap() が便利です。
tap() の発想は tap() ヘルパーと Tappable トレイト にまとめています。VOICEVOX for Laravel は「戻り値を変えずに中間オブジェクトだけ調整したい」典型例です。

次に読むページ

Score と Note 詳細

フレーム長計算と JSON 管理パターンを確認します。

ネイティブ Song

同じ Score を FFI 経由のネイティブモードで使います。

VOICEVOX Core for PHP 使い方

コアライブラリ単体での音声合成フローを確認します。
最終更新日 2026年5月23日