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ć problemy w spakowanej wersji. 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, a następnie przejdź do sekcji Projekt -> Pakowanie. Przewiń w dół i rozwiń kategorię Zaawansowane, upewniając się, że:

  1. DirectoriesToAlwaysCook (oznaczone jako Dodatkowe Katalogi Zasobów do Przygotowania) ma wpis dla /RuntimeSpeechRecognizer/LanguageModels w środku. Jest to automatycznie wykonywane przez wtyczkę podczas pracy w edytorze, ale niektórzy użytkownicy zgłaszali konieczność wykonania tego ręcznie, więc proszę to sprawdzić. Jest to konieczne, aby zapewnić, że zasób modelu językowego jest zawsze przygotowywany w spakowanej wersji.

Dodatkowe Katalogi Zasobów do Przygotowania

  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 wykonywane przez wtyczkę, ale dla pewności, proszę sprawdzić tę zmienną ręcznie.

Dodatkowe Katalogi Zasobów do Przygotowania

Mogą istnieć inne właściwości, które mogą wpływać na zachowanie silnika podczas pakowania, 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 aplikacji (na przykład podczas testowania TestFlight). Jest to spowodowane konfliktem wymagań dotyczących 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 rozwiązać ten problem, 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 pliku 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 prekompilowanymi
  • Dodaj następującą linię do pliku Target.cs:
StaticAllocator = StaticAllocatorType.Ansi;

To zmusza Unreal Engine do użycia alokatora ANSI na Androidzie i iOS, dopasowując alokator używany przez whisper.cpp.