Zum Hauptinhalt springen

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:

  1. DirectoriesToAlwaysCook (gekennzeichnet als Additional 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.

Additional Asset Directories to Cook

  1. bCookMapsOnly ist auf false gesetzt. Wenn es auf true gesetzt 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.

Additional Asset Directories to Cook

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.

hinweis

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.