パフォーマンス向上の方法
Windows プラットフォームでは GPU アクセラレーションに Vulkan を使用しており、これにより認識プロセスが大幅に高速化されます。他のプラットフォームでは、CPU + イントリンシックを使用してアクセラレーションを実行します。しかし、以下の推奨事項に従うことで、さらにプラグインのパフォーマンスを向上させることができます。
-
ステップサイズを減少させる
デフォルトでは、ステップサイズは 5000 ms(5 秒)であり、つまりオーディオデータは 5 秒ごとに認識されます。もっと頻繁にオーディオデータを認識したい場合は、ステップサイズを減らすことができます(例:500 ms(0.5 秒))。
-
小さい言語モデルを使用する
言語モデルのサイズを小さくし、パフォーマ ンスを向上させるために、
Tiny Quantized (Q5_1)
のような小さいモデルを使用することを検討できます。言語モデルの選択方法についての説明はこちらをご覧ください。 -
認識状態の管理を最適化する
マイク入力を使用する際、不要な音声認識の開始・停止を避けるべきです。
StopSpeechRecognition
とStartSpeechRecognition
を頻繁に呼び出すと、リソースの再割り当てが発生するためです。代わりに、オーディオ入力を直接制御することを検討してください。例えば、キャプチャ可能なサウンドウェーブを使用する場合、認識スレッドをアクティブに保ったまま、StopCapture
とStartCapture
を使用してオーディオの流れを管理できます。 -
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__
-
-
アクセラレーションライブラリを使用する
whisper.cpp は、以下のライブラリを使用して認識プロセスの高速化が可能です。
- Apple Silicon デバイス向け Core ML
- x86 CPU や Intel GPU 対応の OpenVINO
- Windows または Linux 上での Nvidia GPU CUDA
- OpenBLAS による BLAS CPU サポート
- Intel MKL による BLAS CPU サポート
これらのライブラリはプラグインにデフォルトでは含まれておらず、whisper.cpp の指示に従って手動でインストールする必要があります。