プラグインの使用方法
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)
シンセサイザーが作成されると、以下の関数のいずれかを呼び出してテキストを合成できます。
Text To Speech (By Name)
(TextToSpeechByName
in C++)Text To Speech (By Object)
(TextToSpeechByObject
in C++)
名前で
- 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([](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;
}