プラグインの使用方法
Runtime Text To Speechプラグインは、ダウンロード可能な音声モデルを使用してテキストを音声に合成します。これらのモデルはエディタ内のプラグイン設定で管理され、ダウンロード後、ランタイム使用のためにパッケージ化されます。以下の手順に従って開始してください。
エディタ側
プロジェクトに適した音声モデルをこちらの説明に従ってダウンロードします。複数の音声モデルを同時にダウンロードできます。
ランタイム側
CreateRuntimeTextToSpeech
関数を使用してシンセサイザーを作成します。ガベージコレクションされないようにするため(例:Blueprintsでは別の変数として、C++ではUPROPERTYとして)、その参照を保持するようにしてください。
- Blueprint
- C++
// Create the Runtime Text To Speech synthesizer in C++
URuntimeTextToSpeech* Synthesizer = URuntimeTextToSpeech::CreateRuntimeTextToSpeech();
// Ensure the synthesizer is referenced correctly to prevent garbage collection (e.g. as a UPROPERTY)
音声合成
このプラグインは2種類のテキスト音声合成モードを提供します:
- 通常のテキスト音声合成:テキスト全体を合成し、完了時に完全なオーディオを返します
- ストリーミングテキスト音声合成:生成されたオーディオチャンクをリアルタイムで提供し、リアルタイム処理を可能にします
各モードは音声モデルを選択する2つの方法をサポートしています:
- 名前指定:音声モデルを名前で選択(UE 5.4+推奨)
- オブジェクト指定:音声モデルを直接参照で選択(UE 5.3以前推奨)
通常のテキスト音声合成
名前指定
- Blueprint
- C++
Text To Speech (By Name)
関数はUE 5.4以降のBlueprintでより便利です。ダウンロード済みモデルのドロップダウンリストから音声モデルを選択できます。UE 5.3以前のバージョンではこのドロップダウンは表示されないため、古いバージョンを使用している場合はGetDownloadedVoiceModels
で返される音声モデルの配列を手動で反復処理し、必要なモデルを選択する必要があります。
C++では、ドロップダウンリストがないため音声モデルの選択が若干複雑になる場合があります。GetDownloadedVoiceModelNames
関数を使用してダウンロード済み音声モデルの名前を取得し、必要なモデルを選択できます。その後、TextToSpeechByName
関数を呼び出して選択した音声モデル名を使用してテキストを合成できます。
// Assuming "Synthesizer" is a valid and referenced URuntimeTextToSpeech object (ensure it is not eligible for garbage collection during the callback)
TArray<FName> DownloadedVoiceNames = URuntimeTTSLibrary::GetDownloadedVoiceModelNames();
// If there are downloaded voice models, use the first one to synthesize text, just as an example
if (DownloadedVoiceNames.Num() > 0)
{
const FName& VoiceName = DownloadedVoiceNames[0]; // Select the first available voice model
Synthesizer->TextToSpeechByName(VoiceName, 0, TEXT("Text example 123"), FOnTTSResultDelegateFast::CreateLambda([](URuntimeTextToSpeech* TextToSpeechInstance, bool bSuccess, const TArray<uint8>& AudioData, int32 SampleRate, int32 NumChannels)
{
UE_LOG(LogTemp, Log, TEXT("TextToSpeech result: %s, AudioData size: %d, SampleRate: %d, NumChannels: %d"), bSuccess ? TEXT("Success") : TEXT("Failed"), AudioData.Num(), SampleRate, NumChannels);
}));
return;
}