メインコンテンツまでスキップ

トラブルシューティング

言語モデルのステージングに関する問題

ほとんどの問題は言語モデルのステージングに関連しており、パッケージ化されたビルドで問題を引き起こす可能性があります。具体的には、以下のようなログが表示されることがあります:

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

これを修正するには、プロジェクト設定に移動し、プロジェクト -> パッケージングセクションに移動します。下にスクロールして詳細カテゴリを展開し、以下を確認してください:

  1. DirectoriesToAlwaysCookAdditional Asset Directories to Cookと表示されています)に、/RuntimeSpeechRecognizer/LanguageModelsのエントリが含まれていることを確認してください。これはエディター時にプラグインによって自動的に行われますが、一部のユーザーは手動で行う必要があったと報告しているため、必ず確認してください。これは、言語モデルアセットがパッケージ化されたビルドに確実にステージングされるようにするために必要です。

Additional Asset Directories to Cook

  1. bCookMapsOnlyfalseに設定されていることを確認してください。これがtrueに設定されている場合、前のプロパティが無視され、言語モデルアセットが適切にステージングされない可能性があります。これもプラグインによって自動的に行われますが、確実にするために、この変数も手動で確認してください。

Additional Asset Directories to Cook

エンジンのパッケージング動作に影響を与える可能性のある他のプロパティが存在する場合があり、調査が進めば後でこのページに追加される可能性があります。

AndroidおよびiOSのクラッシュ

AndroidおよびiOSでは、場合によってランタイム中(TestFlightテスト中など)にクラッシュが発生することがあります。これは、基盤となるwhisper.cppライブラリのメモリ割り当て要件が、これらのプラットフォームでのUnreal Engineのデフォルトアロケータと競合することが原因です。他のプラットフォームでは、FMallocはデフォルトでANSIアロケータを使用するため、この問題はAndroidとiOSに固有です。

これを解決するには、プロジェクトのTarget.csファイルでANSIアロケータを強制的に使用するように設定する必要があります:

Unreal Engine 5.5以前の場合:

  • プロジェクトは、事前コンパイルされたバイナリではなく、ソースビルドされたエンジンを使用している必要があります
  • Target.csファイルに次の行を追加してください:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");

Unreal Engine 5.6以降の場合:

  • ソースビルド版と事前コンパイル済みエンジンビルドの両方で動作します
  • 以下の行を Target.cs ファイルに追加してください:
StaticAllocator = StaticAllocatorType.Ansi;

これはUnreal EngineにAndroidとiOSでANSIアロケーターを使用するように強制し、whisper.cppで使用されているアロケーターと一致させます。