メインコンテンツへスキップ

ネイティブモードで歌わせる

ネイティブモードの歌声合成では、PHP FFI で VOICEVOX CORE を直接呼び出します。 ScoreNote の組み立て方はクライアントモードと共通です。

事前準備

  1. インストールと設定 を完了していること
  2. VOICEVOX Core for PHP をセットアップ済みであること
  3. .envVOICEVOX_CORE_PATH を設定していること
VOICEVOX_CORE_PATH=/path/to/voicevox_core/
歌声モデルを使うには config/voicevox.phpcore.vvmss0.vvm が含まれていることを確認してください。

ScoreNote を作る

use Revolution\Voicevox\Song\Note;
use Revolution\Voicevox\Song\Score;

$score = Score::make([
    Note::make(length: 15),
    Note::make(length: Note::len(ticks: 480, bpm: 120), lyric: 'ド', key: 60),
    Note::make(length: Note::len(480, 120), lyric: 'レ', key: 62),
    Note::make(length: Note::len(960, 120), lyric: 'ミ', key: 64),
    Note::make(length: 2),
]);

基本的な使い方

use Revolution\Voicevox\Song\Note;
use Revolution\Voicevox\Song\Score;
use function Revolution\Voicevox\song;

$score = Score::make([
    Note::make(length: 15),
    Note::make(length: Note::len(480, 120), lyric: 'ド', key: 60),
    Note::make(length: Note::len(480, 120), lyric: 'レ', key: 62),
    Note::make(length: Note::len(960, 120), lyric: 'ミ', key: 64),
    Note::make(length: 2),
]);

$response = song($score, teacher: 6000)
    ->generate(id: 3001);

$response->storeAs('native', 'song.wav');
同じ Score を使えば、クライアントモードとネイティブモードで共通の譜面を流用できます。

tap() で F0 とボリュームを再同期する

ネイティブ Song でも tap() が役立ちます。SongAudioQuery を調整したあと、そのまま generate() に流せます。
use Revolution\Voicevox\Song\SongAudioQuery;
use function Revolution\Voicevox\song;

$response = song($score, teacher: 6000)
    ->tap(function (SongAudioQuery $song) {
        $song->sync();
    })
    ->generate(id: 3001);
F0 とボリュームを個別に更新する場合は、必ず次の順に実行します。
->tap(function (SongAudioQuery $song) {
    $song->updateF0();
    $song->updateVolume();
})

クライアントモードとの違い

項目クライアント Songネイティブ Song
エンジン起動必要不要
FFI不要必要
API 入口Voicevox::song()song()
Score / Note共通共通
FFI の仕組みは PHP FFI、コアライブラリ単体の流れは VOICEVOX Core for PHP 使い方 を参照してください。

次に読むページ

Score と Note 詳細

Song 楽譜データの実用的な管理方法を確認します。

クライアント Song

HTTP クライアント版との違いを比較します。

VOICEVOX for Laravel 概要

各モードと関連ページをまとめて確認します。
最終更新日 2026年5月23日