Saltar al contenido principal

Solución de problemas

Problemas de preparación del modelo de lenguaje

La mayoría de los problemas están relacionados con la preparación del modelo de lenguaje, lo que puede causar problemas en la compilación empaquetada. Específicamente, podrías encontrar los siguientes registros:

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

Para solucionar esto, ve a Configuración del Proyecto, luego navega a la sección Proyecto -> Empaquetado. Desplázate hacia abajo y revela la categoría Avanzado, y asegúrate de que:

  1. DirectoriesToAlwaysCook (etiquetado como Additional Asset Directories to Cook) tenga una entrada para /RuntimeSpeechRecognizer/LanguageModels dentro. Esto se hace automáticamente por el plugin durante el tiempo de editor, pero algunos usuarios han reportado tener que hacerlo manualmente, así que por favor asegúrate de verificarlo. Esto es necesario para garantizar que el activo del modelo de lenguaje siempre se incluya en la build empaquetada.

Additional Asset Directories to Cook

  1. bCookMapsOnly esté configurado en false. Si está configurado en true, ignorará la propiedad anterior, y existe la posibilidad de que el activo del modelo de lenguaje no se incluya correctamente. Esto también se hace automáticamente por el plugin, pero solo para estar seguros, por favor verifica esta variable manualmente también.

Additional Asset Directories to Cook

Puede haber otras propiedades que puedan afectar el comportamiento de empaquetado del motor, las cuales podrían agregarse a esta página más adelante a medida que se investiguen.

Fallos en Android e iOS

En algunos casos en Android e iOS, pueden ocurrir fallos durante el tiempo de ejecución (como durante las pruebas de TestFlight). Esto es causado por los requisitos de asignación de memoria de la biblioteca subyacente whisper.cpp que entran en conflicto con los asignadores de memoria predeterminados de Unreal Engine en estas plataformas. En otras plataformas, FMalloc usa por defecto el asignador ANSI, por lo que este problema es específico de Android e iOS.

Para resolver esto, necesitas forzar el asignador ANSI en el archivo Target.cs de tu proyecto:

Para Unreal Engine 5.5 y versiones anteriores:

  • Tu proyecto debe usar un motor construido desde el código fuente (no un binario precompilado)
  • Agrega la siguiente línea a tu archivo Target.cs:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");

Para Unreal Engine 5.6 y posteriores:

  • Funciona tanto con compilaciones del motor construidas desde el código fuente como con las precompiladas
  • Agrega las siguientes dos líneas a tu archivo Target.cs:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;

Esto fuerza a Unreal Engine a usar el asignador ANSI en Android e iOS, coincidiendo con el asignador utilizado por whisper.cpp.