プラグインの使用方法
Runtime Speech Recognizer プラグインは、入力されるオーディオデータから単語を認識するように設計されています。エンジンで動作させるために、whisper.cppの若干修正されたバージョンを使用しています。プラグインを使用するには、以下の手順に従ってください:
エディター側
- ここで説明されている ように、プロジェクトに適した言語モデルを選択します。
ランタイム側
- Speech Recognizerを作成し、必要なパラメータを設定します(CreateSpeechRecognizer、パラメータについてはこちらを参照)。
- 必要なデリゲートにバインドします(OnRecognitionFinished、OnRecognizedTextSegment、OnRecognitionError)。
- 音声認識を開始します(StartSpeechRecognition)。
- オーディオデータを処理し、デリゲートからの結果を待ちます(ProcessAudioData)。
- 必要に応じて(例:OnRecognitionFinishedブロードキャスト後)、音声認識を停止します。
このプラグインは、32ビット浮動小数点インターリーブPCM形式の入力オーディオをサポートしています。Runtime Audio Importerとの連携に適していますが、直接依存しているわけではありません。
認識パラメータ
このプラグインは、ストリーミングおよび非ストリーミングオーディオデータの認識の両方をサポートしています。特定のユースケースに合わせて認識パラメータを調整するには、SetStreamingDefaults
またはSetNonStreamingDefaults
を呼び出します。さらに、スレッド数、ステップサイズ、入力言語を英語に翻訳するかどうか、過去の転写を使用するかどうかなど、個々のパラメータを手動で設定する柔軟性があります。利用可能なパラメータの完全なリストについては、認識パラメータリストを参照してください。
パフォーマンスの向上
プラグインのパフォーマンスを最適化する方法については、パフォーマンス向上方法セクションを参照してください。
音声活動検出(VAD)
オーディオ入力を処理する際、特にストリーミングシナリオでは、音声活動検出(VAD)を使用して、認識器に到達する前に空またはノイズのみのオーディオセグメントをフィルタリングすることを推奨します。このフィルタリングは、Runtime Audio Importerプラグインを使用してキャプチャ可能な音声波形側で有効にでき、言語モデルがノイズ中でパターンを見つけようとして誤った転写を生成する(いわゆる"hallucinating")のを防ぐのに役立ちます。
最適な音声認識結果を得るためには、優れたノイズ耐性とより正確な音声検出を提供する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. 音声アクティベートコマンド認識
この例はコマンド認識シナリオに最適化されています。Voice Activity Detection (VAD)とストリーミング認識を組み合わせ、ユーザーが話し終わった時に自動的に音声を処理します。無音が検出された時のみ蓄積された音声の処理を開始するため、コマンドベースのインターフェースに理想的です。コピー可能なノード。
このセットアップの主な特徴:
- 手動での開始/停止制御
- 音声セグメント検出のためVoice Activity Detection (VAD)を有効化
- 無音検出時に自動的に認識をトリガー
- 短いコマンド認識に最適
- 実際の音声のみを認識することで処理オーバーヘッドを低減
4. 最終バッファ処理付き自動初期化音声認識
この例は、異なるライフサイクル処理を伴う音声アクティベート認識アプローチの別バリエーションです。初期化時に認識機を自動的に起動し、非初期化時に停止します。重要な特徴は、認識機を停止する前に最後に蓄積されたオーディオバッファを処理することで、ユーザーが認識プロセスを終了したい場合でも音声データが失われないことを保証します。このセットアップは、途中で停止した場合でも完全なユーザー発話をキャプチャする必要があるアプリケーションに特に有用です。コピー可能なノード。
このセットアップの主な特徴:
- 初期化時に認識機を自動起動
- 非初期化時に認識機を自動停止
- 完全停止前に最終オーディオバッファを処理
- 効率的な認識のためにVoice Activity Detection (VAD)を使用
- 停止時に音声データが失われないことを保証