Zum Hauptinhalt springen

So verwenden Sie das Plugin

Das Runtime Text To Speech Plugin synthetisiert Text in Sprache unter Verwendung von herunterladbaren Sprachmodellen. Diese Modelle werden in den Plugineinstellungen innerhalb des Editors verwaltet, heruntergeladen und für die Laufzeitnutzung verpackt. Befolgen Sie die folgenden Schritte, um zu beginnen.

Editor-Seite

Laden Sie die entsprechenden Sprachmodelle für Ihr Projekt herunter, wie hier beschrieben. Sie können mehrere Sprachmodelle gleichzeitig herunterladen.

Laufzeit-Seite

Erstellen Sie den Synthesizer mit der Funktion CreateRuntimeTextToSpeech. Stellen Sie sicher, dass Sie eine Referenz darauf beibehalten (z.B. als separate Variable in Blueprints oder UPROPERTY in C++), um zu verhindern, dass er vom Garbage Collector entfernt wird.

Ein Beispiel für die Erstellung eines Runtime Text To Speech Synthesizers in Blueprints

Sprachsynthese

Das Plugin bietet zwei Modi für die Text-zu-Sprache-Synthese:

  1. Reguläre Text-zu-Sprache-Synthese: Synthetisiert den gesamten Text und gibt die vollständige Audioausgabe zurück, wenn sie fertig ist
  2. Streaming Text-zu-Sprache-Synthese: Liefert Audioblöcke, sobald sie generiert werden, und ermöglicht so eine Echtzeitverarbeitung

Jeder Modus unterstützt zwei Methoden zur Auswahl von Sprachmodellen:

  • Nach Name: Wählen Sie ein Sprachmodell anhand seines Namens aus (empfohlen für UE 5.4+)
  • Nach Objekt: Wählen Sie ein Sprachmodell durch direkten Verweis aus (empfohlen für UE 5.3 und früher)

Reguläre Text-zu-Sprache-Synthese

Nach Name

Die Funktion Text To Speech (By Name) ist in Blueprints ab UE 5.4 bequemer. Sie ermöglicht es Ihnen, Sprachmodelle aus einer Dropdown-Liste der heruntergeladenen Modelle auszuwählen. In UE-Versionen unter 5.3 erscheint diese Dropdown-Liste nicht. Wenn Sie also eine ältere Version verwenden, müssen Sie manuell über das Array der von GetDownloadedVoiceModels zurückgegebenen Sprachmodelle iterieren, um das gewünschte auszuwählen.

Ein Beispiel für die Verwendung von Text To Speech by Name in Blueprints

Nach Objekt

Die Text To Speech (By Object)-Funktion funktioniert in allen Versionen der Unreal Engine, stellt die Sprachmodelle jedoch als Dropdown-Liste von Asset-Referenzen dar, was weniger intuitiv ist. Diese Methode eignet sich für UE 5.3 und früher oder wenn Ihr Projekt aus irgendeinem Grund eine direkte Referenz auf ein Sprachmodell-Asset erfordert.

Ein Beispiel für die Verwendung von Text To Speech by Object in Blueprints

Wenn Sie die Modelle heruntergeladen haben, sie aber nicht sehen können, öffnen Sie das Dropdown-Menü Voice Model, klicken Sie auf die Einstellungen (Zahnradsymbol) und aktivieren Sie sowohl Show Plugin Content als auch Show Engine Content, um die Modelle sichtbar zu machen.

Streaming Text-to-Speech

Für längere Texte oder wenn Sie Audiodaten in Echtzeit verarbeiten möchten, während sie generiert werden, können Sie die Streaming-Versionen der Text-to-Speech-Funktionen verwenden:

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

Diese Funktionen liefern Audiodaten in Chunks, während sie generiert werden, was eine sofortige Verarbeitung ermöglicht, ohne auf den Abschluss der gesamten Synthese warten zu müssen. Dies ist nützlich für verschiedene Anwendungen wie Echtzeit-Audiowiedergabe, Live-Visualisierung oder jedes Szenario, in dem Sie Sprachdaten inkrementell verarbeiten müssen.

Streaming By Name

Die Streaming Text To Speech (By Name)-Funktion funktioniert ähnlich wie die reguläre Version, liefert jedoch Audio in Chunks über den On Speech Chunk-Delegate.

An example of using Streaming Text To Speech by Name in Blueprints

Streaming Nach Objekt

Die Funktion Streaming Text To Speech (By Object) bietet die gleiche Streaming-Funktionalität, benötigt jedoch eine Objektreferenz auf ein Sprachmodell.

Ein Beispiel für die Verwendung von Streaming Text To Speech by Object in Blueprints

Audio-Wiedergabe

Für reguläre (nicht-streaming) Text-to-Speech bietet der On Speech Result-Delegate das synthetisierte Audio als PCM-Daten im Float-Format (als Byte-Array in Blueprints oder TArray<uint8> in C++), zusammen mit der Sample Rate und Num Of Channels.

Für die Wiedergabe wird empfohlen, das Runtime Audio Importer-Plugin zu verwenden, um Roh-Audiodaten in eine abspielbare Soundwelle umzuwandeln.

Hier ist ein Beispiel, wie die Blueprint-Nodes für die Text-Synthese und das Abspielen des Audios aussehen könnten (Kopierbare Nodes):

Text-to-Speech abbrechen

Sie können einen laufenden Text-to-Speech-Synthesevorgang jederzeit abbrechen, indem Sie die Funktion CancelSpeechSynthesis auf Ihrer Synthesizer-Instanz aufrufen:

Text To Speech in Blueprints abbrechen

Wenn eine Synthese abgebrochen wird:

  • Der Syntheseprozess wird so schnell wie möglich gestoppt
  • Alle laufenden Callbacks werden beendet
  • Der Abschluss-Delegat wird mit bSuccess = false und einer Fehlermeldung aufgerufen, die anzeigt, dass die Synthese abgebrochen wurde
  • Alle für die Synthese zugewiesenen Ressourcen werden ordnungsgemäß bereinigt

Dies ist besonders nützlich für lange Texte oder wenn Sie die Wiedergabe unterbrechen müssen, um eine neue Synthese zu starten.

Sprecherauswahl

Beide Text To Speech-Funktionen akzeptieren einen optionalen Sprecher-ID-Parameter, der nützlich ist, wenn Sie mit Sprachmodellen arbeiten, die mehrere Sprecher unterstützen. Sie können die Funktionen GetSpeakerCountFromVoiceModel oder GetSpeakerCountFromModelName verwenden, um zu überprüfen, ob Ihr gewähltes Sprachmodell mehrere Sprecher unterstützt. Wenn mehrere Sprecher verfügbar sind, geben Sie einfach Ihre gewünschte Sprecher-ID beim Aufruf der Text To Speech-Funktionen an. Einige Sprachmodelle bieten eine große Auswahl – zum Beispiel enthält English LibriTTS über 900 verschiedene Sprecher zur Auswahl.

Das Runtime Audio Importer-Plugin bietet auch zusätzliche Funktionen wie das Exportieren von Audiodaten in eine Datei, das Übergeben an SoundCue, MetaSound und mehr. Weitere Details finden Sie in der Runtime Audio Importer-Dokumentation.