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

トラブルシューティング

言語モデルのステージングの問題

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

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 以降向け:

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

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

注記

この回避策は、whisper.cppに固有のアロケータの競合に対処します。プロジェクトがAndroidでプロバイダーとしてVosk拡張機能を使用している場合、この手順は必要ありません。