Fehlerbehebung
Sprachmodell-Staging-Probleme
Die meisten Probleme hängen mit dem Staging des Sprachmodells zusammen, was im Paket-Build zu Problemen führen kann. Insbesondere könnten Sie auf die folgenden Logs stoßen:
LogRuntimeSpeechRecognizer: Error: Language model loading failed: Failed to load the language model asset '/RuntimeSpeechRecognizer/LanguageModels/LanguageModel.LanguageModel'
Um dies zu beheben, gehen Sie zu Project Settings und navigieren Sie dann zum Abschnitt Project -> Packaging. Scrollen Sie nach unten und blenden Sie die Kategorie Advanced ein, und stellen Sie sicher, dass:
DirectoriesToAlwaysCook(gekennzeichnet alsAdditional Asset Directories to Cook) enthält einen Eintrag für/RuntimeSpeechRecognizer/LanguageModels. Dies geschieht automatisch durch das Plugin während der Editor-Laufzeit, aber einige Benutzer haben berichtet, dass sie es manuell tun mussten. Bitte prüfen Sie dies daher unbedingt. Dies ist notwendig, um sicherzustellen, dass das Sprachmodell-Asset im paketierten Build immer eingebunden wird.

bCookMapsOnlyist auffalsegesetzt. Wenn es auftruegesetzt ist, wird die vorherige Eigenschaft ignoriert, und es besteht die Möglichkeit, dass das Sprachmodell-Asset nicht ordnungsgemäß bereitgestellt wird. Dies wird auch automatisch vom Plugin erledigt, aber um sicherzugehen, überprüfen Sie diese Variable bitte auch manuell.

Android- und iOS-Abstürze
Unter bestimmten Umständen kann es auf Android und iOS während der Laufzeit zu Abstürzen kommen (z. B. bei TestFlight-Tests). Dies wird dadurch verursacht, dass die Speicherzuweisungsanforderungen der zugrunde liegenden whisper.cpp-Bibliothek mit den Standard-Allokatoren von Unreal Engine auf diesen Plattformen kollidieren. Auf anderen Plattformen verwendet FMalloc standardmäßig den ANSI-Allokator, daher ist dieses Problem spezifisch für Android und iOS.
Um dieses Problem zu beheben, müssen Sie den ANSI-Allokator in der Target.cs-Datei Ihres Projekts erzwingen:
Für Unreal Engine 5.5 und früher:
- Ihr Projekt muss eine aus dem Quellcode erstellte Engine verwenden (keine vorkompilierte Binärdatei)
- Fügen Sie die folgende Zeile zu Ihrer
Target.cs-Datei hinzu:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");
Für Unreal Engine 5.6 und höher:
- Funktioniert sowohl mit aus dem Quellcode erstellten als auch mit vorkompilierten Engine-Builds
- Fügen Sie die folgenden zwei Zeilen zu Ihrer
Target.cs-Datei hinzu:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;
Dies zwingt Unreal Engine, auf Android und iOS den ANSI-Allokator zu verwenden, der dem von whisper.cpp verwendeten Allokator entspricht.
Diese Problemumgehung behebt einen Allokator-Konflikt, der für whisper.cpp spezifisch ist. Wenn Ihr Projekt die Vosk-Erweiterung als Anbieter auf Android verwendet, ist dieser Schritt nicht erforderlich.