Zum Hauptinhalt springen

Fehlerbehebung

Probleme beim Staging von Sprachmodellen

Die meisten Probleme hängen mit dem Staging von Sprachmodellen zusammen, was zu Problemen in der gepackten Build-Version führen kann. Insbesondere könnten Ihnen folgende Logs begegnen:

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

Um dies zu beheben, gehen Sie zu Projekteinstellungen und navigieren dann zum Abschnitt Projekt -> Paketierung. Scrollen Sie nach unten und klappen Sie die erweiterte Kategorie auf. Stellen Sie sicher, dass:

  1. DirectoriesToAlwaysCook (bezeichnet als Zusätzliche Asset-Verzeichnisse zum Kochen) einen Eintrag für /RuntimeSpeechRecognizer/LanguageModels enthält. Dies wird automatisch vom Plugin während der Editor-Zeit durchgeführt, aber einige Benutzer haben berichtet, dass sie es manuell vornehmen mussten. Bitte überprüfen Sie dies daher. Dies ist notwendig, um sicherzustellen, dass das Sprachmodell-Asset immer im gepackten Build bereitgestellt wird.

Zusätzliche Asset-Verzeichnisse zum Kochen

  1. bCookMapsOnly auf false gesetzt ist. Wenn es auf true gesetzt ist, wird die vorherige Eigenschaft ignoriert, und es besteht die Möglichkeit, dass das Sprachmodell-Asset nicht korrekt bereitgestellt wird. Dies wird ebenfalls automatisch vom Plugin durchgeführt, aber um sicherzugehen, überprüfen Sie diese Variable bitte auch manuell.

Zusätzliche Asset-Verzeichnisse zum Kochen

Es gibt möglicherweise andere Eigenschaften, die das Paketierungsverhalten der Engine beeinflussen können, die später, sobald sie untersucht wurden, zu dieser Seite hinzugefügt werden.

Android- und iOS-Abstürze

In einigen Fällen kann es auf Android und iOS während der Laufzeit zu Abstürzen kommen (z. B. während TestFlight-Tests). Dies wird durch die Speicherzuweisungsanforderungen der zugrunde liegenden whisper.cpp-Bibliothek verursacht, die mit den Standard-Speicherzuweisern der Unreal Engine auf diesen Plattformen in Konflikt stehen. Auf anderen Plattformen verwendet FMalloc standardmäßig den ANSI-Allokator, daher ist dieses Problem spezifisch für Android und iOS.

Um dies 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 gebaute 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 quellgebauten als auch mit vorkompilierten Engine-Builds
  • Fügen Sie die folgende Zeile zu Ihrer Target.cs-Datei hinzu:
StaticAllocator = StaticAllocatorType.Ansi;

Dies zwingt Unreal Engine dazu, den ANSI-Allokator auf Android und iOS zu verwenden, was dem von whisper.cpp verwendeten Allokator entspricht.