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

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

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

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

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:
StaticAllocator = StaticAllocatorType.Ansi;

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