Устранение неполадок
Проблемы с подготовкой языковой модели
Большинство проблем связано с подготовкой языковой модели, что может вызывать сбои в собранной версии проекта. А именно, вы можете столкнуться со следующими записями в логах:
LogRuntimeSpeechRecognizer: Error: Language model loading failed: Failed to load the language model asset '/RuntimeSpeechRecognizer/LanguageModels/LanguageModel.LanguageModel'
Чтобы исправить это, перейдите в Настройки проекта, затем перейдите в раздел Проект -> Упаковка. Прокрутите вниз и раскройте категорию Advanced, убедитесь, что:
- В
DirectoriesToAlwaysCook(помечен какAdditional Asset Directories to Cook) есть запись для/RuntimeSpeechRecognizer/LanguageModels. Это делается плагином автоматически во время работы в редакторе, но некоторые пользователи сообщали о необходимости делать это вручную, поэтому, пожалуйста, убедитесь, что проверили. Это необходимо, чтобы гарантировать, что ассет языковой модели всегда будет включен в собранную сборку.

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

Могут быть и другие свойства, которые могут повлиять на поведение движка при упаковке, они могут быть добавлены на эту страницу позже по мере их изучения.
Сбои на 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.