Pular para o conteúdo principal

Solução de Problemas

Problemas de Preparação do Modelo de Linguagem

A maioria dos problemas está relacionada à preparação do modelo de linguagem, que pode causar problemas na versão empacotada. Especificamente, você pode encontrar os seguintes logs:

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

Para corrigir isso, vá para Configurações do Projeto, depois navegue até a seção Projeto -> Empacotamento. Role para baixo e revele a categoria Avançado, e certifique-se de que:

  1. DirectoriesToAlwaysCook (rotulado como Diretórios de Ativos Adicionais para Cozinhar) tenha uma entrada para /RuntimeSpeechRecognizer/LanguageModels dentro. Isso é feito automaticamente pelo plugin durante o tempo de editor, mas alguns usuários relataram ter que fazê-lo manualmente, então por favor, certifique-se de verificar. Isso é necessário para garantir que o ativo do modelo de linguagem seja sempre preparado na build empacotada.

Diretórios de Ativos Adicionais para Cozinhar

  1. bCookMapsOnly está definido como false. Se estiver definido como true, ele ignorará a propriedade anterior, e há uma possibilidade de que o ativo do modelo de linguagem não seja preparado adequadamente. Isso também é feito automaticamente pelo plugin, mas apenas para ter certeza, por favor, verifique esta variável manualmente também.

Diretórios de Ativos Adicionais para Cozinhar

Pode haver outras propriedades que podem afetar o comportamento de empacotamento do motor, que podem ser adicionadas a esta página posteriormente, conforme forem investigadas.

Travamentos no Android e iOS

Em alguns casos no Android e iOS, travamentos podem ocorrer durante o tempo de execução (como durante os testes do TestFlight). Isso é causado pelos requisitos de alocação de memória da biblioteca subjacente whisper.cpp conflitando com os alocadores padrão do Unreal Engine nessas plataformas. Em outras plataformas, o FMalloc usa como padrão o alocador ANSI, então este problema é específico para Android e iOS.

Para resolver isso, você precisa forçar o alocador ANSI no arquivo Target.cs do seu projeto:

Para Unreal Engine 5.5 e anteriores:

  • Seu projeto deve usar um motor construído a partir do código-fonte (não um binário pré-compilado)
  • Adicione a seguinte linha ao seu arquivo Target.cs:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");

Para Unreal Engine 5.6 e posterior:

  • Funciona com builds do motor tanto compiladas a partir do código-fonte quanto pré-compiladas
  • Adicione a seguinte linha ao seu arquivo Target.cs:
StaticAllocator = StaticAllocatorType.Ansi;

Isso força o Unreal Engine a usar o alocador ANSI no Android e iOS, correspondendo ao alocador usado pelo whisper.cpp.