Przejdź do głównej zawartości

Jak korzystać z wtyczki

Wtyczka Runtime Text To Speech syntezuje tekst na mowę przy użyciu modeli głosowych do pobrania. Modele te są zarządzane w ustawieniach wtyczki w edytorze, pobierane i pakowane do użycia w czasie rzeczywistym. Wykonaj poniższe kroki, aby rozpocząć.

Strona edytora

Pobierz odpowiednie modele głosowe dla swojego projektu, jak opisano tutaj. Możesz pobrać wiele modeli głosowych jednocześnie.

Strona runtime

Utwórz syntezator za pomocą funkcji CreateRuntimeTextToSpeech. Upewnij się, że zachowujesz do niego referencję (np. jako oddzielną zmienną w Blueprints lub UPROPERTY w C++), aby zapobiec jego usunięciu przez garbage collector.

Przykład tworzenia syntezatora Runtime Text To Speech w Blueprints

Syntetyzowanie Mowy

Wtyczka oferuje dwa tryby syntezy tekstu na mowę:

  1. Standardowa synteza tekstu na mowę: Syntetyzuje cały tekst i zwraca kompletny dźwięk po zakończeniu
  2. Strumieniowa synteza tekstu na mowę: Dostarcza fragmenty dźwięku w miarę ich generowania, umożliwiając przetwarzanie w czasie rzeczywistym

Każdy tryb obsługuje dwie metody wyboru modeli głosowych:

  • Po nazwie: Wybierz model głosowy po jego nazwie (zalecane dla UE 5.4+)
  • Po obiekcie: Wybierz model głosowy przez bezpośrednie odwołanie (zalecane dla UE 5.3 i wcześniejszych)

Standardowa synteza tekstu na mowę

Po nazwie

Funkcja Text To Speech (By Name) jest wygodniejsza w Blueprints od wersji UE 5.4. Pozwala wybierać modele głosowe z listy rozwijanej pobranych modeli. W wersjach UE poniżej 5.3 ta lista rozwijana się nie pojawia, więc jeśli używasz starszej wersji, musisz ręcznie iterować po tablicy modeli głosowych zwróconej przez GetDownloadedVoiceModels, aby wybrać potrzebny model.

Przykład użycia Text To Speech by Name w Blueprints

Według Obiektu

Funkcja Text To Speech (By Object) działa we wszystkich wersjach Unreal Engine, ale przedstawia modele głosowe jako listę rozwijaną referencji do assetów, co jest mniej intuicyjne. Ta metoda jest odpowiednia dla UE 5.3 i wcześniejszych, lub jeśli twój projekt wymaga bezpośredniej referencji do asseta modelu głosowego z jakiegokolwiek powodu.

Przykład użycia Text To Speech by Object w Blueprints

Jeśli pobrałeś modele, ale ich nie widzisz, otwórz listę rozwijaną Voice Model, kliknij ustawienia (ikona koła zębatego) i włącz zarówno Show Plugin Content, jak i Show Engine Content, aby modele stały się widoczne.

Streaming Text-to-Speech

Dla dłuższych tekstów lub gdy chcesz przetwarzać dane audio w czasie rzeczywistym, w miarę ich generowania, możesz użyć wersji streamingowych funkcji Text-to-Speech:

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

Te funkcje dostarczają dane audio w porcjach (chunkach) w miarę ich generowania, umożliwiając natychmiastowe przetwarzanie bez oczekiwania na zakończenie całej syntezy. Jest to przydatne w różnych zastosowaniach, takich jak odtwarzanie audio w czasie rzeczywistym, wizualizacja na żywo lub w każdym scenariuszu, w którym potrzebujesz przetwarzać dane mowy przyrostowo.

Streaming By Name

Funkcja Streaming Text To Speech (By Name) działa podobnie do zwykłej wersji, ale dostarcza audio w porcjach poprzez delegata On Speech Chunk.

Przykład użycia Streaming Text To Speech by Name w Blueprints

Streaming Według Obiektu

Funkcja Streaming Text To Speech (By Object) zapewnia tę samą funkcjonalność strumieniowania, ale przyjmuje referencję do obiektu modelu głosu.

Przykład użycia Streaming Text To Speech by Object w Blueprints

Odtwarzanie dźwięku

Dla standardowego (niestrumieniowego) zamiany tekstu na mowę, delegat On Speech Result dostarcza zsyntetyzowany dźwięk jako dane PCM w formacie float (jako tablicę bajtów w Blueprints lub TArray<uint8> w C++), wraz z Sample Rate i Num Of Channels.

Do odtwarzania zaleca się użycie wtyczki Runtime Audio Importer do konwersji surowych danych audio na odtwarzalną falę dźwiękową.

Oto przykład, jak mogą wyglądać węzły Blueprint do syntezy tekstu i odtwarzania dźwięku (Kopiowalne węzły):

Anulowanie zamiany tekstu na mowę

Możesz anulować trwającą operację syntezy mowy w dowolnym momencie, wywołując funkcję CancelSpeechSynthesis na swojej instancji syntezatora:

Anulowanie zamiany tekstu na mowę w Blueprints

Gdy synteza zostanie anulowana:

  • Proces syntezy zatrzyma się tak szybko, jak to możliwe
  • Wszelkie trwające wywołania zwrotne zostaną zakończone
  • Delegat ukończenia zostanie wywołany z bSuccess = false i komunikatem błędu wskazującym, że synteza została anulowana
  • Wszelkie zasoby przydzielone do syntezy zostaną właściwie zwolnione

Jest to szczególnie przydatne w przypadku długich tekstów lub gdy trzeba przerwać odtwarzanie, aby rozpocząć nową syntezę.

Wybór mówcy

Obie funkcje Text To Speech akceptują opcjonalny parametr ID mówcy, który jest przydatny podczas pracy z modelami głosowymi obsługującymi wielu mówców. Możesz użyć funkcji GetSpeakerCountFromVoiceModel lub GetSpeakerCountFromModelName, aby sprawdzić, czy wybrany model głosowy obsługuje wielu mówców. Jeśli dostępnych jest wielu mówców, po prostu określ żądane ID mówcy podczas wywoływania funkcji Text To Speech. Niektóre modele głosowe oferują szeroką różnorodność - na przykład English LibriTTS zawiera ponad 900 różnych mówców do wyboru.

Wtyczka Runtime Audio Importer zapewnia również dodatkowe funkcje, takie jak eksportowanie danych audio do pliku, przekazywanie ich do SoundCue, MetaSound i nie tylko. Aby uzyskać więcej szczegółów, zapoznaj się z dokumentacją Runtime Audio Importer.