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

プラグインの使用方法

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以降のBlueprintでより便利です。ダウンロード済みモデルのドロップダウンリストから音声モデルを選択できます。UE 5.3以前のバージョンではこのドロップダウンは表示されないため、古いバージョンを使用している場合はGetDownloadedVoiceModelsで返される音声モデルの配列を手動で反復処理し、必要なモデルを選択する必要があります。

Blueprintでの名前指定によるText To Speech使用例

オブジェクト別

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) 関数は同じストリーミング機能を提供しますが、音声モデルオブジェクトの参照を受け取ります。

Blueprintsで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 関数を synthesizer インスタンスで呼び出すことでキャンセルできます:

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

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

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

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

スピーカー選択

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

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