トラブルシューティング
言語モデルのステージングに関する問題
ほとんどの問題は言語モデルのステージングに関連しており、パッケージ化されたビルドで問題を引き起こす可能性があります。具体的には、以下のようなログが表示されることがあります:
LogRuntimeSpeechRecognizer: Error: Language model loading failed: Failed to load the language model asset '/RuntimeSpeechRecognizer/LanguageModels/LanguageModel.LanguageModel'
これを修正するには、プロジェクト設定に移動し、プロジェクト -> パッケージングセクションに進みます。下にスクロールして詳細カテゴリを表示し、以下を確認してください:
DirectoriesToAlwaysCook(Additional Asset Directories to Cookと表示)に、/RuntimeSpeechRecognizer/LanguageModelsのエントリが含まれていることを確認してください。これはエディタ時にプラグインによって自動的に行われますが、手動で行う必要があったというユーザーからの報告もあるため、必ず確認してください。これは言語モデルアセットがパッケージ化されたビルドに常にステージングされるようにするために必要です。

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

エンジンのパッケージング動作に影響を与える可能性のある他のプロパティがあり、調査が進むにつれてこのページに追加される可能性があります。
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 で使用されているアロケーターと一致します。