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

Vosk エクステンション

デフォルトでは、Runtime Speech Recognizer プラグインは認識に whisper.cpp を使用します。whisper.cpp で GPU アクセラレーションをサポートしていないプラットフォーム(特に Android や Meta Quest などの Android ベースのプラットフォーム)では、認識は CPU とイントリンシクスにフォールバックするため、速度が遅く、バッテリーへの負担が大きくなります。Vosk 拡張プラグインは、Vosk に基づく代替プロバイダーを追加します。Vosk は軽量な音声認識ツールキットであり、制約のあるハードウェアでもうまく動作し、特に Meta Quest で優れた性能を発揮します。

whisper.cppとVoskの切り替えは、わずか数個のBlueprintノードで実行でき、元に戻すのも同様に簡単です。そのため、両方のオプションを利用可能にしておき、必要に応じてプラットフォームごとにプロバイダーを選択できます。

インストール

Vosk拡張機能を使用するには:

  1. メインのRuntime Speech Recognizerプラグインがプロジェクトにインストール済みであることを確認してください。

  2. Vosk拡張プラグインをこちらからダウンロードしてください。

  3. ダウンロードしたアーカイブからフォルダーを展開し、プロジェクトの Plugins フォルダーに入れてください(このフォルダーが存在しない場合は作成してください)。

  4. プロジェクトを再構築してください(この拡張機能にはC++プロジェクトが必要です)

important
  • Vosk拡張機能は、Unreal Engine 5.0から5.8までをサポートしています。

  • この拡張機能はソースコードとして提供されており、使用するにはC++プロジェクトが必要です。

  • プラグインを手動でビルドする方法の詳細については、プラグインのビルドチュートリアルを参照してください。

Voskプロバイダーへの切り替え

拡張機能をインストールすると、音声認識をVoskに切り替えるのは、CreateSpeechRecognizerの直後の3つのノードだけです。

Set Speech Recognizer Provider Cast To Vosk

  1. Set Speech Recognizer Provider を呼び出し、Vosk プロバイダークラスを渡します。
  2. 結果に対して Cast To Runtime Vosk Speech Recognizer Provider を実行します。
  3. キャスト結果で Set Vosk Model Path (By Name) を呼び出し、ドロップダウンからダウンロードしたモデルを選択します。

既存のセットアップの他のすべて(Start Speech RecognitionProcess Audio Data、デリゲート、VAD など)は、変更なしでそのまま動作します。whisper.cpp に戻すには、これらの3つのノードを削除するか、Set Speech Recognizer Provider をまったく呼び出さないだけです。whisper.cpp がデフォルトであるためです。

Voskモデルをダウンロード中

Voskモデルは、Project Settings -> Plugins -> Runtime Speech Recognizer Voskからダウンロードおよび管理されます。パネルには、言語ごとにグループ化された定義済みモデルカタログが一覧表示され、各エントリにはダウンロードボタンがあります。ダウンロードと展開の進行中にはプログレスバーが表示され、モデルがディスク上に保存されると削除ボタンが表示されます。

Vosk model settings panel

ダウンロードしたモデルは Content/RuntimeSpeechRecognizerVosk/Models に展開され、プラグインがそのフォルダをパッケージング用に自動的にステージングします。また、パッケージ化されるモデルは1つだけに限定されません。ダウンロードしたモデルはすべて利用可能な状態で保持され、実行時に Set Vosk Model Path (By Name) で選択できます。Android では、モデルファイルはパッケージ化されたアプリ内に同梱され、初回使用時に永続ストレージへコピーされます。これは、モデルが選択されたときに内部的に処理されます。

対応言語(クリックして展開)

定義済みカタログには、英語、インド英語、中国語、ロシア語、フランス語、ドイツ語、スペイン語、ポルトガル語/ブラジルポルトガル語、ギリシャ語、トルコ語、ベトナム語、イタリア語、オランダ語、カタルーニャ語、アラビア語、チュニジアアラビア語、ペルシア語、フィリピノ語、ウクライナ語、カザフ語、スウェーデン語、日本語、エスペラント語、ヒンディー語、チェコ語、ポーランド語、ウズベク語、韓国語、ブルトン語、グジャラート語、タジク語、テルグ語、キルギス語、ジョージア語のモデルに加えて、専用の話者識別モデルが含まれています。

