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ée, et assurez-vous que :

  1. DirectoriesToAlwaysCook (étiqueté comme 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'asset du modèle de langue soit 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'asset 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 de packaging du moteur, qui pourraient être ajoutées à cette page ultérieurement au fur et à mesure qu'elles sont étudiées.

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 de moteur compilés à partir des sources et pré-compilés
  • Ajoutez la ligne suivante à votre fichier Target.cs :
StaticAllocator = StaticAllocatorType.Ansi;

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