Skip to main content

基本的な音声合成

以下の talk.php は、テキストから音声を合成して WAV ファイルに書き出すサンプルです。
PHP FFI は Web サーバー環境(FPM など)では通常無効です。このスクリプトは php talk.php のように CLI から実行してください。
実行:

1 ステップで音声合成(tts メソッド)

createAudioQuery + synthesis の 2 ステップを省略したい場合は tts() メソッドが使えます:

カタカナ記法で音声合成

AquesTalk風のカタカナ記法からも合成できます:

ユーザー辞書を使う

カスタム単語の読みを登録するには UserDict を使います:

AudioQuery の調整

createAudioQuery で取得した JSON を調整してから合成することで、抑揚やテンポなどを細かく制御できます:

アクセント句の取得

テキストのアクセント句情報を取得して確認・編集できます:

GPU モードの使用

GPU が利用可能な環境では AccelerationMode::Gpu を指定すると高速化できます:

複数の音声モデルを使う

複数の .vvm ファイルを読み込んで、スタイル ID を切り替えることで複数のキャラクターボイスを使い分けられます:
同じ ID のモデルがすでに読み込まれている場合の動作は、loadVoiceModel() の第 2 引数に OnExistingVoiceModelId で指定できます。デフォルトの Error は例外をスローし、Reload は再読み込み、Skip は何もしません:

フレーム単位で PCM を生成する

createAudioFeature() で作成した AudioFeature をフレーム範囲ごとに slice() して render() すると、長い文章も少しずつ音声データにできます。以下は約 0.3 秒ずつ PCM を書き出す例です:
render() の出力は WAV ではなく 16-bit PCM の生データです。この方法には VVM v2 モデルが必要です。C API には AudioFeature の作成と範囲 render の機能がありますが、高レベルの streaming_synthesis API はありません。
最終更新日 2026年10月27日