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

プラグインの使用方法

Runtime Speech Recognizerプラグインは、入力されるオーディオデータから単語を認識するように設計されています。エンジンで動作するために、whisper.cppの若干修正されたバージョンを使用しています。プラグインを使用するには、以下の手順に従ってください:

エディター側

  1. ここで説明されているように、プロジェクトに適した言語モデルを選択します。

ランタイム側

  1. Speech Recognizerを作成し、必要なパラメーターを設定します(CreateSpeechRecognizer、パラメーターについてはこちらを参照)。
  2. 必要なデリゲートにバインドします(OnRecognitionFinishedOnRecognizedTextSegmentOnRecognitionError)。
  3. 音声認識を開始します(StartSpeechRecognition)。
  4. オーディオデータを処理し、デリゲートからの結果を待ちます(ProcessAudioData)。
  5. 必要に応じて(例:OnRecognitionFinishedブロードキャスト後)、音声認識を停止します。

このプラグインは、32ビット浮動小数点インターリーブPCM形式の入力オーディオをサポートしています。Runtime Audio Importerと組み合わせて使用すると効果的ですが、直接依存しているわけではありません。

認識パラメーター

このプラグインは、ストリーミングと非ストリーミングの両方のオーディオデータ認識をサポートしています。特定のユースケースに合わせて認識パラメーターを調整するには、SetStreamingDefaultsまたはSetNonStreamingDefaultsを呼び出します。さらに、スレッド数、ステップサイズ、入力言語を英語に翻訳するかどうか、過去の転写を使用するかどうかなど、個々のパラメーターを手動で設定する柔軟性があります。利用可能なパラメーターの完全なリストについては、認識パラメーターリストを参照してください。

パフォーマンスの向上

プラグインのパフォーマンスを最適化する方法については、パフォーマンス向上方法セクションを参照してください。

音声活動検出(VAD)

オーディオ入力を処理する際、特にストリーミングシナリオでは、認識器に到達する前に空またはノイズのみのオーディオセグメントをフィルタリングするために音声活動検出(VAD)を使用することを推奨します。このフィルタリングは、Runtime Audio Importerプラグインを使用してキャプチャ可能なサウンドウェーブ側で有効にでき、言語モデルがノイズ中にパターンを見つけようとして誤った転写を生成する(幻覚を起こす)のを防ぐのに役立ちます。

最適な音声認識結果を得るためには、優れたノイズ耐性とより正確な音声検出を提供するSilero VADプロバイダーを使用することを推奨します。Silero VADはRuntime Audio Importerプラグインの拡張として利用可能です。VAD設定の詳細な手順については、音声活動検出ドキュメントを参照してください。 :::メモ 以下の例でコピー可能なノードは互換性の理由からデフォルトのVADプロバイダーを使用しています。認識精度を向上させるには、次の手順で簡単にSilero VADに切り替えられます:

  1. Silero VAD拡張機能セクションで説明されている通り、Silero VAD拡張機能をインストール
  2. 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)を使用
  • 停止時の音声データ損失を防止

非ストリーミングオーディオ入力

この例では、Imported sound waveにオーディオデータをインポートし、インポートが完了した時点で完全なオーディオデータを認識します。コピー可能なノード