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

ネイティブモードとは

ネイティブモードは、VOICEVOX Core for PHP を通して VOICEVOX CORE を PHP FFI から直接呼び出します。 公式エンジンを起動しなくても合成できますが、FFI とローカルライブラリのセットアップが必要です。
ネイティブモードは Web サーバー向けではありません。ローカル CLI で利用してください。FFI の制約は PHP FFI でも説明しています。

事前準備

  1. インストールと設定 を完了していること
  2. VOICEVOX Core for PHP のセットアップを完了していること
  3. .envVOICEVOX_CORE_PATH を設定していること
VOICEVOX_CORE_PATH=/path/to/voicevox_core/

基本的な使い方

ネイティブモードでは talk() ヘルパーを使います。
use function Revolution\Voicevox\talk;

$response = talk('ネイティブ版なのだ', id: 1)
    ->generate(id: 1);

$response->storeAs('native', 'talk.wav');

スタイル ID の指定

id には読み込み済みの .vvm に含まれるスタイル ID を指定します。
use function Revolution\Voicevox\talk;

$response = talk('ずんだもんなのだ', id: 1)
    ->generate(id: 1);
config/voicevox.phpcore.vvms に含まれるモデルだけが使えます。

tap() で Audio Query を調整する

ネイティブモードでも tap() の使い方は同じです。ただし TalkAudioQuery はクライアントモードとは別クラスです。
use Revolution\Voicevox\Talk\TalkAudioQuery;
use function Revolution\Voicevox\talk;

$response = talk('速めに話すのだ', id: 1)
    ->tap(function (TalkAudioQuery $talk) {
        $talk->audioQuery['speedScale'] = 1.2;
        $talk->audioQuery['pitchScale'] = 0.05;
        $talk->audioQuery['intonationScale'] = 1.5;
        $talk->audioQuery['volumeScale'] = 1.0;
    })
    ->generate(id: 1);
tap() のパターン自体は tap() ヘルパーと Tappable トレイト に整理しています。VOICEVOX for Laravel はその実践例です。

AquesTalk 風記法のカナを使う

ネイティブモードには enable_katakana_english がないため、英語混じりの入力をそのまま読む用途には向きません。 代わりに AquesTalk 風記法のカナを直接渡す kana() を使えます。
use function Revolution\Voicevox\kana;

$response = kana("ネイティブ'バンナ/ノダ'", id: 1)
    ->generate(id: 1);

$response->storeAs('native', 'kana.wav');

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

項目クライアント Talkネイティブ Talk
エンジン起動必要不要
FFI不要必要
英語の自動カタカナ変換ありなし
API 入口Voicevox::talk()talk()

次に読むページ

ネイティブ Song

歌声モデルを FFI 経由で扱います。

VOICEVOX Core for PHP

純粋な PHP ラッパー側のセットアップと制約を確認します。
最終更新日 2026年5月21日