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

パフォーマンス向上の方法

Windows プラットフォームでは GPU アクセラレーションに Vulkan を使用しており、これにより認識プロセスが大幅に高速化されます。他のプラットフォームでは、CPU + イントリンシックを使用してアクセラレーションを実行します。しかし、以下の推奨事項に従うことで、さらにプラグインのパフォーマンスを向上させることができます。

  1. ステップサイズを減少させる

    デフォルトでは、ステップサイズは 5000 ms(5 秒)であり、つまりオーディオデータは 5 秒ごとに認識されます。もっと頻繁にオーディオデータを認識したい場合は、ステップサイズを減らすことができます(例:500 ms(0.5 秒))。

  2. 小さい言語モデルを使用する

    言語モデルのサイズを小さくし、パフォーマンスを向上させるために、Tiny Quantized (Q5_1) のような小さいモデルを使用することを検討できます。言語モデルの選択方法についての説明はこちらをご覧ください。

  3. 認識状態の管理を最適化する

    マイク入力を使用する際、不要な音声認識の開始・停止を避けるべきです。StopSpeechRecognitionStartSpeechRecognition を頻繁に呼び出すと、リソースの再割り当てが発生するためです。代わりに、オーディオ入力を直接制御することを検討してください。例えば、キャプチャ可能なサウンドウェーブを使用する場合、認識スレッドをアクティブに保ったまま、StopCaptureStartCapture を使用してオーディオの流れを管理できます。

  4. CPU 命令セットを変更する

    プラグイン内の基盤ライブラリは whisper.cpp であり、CPU の命令セットを利用して認識パフォーマンスを向上させます。現在、命令セットはプラグインコード内でハードコードされており、UE のコンパイラーフラグの制限により、さまざまなマクロを用いた推定/確率に基づいて定義されています。ターゲットプラットフォームでサポートされている命令セットを定義するために、SpeechRecognizerPrivate.h を手動で変更できます。

    以下は、whisper.cpp で現在使用されている命令セットのリストであり、SpeechRecognizerPrivate.h 内で手動定義できます。

    • AVX および AVX2 ファミリー:

      • __AVX__
      • __AVXVNNI__
      • __AVX2__
      • __AVX512F__
      • __AVX512VBMI__
      • __AVX512VNNI__
      • __AVX512BF16__
    • 浮動小数点および SIMD 拡張:

      • __FMA__
      • __F16C__
      • __SSE3__
      • __SSSE3__
    • ARM アーキテクチャ拡張:

      • __ARM_NEON
      • __ARM_FEATURE_SVE
      • __ARM_FEATURE_FMA
      • __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
      • __ARM_FEATURE_MATMUL_INT8
    • POWER アーキテクチャ拡張:

      • __POWER9_VECTOR__
  5. アクセラレーションライブラリを使用する

    whisper.cpp は、以下のライブラリを使用して認識プロセスの高速化が可能です。

    これらのライブラリはプラグインにデフォルトでは含まれておらず、whisper.cpp の指示に従って手動でインストールする必要があります。