Solução de problemas
Problemas de Preparação do Modelo de Linguagem
A maioria dos problemas está relacionada à preparação do modelo de linguagem, o que pode causar problemas no build empacotado. 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á em Project Settings, depois navegue até a seção Project -> Packaging. Role para baixo, expanda a categoria Advanced e certifique-se de que:
DirectoriesToAlwaysCook(chamado deAdditional Asset Directories to Cook) contém uma entrada para/RuntimeSpeechRecognizer/LanguageModels. Isso é feito automaticamente pelo plugin em tempo de editor, mas alguns usuários relataram que é preciso fazer manualmente, então não deixe de verificar. Isso é necessário para garantir que o asset do modelo de linguagem esteja sempre presente no build empacotado.

bCookMapsOnlyestá definido comofalse. Se estiver definido comotrue, ele ignorará a propriedade anterior e existe a possibilidade de o asset do modelo de linguagem não ser preparado corretamente. Isso também é feito automaticamente pelo plugin, mas apenas para garantir, verifique também esta variável manualmente.

Quedas no Android e iOS
Em alguns casos no Android e no iOS, podem ocorrer travamentos durante o tempo de execução (como durante testes no TestFlight). Isso é causado pelos requisitos de alocação de memória da biblioteca subjacente whisper.cpp, que entram em conflito com os alocadores padrão do Unreal Engine nessas plataformas. Em outras plataformas, o FMalloc usa como padrão o alocador ANSI, portanto esse problema é específico do Android e do 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 uma engine compilada 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 versões posteriores:
- Funciona com builds do mecanismo tanto compilados a partir do código-fonte quanto pré-compilados
- Adicione as duas linhas a seguir ao seu arquivo
Target.cs:
bOverrideBuildEnvironment = true;
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.
Esta solução alternativa aborda um conflito de alocador específico do whisper.cpp. Se o seu projeto usa a extensão Vosk como provedor no Android, esta etapa não é necessária.