Przejdź do głównej zawartości

Rozwiązywanie problemów

Problemy z przygotowaniem modelu językowego

Większość problemów jest związana z przygotowaniem modelu językowego, co może powodować trudności w spakowanej wersji (build). Mianowicie, możesz napotkać następujące logi:

LogRuntimeSpeechRecognizer: Error: Language model loading failed: Failed to load the language model asset '/RuntimeSpeechRecognizer/LanguageModels/LanguageModel.LanguageModel'

Aby to naprawić, przejdź do Ustawień Projektu, następnie przejdź do sekcji Project -> Packaging. Przewiń w dół i rozwiń kategorię Advanced, upewnij się, że:

  1. DirectoriesToAlwaysCook (oznaczone jako Additional Asset Directories to Cook) zawiera wpis dla /RuntimeSpeechRecognizer/LanguageModels. Jest to automatycznie dodawane przez wtyczkę podczas pracy w edytorze, ale niektórzy użytkownicy zgłaszali konieczność ręcznego dodania, więc proszę to sprawdzić. Jest to konieczne, aby zapewnić, że zasób modelu językowego jest zawsze przygotowany w spakowanej wersji.

Additional Asset Directories to Cook

  1. bCookMapsOnly jest ustawione na false. Jeśli jest ustawione na true, zignoruje poprzednią właściwość i istnieje możliwość, że zasób modelu językowego nie zostanie poprawnie przygotowany. Jest to również automatycznie ustawiane przez wtyczkę, ale dla pewności proszę sprawdzić tę zmienną ręcznie.

Additional Asset Directories to Cook

Mogą istnieć inne właściwości, które mogą wpływać na zachowanie pakowania silnika, które mogą zostać dodane do tej strony później, w miarę ich badania.

Awarie na Androidzie i iOS

W niektórych przypadkach na Androidzie i iOS mogą występować awarie podczas działania (np. podczas testowania TestFlight). Jest to spowodowane konfliktem wymagań alokacji pamięci przez podstawową bibliotekę whisper.cpp z domyślnymi alokatorami Unreal Engine na tych platformach. Na innych platformach FMalloc domyślnie używa alokatora ANSI, więc ten problem jest specyficzny dla Androida i iOS.

Aby to rozwiązać, musisz wymusić użycie alokatora ANSI w pliku Target.cs twojego projektu:

Dla Unreal Engine 5.5 i wcześniejszych:

  • Twój projekt musi używać silnika zbudowanego ze źródeł (nie prekompilowanego binarnego)
  • Dodaj następującą linię do pliku Target.cs:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");

Dla Unreal Engine 5.6 i nowszych:

  • Działa zarówno z kompilacjami silnika zbudowanymi ze źródeł, jak i z prekompilowanymi
  • Dodaj następujące dwie linie do pliku Target.cs:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;

To wymusza, aby Unreal Engine używał alokatora ANSI na Androidzie i iOS, dopasowując go do alokatora używanego przez whisper.cpp.