一部の言語には、パネルに複数のバリアントがあります(例:モバイルハードウェア向けの小型モデルと、より大きく高精度なモデル)。したがって、選択肢が1つだけだと決めつけず、プロジェクト設定パネルで対象言語のオプションを直接確認する価値があります。各バリアントの精度、サイズ、ライセンスの詳細については、Voskの全モデル一覧を参照してください。

パラメータと挙動

Voskはwhisper.cppとは根本的に異なる認識エンジンであるため、認識パラメータ一覧のほとんどの項目はVoskには適用されません。Voskプロバイダーでサポートされていないセッターを呼び出しても効果はないため、whisper.cpp用に書かれたBlueprintロジックは、プロバイダーを切り替えた後もそのまま動作し続けます。Voskに効果がある関数は次のとおりです。

  • 言語設定: 使用する言語モデルを選択します。Voskは自動言語検出をサポートしていないため、言語をAutoに設定しても無視されます。
  • ステップサイズ設定: 認識に送信される前に蓄積される音声の量を指定します。whisper.cppと同じ仕組みです。Voskはストリーミング認識エンジンであるため、小さな値(Voskプロバイダーのデフォルトは200ミリ秒)にすると、部分的な結果の応答性が保たれます。
  • 最大トークン設定: Vosk用に転用され、後述します。

Max Tokensとストリーミング出力を設定

Set Max Tokens パラメータは、Voskプロバイダが認識されたテキストを On Recognized Text Segment を通じて配信する方法を制御します:

  • 0(デフォルト): テキストは内部に蓄積され、認識が最終確定した時点で、単一の完成済みセグメントとして配信されます。そのタイミングは、VADによってトリガーされる停止(音声起動コマンド認識自動初期化音声認識の例のように)か、プロジェクト内のロジックがStop Speech Recognitionを呼び出すか、最後の音声チャンクを強制的に処理させるかのいずれかです。これは、whisper.cppが使用するセグメントベースの動作と一致します。
  • 0より大きい: プロバイダーはストリーミングモードに切り替わります。完成したセグメントを待つのではなく、認識が進むにつれて部分的な結果をブロードキャストし、それぞれが前回の結果を同じフレーズのより長いバージョンに置き換えます。セグメントが完了すると、テキストは次のセグメント用にリセットされます。短い発話は、On Recognized Text Segmentの複数回のブロードキャストにわたって、次のように見えるかもしれません。
"The"
"The cat"
"The cat is"
"The cat is sleeping"

Vosk自体には組み込みのトークン制限がないため、正確な数値はVoskにとって重要ではありません。0より大きい値であれば、ストリーミング配信が有効になります。

部分結果は、オーディオがキューに入れられる頻度でしか到着しないため(ステップサイズの設定によって制御されます)、応答性の高いライブ出力には、低い最大トークン数と低いステップサイズを組み合わせてください。

プラットフォーム対応

Vosk拡張機能は、Windows、Android、および Meta Quest のようなAndroidベースのプラットフォームで動作します。これは、whisper.cppにGPUアクセラレーションの経路がないAndroidとMeta Questで最も役立ち、特に Meta Quest で特に優れたパフォーマンスを発揮します。すでにWindowsや、VulkanまたはMetalアクセラレーションが利用可能な他のデスクトッププラットフォームを使用している場合、whisper.cppがより良いデフォルトである可能性があります。Voskは、whisper.cppが最も弱いプラットフォーム向けの代替手段として意図されています。

上級: モデルを直接操作する

プロジェクト設定パネルは、ほとんどのプロジェクトでモデルのダウンロードと削除を扱います。プロジェクトがエディターパネルに頼らずにモデルを直接操作する必要がある場合、たとえば実行時に利用可能性を確認したりファイルを管理したりする場合には、プラグインは基盤となるライブラリ関数を公開しています:

  • 利用可能なVoskモデル名を取得: 現在すぐに使用できるモデルの名前を返します。ディスクにすでに展開されているか、単にパッケージ化されて初回使用を待っているだけかのどちらかです。これが Voskモデルパスを設定(名前指定) のドロップダウンの選択肢を提供します。
  • Voskモデルが利用可能か: 上記と同じチェックを、IDで指定した単一のモデルに対して行います。
  • Voskモデルディレクトリを取得: 実行時にモデルが読み込まれるディレクトリの絶対パスを返します。
  • Voskモデルフォルダのパスを取得: ディスク上の特定のモデルのフォルダへの絶対パスを返します。
  • Voskモデルファイルを削除: モデルの展開済みファイルをディスクから削除します。