Aller au contenu principal

Dépannage

Problèmes de mise en scène du modèle de langage

La plupart des problèmes sont liés à la mise en scène du modèle de langage, ce qui peut causer des problèmes dans la version empaquetée. Notamment, vous pourriez rencontrer les journaux suivants :

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

Pour résoudre ce problème, allez dans Paramètres du projet, puis naviguez vers la section Projet -> Packaging. Faites défiler vers le bas et révélez la catégorie Avancé, et assurez-vous que :

  1. DirectoriesToAlwaysCook (étiqueté Additional Asset Directories to Cook) contient une entrée pour /RuntimeSpeechRecognizer/LanguageModels à l'intérieur. Ceci est fait automatiquement par le plugin pendant le temps d'édition, mais certains utilisateurs ont signalé avoir dû le faire manuellement, alors assurez-vous de vérifier. Ceci est nécessaire pour garantir que l'actif du modèle de langue est toujours mis en scène dans la version empaquetée.

Additional Asset Directories to Cook

  1. bCookMapsOnly est défini sur false. S'il est défini sur true, il ignorera la propriété précédente, et il y a une possibilité que l'actif du modèle de langue ne soit pas correctement mis en scène. Ceci est également fait automatiquement par le plugin, mais pour en être certain, veuillez vérifier cette variable manuellement également.

Additional Asset Directories to Cook

Il peut y avoir d'autres propriétés qui peuvent affecter le comportement d'empaquetage du moteur, qui pourraient être ajoutées à cette page ultérieurement au fur et à mesure de leur investigation.

Plantages Android et iOS

Dans certains cas sur Android et iOS, des plantages peuvent survenir pendant l'exécution (comme pendant les tests TestFlight). Ceci est causé par les exigences d'allocation mémoire de la bibliothèque sous-jacente whisper.cpp entrant en conflit avec les allocateurs par défaut d'Unreal Engine sur ces plateformes. Sur d'autres plateformes, FMalloc utilise par défaut l'allocateur ANSI, donc ce problème est spécifique à Android et iOS.

Pour résoudre ceci, vous devez forcer l'allocateur ANSI dans le fichier Target.cs de votre projet :

Pour Unreal Engine 5.5 et versions antérieures :

  • Votre projet doit utiliser un moteur construit à partir des sources (pas un binaire pré-compilé)
  • Ajoutez la ligne suivante à votre fichier Target.cs :
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");

Pour Unreal Engine 5.6 et versions ultérieures :

  • Fonctionne avec les builds du moteur compilés à partir des sources et les builds pré-compilés
  • Ajoutez les deux lignes suivantes à votre fichier Target.cs :
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;

Cela force Unreal Engine à utiliser l'allocateur ANSI sur Android et iOS, correspondant à l'allocateur utilisé par whisper.cpp.