メインコンテンツまでスキップ

プラグインの使用方法

Runtime Text To Speech プラグインは、ダウンロード可能な音声モデルを使用してテキストを音声に合成します。これらのモデルは、エディタ内のプラグイン設定で管理され、ダウンロードされ、ランタイム使用のためにパッケージ化されます。以下の手順に従って開始してください。

エディタ側

こちらで説明されているように、プロジェクトに適した音声モデルをダウンロードしてください。複数の音声モデルを同時にダウンロードすることができます。

ランタイム側

CreateRuntimeTextToSpeech 関数を使用してシンセサイザーを作成します。ガベージコレクションによって破棄されないように、その参照を維持することを確認してください(例:Blueprints では別の変数として、C++ では UPROPERTY として)。

Blueprints で Runtime Text To Speech シンセサイザーを作成する例

音声合成

このプラグインは2つのテキスト読み上げ合成モードを提供します:

  1. 通常のテキスト読み上げ: テキスト全体を合成し、完了時に完全なオーディオを返します
  2. ストリーミングテキスト読み上げ: 生成されたオーディオチャンクをリアルタイムで提供し、リアルタイム処理を可能にします

各モードは音声モデルを選択するための2つの方法をサポートしています:

  • 名前による選択: 音声モデルを名前で選択します(UE 5.4+で推奨)
  • オブジェクトによる選択: 音声モデルを直接参照で選択します(UE 5.3以前で推奨)

通常のテキスト読み上げ

名前による選択

Text To Speech (By Name) 関数は、UE 5.4 以降の Blueprints でより便利です。ダウンロードされたモデルのドロップダウンリストから音声モデルを選択できます。UE 5.3 以下のバージョンでは、このドロップダウンは表示されないため、古いバージョンを使用している場合は、GetDownloadedVoiceModels によって返される音声モデルの配列を手動で反復処理して、必要なモデルを選択する必要があります。

Blueprintでの名前によるテキスト読み上げの使用例

オブジェクト指定

Text To Speech (By Object) 関数は Unreal Engine の全バージョンで動作しますが、音声モデルをアセット参照のドロップダウンリストとして表示するため、直感的ではありません。この方法は UE 5.3 以前、または何らかの理由でプロジェクトが音声モデルアセットへの直接参照を必要とする場合に適しています。

Blueprint での Text To Speech by Object の使用例

モデルをダウンロードしたのに表示されない場合は、Voice Model ドロップダウンを開き、設定(歯車アイコン)をクリックして、Show Plugin ContentShow Engine Content の両方を有効にするとモデルが表示されます。

ストリーミング テキスト読み上げ

長いテキストの場合や、生成されたオーディオデータをリアルタイムで処理したい場合には、ストリーミング版の Text-to-Speech 関数を使用できます:

  • Streaming Text To Speech (By Name) (C++ では StreamingTextToSpeechByName)
  • Streaming Text To Speech (By Object) (C++ では StreamingTextToSpeechByObject)

これらの関数は、生成される際にオーディオデータをチャンク単位で提供するため、合成全体が完了するのを待たずに即座に処理を行うことができます。これは、リアルタイムのオーディオ再生、ライブでの可視化、または音声データを段階的に処理する必要があるあらゆるシナリオで有用です。

名前によるストリーミング

Streaming Text To Speech (By Name) 関数は通常版と同様に動作しますが、On Speech Chunk デリゲートを通じてオーディオをチャンク単位で提供します。

Blueprint での Streaming Text To Speech by Name の使用例

オブジェクトによるストリーミング

Streaming Text To Speech (By Object) 関数は同じストリーミング機能を提供しますが、ボイスモデルのオブジェクト参照を受け取ります。

BlueprintでのStreaming Text To Speech by Objectの使用例

オーディオ再生

通常の(ストリーミングではない)テキスト読み上げの場合、On Speech Result デリゲートは、合成されたオーディオを PCM データ(float 形式、Blueprints ではバイト配列、C++ では TArray<uint8> として)と、Sample Rate および Num Of Channels を提供します。

再生には、Runtime Audio Importer プラグインを使用して生のオーディオデータを再生可能なサウンドウェーブに変換することを推奨します。

以下は、テキストを合成しオーディオを再生する Blueprint ノードの例です(コピー可能なノード):

テキスト読み上げのキャンセル

進行中のテキスト読み上げ合成操作は、いつでもシンセサイザーインスタンスの CancelSpeechSynthesis 関数を呼び出すことでキャンセルできます:

Cancelling Text To Speech in Blueprints

音声合成がキャンセルされた場合:

  • 音声合成プロセスは可能な限り速やかに停止します
  • 進行中のコールバックは終了されます
  • 完了デリゲートは bSuccess = false と、合成がキャンセルされたことを示すエラーメッセージを伴って呼び出されます
  • 合成のために割り当てられたリソースは適切にクリーンアップされます

これは長文テキストの場合や、新しい合成を開始するために再生を中断する必要がある場合に特に便利です。

スピーカー選択

両方の Text To Speech 関数は、オプションのスピーカーIDパラメータを受け入れます。これは複数のスピーカーをサポートする音声モデルを使用する場合に便利です。選択した音声モデルが複数のスピーカーをサポートしているかどうかを確認するには、GetSpeakerCountFromVoiceModel または GetSpeakerCountFromModelName 関数を使用できます。複数のスピーカーが利用可能な場合、Text To Speech 関数を呼び出す際に希望するスピーカーIDを指定するだけです。一部の音声モデルは広範なバラエティを提供します - 例えば、English LibriTTS には900人以上の異なるスピーカーから選択できます。

Runtime Audio Importer プラグインは、オーディオデータをファイルにエクスポートしたり、SoundCueやMetaSoundなどに渡すといった追加機能も提供します。詳細については、Runtime Audio Importer ドキュメントを確認してください。