Перейти к основному содержимому

Устранение неполадок

Проблемы с подготовкой языковой модели

Большинство проблем связано с подготовкой языковой модели, что может вызывать сбои в собранной версии проекта. А именно, вы можете столкнуться со следующими записями в логах:

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

Чтобы исправить это, перейдите в Настройки проекта, затем перейдите в раздел Проект -> Упаковка. Прокрутите вниз и раскройте категорию Advanced, убедитесь, что:

  1. В DirectoriesToAlwaysCook (помечен как Additional Asset Directories to Cook) есть запись для /RuntimeSpeechRecognizer/LanguageModels. Это делается плагином автоматически во время работы в редакторе, но некоторые пользователи сообщали о необходимости делать это вручную, поэтому, пожалуйста, убедитесь, что проверили. Это необходимо, чтобы гарантировать, что ассет языковой модели всегда будет включен в собранную сборку.

Additional Asset Directories to Cook

  1. bCookMapsOnly установлен в false. Если он установлен в true, он проигнорирует предыдущее свойство, и есть вероятность, что ассет языковой модели не будет правильно включен. Это также делается автоматически плагином, но на всякий случай, пожалуйста, проверьте эту переменную вручную.

Additional Asset Directories to Cook

Могут быть и другие свойства, которые могут повлиять на поведение движка при упаковке, они могут быть добавлены на эту страницу позже по мере их изучения.

Сбои на Android и iOS

В некоторых случаях на Android и iOS могут происходить сбои во время выполнения (например, во время тестирования TestFlight). Это вызвано конфликтом требований к выделению памяти базовой библиотеки whisper.cpp с аллокаторами по умолчанию Unreal Engine на этих платформах. На других платформах FMalloc по умолчанию использует ANSI аллокатор, поэтому эта проблема специфична для Android и iOS.

Чтобы решить эту проблему, вам нужно принудительно использовать ANSI аллокатор в файле Target.cs вашего проекта:

Для Unreal Engine 5.5 и более ранних версий:

  • Ваш проект должен использовать движок, собранный из исходников (не предварительно скомпилированный бинарник)
  • Добавьте следующую строку в ваш файл Target.cs:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");

Для Unreal Engine 5.6 и новее:

  • Работает как с собранными из исходников, так и с предварительно скомпилированными сборками движка
  • Добавьте следующие две строки в ваш файл Target.cs:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;

Это заставляет Unreal Engine использовать аллокатор ANSI на Android и iOS, что соответствует аллокатору, используемому в whisper.cpp.