基本的な音声合成
以下の 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 はありません。