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:
DirectoriesToAlwaysCook(oznaczone jakoAdditional 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.

bCookMapsOnlyjest ustawione nafalse. Jeśli jest ustawione natrue, 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.

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.