プラグインの使い方
Runtime Speech Recognizer プラグインは、入力されたオーディオデータから単語を認識するように設計されています。エンジンで動作するために、whisper.cpp を少し変更したバージョンを使用しています。プラグインを使用するには、次の手順に従ってください。
エディタ側
- プロジェクトに適した言語モデルを、こちらの説明に従って選択してください。
Runtime側
- 音声認識を作成し、必要なパラメータを設定します(CreateSpeechRecognizer、パラメータについてはこちらを参照)。
- 必要なデリゲートにバインドします(OnRecognitionFinished、OnRecognizedTextSegment、および OnRecognitionError)。
- 音声認識を開始します(StartSpeechRecognition)。
- オーディオデータを処理し、デリゲートからの結果を待ちます(ProcessAudioData)。
- 必要に応じて音声認識を停止します(例:OnRecognitionFinished のブロードキャスト後)。
プラグインは、浮動小数点32ビットインターリーブPCM形式の入力オーディオをサポートしています。Runtime Audio Importerとはうまく動作しますが、直接依存しているわけではありません。
認識パラメータ
このプラグインは、ストリーミングおよび非ストリーミングの音声データ認識の両方をサポートしています。特定のユースケースに合わせて認識パラメータを調整するには、SetStreamingDefaults または SetNonStreamingDefaults を呼び出します。さらに、スレッド数、ステップサイズ、入力言語を英語に翻訳するかどうか、過去の文字起こしを使用するかどうかなど、個々のパラメータを手動で柔軟に設定できます。利用可能なパラメータの完全な一覧については、認識パラメータ一覧 を参照してください。
パフォーマンスの改善
プラグインのパフォーマンスを最適化するためのヒントについては、パフォーマンスを向上させる方法のセクションを参照してください。AndroidやMeta QuestなどのAndroidベースのプラットフォームでは、whisper.cppでGPUアクセラレーションをサポートしていないハードウェア向けの代替プロバイダーを提供するVosk拡張機能も検討してください。
音声活動検出(VAD)
オーディオ入力を処理する場合、特にストリーミングのシナリオでは、音声アクティビティ検出(VAD)を使用して、認識器に到達する前に空またはノイズのみのオーディオセグメントをフィルタリングすることをお勧めします。このフィルタリングは、Runtime Audio Importer プラグインを使用して キャプチャ可能なサウンドウェーブ 側で有効にすることができ、言語モデルがノイズの中からパターンを見つけ出し、誤った文字起こしを生成するというハルシネーションを防ぐのに役立ちます。
最適な音声認識結果を得るには、Silero VAD プロバイダーの使用をお勧めします。これは優れたノイズ耐性とより正確な音声検出を提供します。Silero VADは、Runtime Audio Importer プラグインの拡張機能として利用できます。VAD設定の詳細な手順については、音声アクティビティ検出ドキュメントを参照してください。
以下の例のコピー可能なノードは、互換性の理由からデフォルトのVADプロバイダーを使用しています。認識精度を高めるには、簡単にSilero VADに切り替えることができます:
- Silero VAD拡張機能のインストールは、Silero VAD拡張セクションで説明されているとおりに行います。
- Toggle VADノードでVADを有効にした後、Set VAD Providerノードを追加し、ドロップダウンから"Silero"を選択します。
プラグインに含まれるデモプロジェクトでは、VADはデフォルトで有効になっています。デモの実装についての詳細は、デモプロジェクトで確認できます。
例
プラグインのContent -> Demoフォルダには、実装の例として使用できる優れたプロジェクトデモが含まれています。.
これらの例は、Runtime Audio Importerを使用してオーディオデータを取得する例として、Runtime Speech Recognizer プラグインをストリーミング入力と非ストリーミング入力の両方で使用する方法を示しています。例で紹介されているオーディオインポート機能(例: キャプチャ可能なサウンドウェーブや ImportAudioFromFile)を利用するには、RuntimeAudioImporter を別途ダウンロードする必要があることに注意してください。これらの例は、中核となる概念を示すことのみを目的としており、エラー処理は含まれていません。
ストリーミングオーディオ入力の例
注記: UE 5.3 および他のバージョンでは、Blueprints をコピーした後にノードが欠落する場合があります。これは、エンジンバージョン間のノードのシリアライゼーションの違いによって発生する可能性があります。実装では、すべてのノードが正しく接続されていることを必ず確認してください。
1. 基本的なストリーミング認識
この例では、Capturable sound wave を使用してマイクから音声データをストリームとしてキャプチャし、それを音声認識器に渡す基本的なセットアップを説明します。約5秒間の音声を録音してから認識処理を行うため、クイックテストやシンプルな実装に適しています。 コピー可能なノード.
このセットアップの主な特徴:
- 固定5秒の録音時間
- シンプルなワンショット認識
- 最小限のセットアップ要件
- テストとプロトタイピングに最適

2. 制御付きストリーミング認識
この例では、基本的なストリーミング設定を拡張し、認識プロセスを手動で制御できるようにします。認識を任意のタイミングで開始・停止できるため、認識するタイミングを正確に制御する必要があるシナリオに適しています。コピー可能なノード。
このセットアップの主な特徴:
- 手動開始/停止制御
- 連続認識機能
- 柔軟な録音時間
- 対話型アプリケーションに適しています

3. 音声起動コマンド認識
この例は、コマンド認識シナリオ向けに最適化されています。音声アクティビティ検出(VAD)とストリーミング認識を組み合わせて、ユーザーが話し終えたときに音声を自動的に処理します。認識器は無音が検出されたときのみ蓄積された音声の処理を開始するため、コマンドベースのインターフェースに最適です。コピー可能なノード。
このセットアップの主な特徴:
- 手動の開始/停止制御
- 音声活動検出(VAD)を有効にして音声区間を検出
- 無音が検出されたときに自動認識をトリガー
- 短いコマンド認識に最適
- 実際の音声のみを認識することで処理オーバーヘッドを削減

4. 最終バッファ処理付きの自動初期化音声認識
この例は、ライフサイクル処理が異なる音声起動認識アプローチの別のバリエーションです。初期化中に自動的に認識エンジンを起動し、非初期化中に停止します。重要な機能は、認識エンジンを停止する前に、最後に蓄積されたオーディオバッファを処理することです。これにより、ユーザーが認識プロセスを終了したいときに、音声データが失われることはありません。このセットアップは、発話途中で停止する場合でも、ユーザーの完全な発話をキャプチャする必要があるアプリケーションに特に役立ちます。コピー可能なノード.
このセットアップの主な機能:
- 初期化時にレコグナイザーを自動起動します
- 非初期化時にレコグナイザーを自動停止します
- 完全に停止する前に最後のオーディオバッファを処理します
- 効率的な認識のために音声アクティビティ検出(VAD)を使用します
- 停止時に音声データが失われないことを保証します

非ストリーミングオーディオ入力
この例では、オーディオデータをImported Sound Waveにインポートし、インポートが完了するとオーディオデータ全体を認識します。コピー可能なノード。
