音声アシスタントは、Large Language Model(LLM)の呼び出しや音声出力の生成を開始する前に「発話終了」信号を待つ必要があるため、知覚可能な遅延が発生することがよくあります。RealtimeVADは、標準的なSilero VADモデルよりも中央値で100ms早く「ポーズ」イベントを提供することでこのボトルネックを解消し、生成的な音声パイプラインにおけるより迅速な遷移を可能にします。
高速検出のメカニズム
RealtimeVADは、何をもって発話とするかを判断するためにSilero VADモデルの使用を維持しつつ、高頻度のチェックを重ね合わせています。システムは10msごとに、現在のオーディオレベルを周囲のルームノイズおよび話者自身の音量と比較します。
これらのベースラインに対してオーディオが静かになった瞬間、システムは「ポーズ」イベントをトリガーします。これは、Sileroモデルの内部確率スコアがターン終了を知らせるほど十分に低下するよりもずっと前に発生します。
HN Digestによる図(github.comの報告数値に基づく)。数値はソースの表記通り。
「RealtimeVADはそれをより早く行います。何が発話であるかを判断するためにSilero VADを保持しつつ、2番目のより速いチェックを追加します。つまり、10msごとにオーディオレベルをルームのノイズおよび話者のレベルと比較するのです。」
— GitHub - KoljaB/RealtimeVAD: Faster speech off signals for spec gen voice pipelines
パフォーマンスのベンチマークとトレードオフ
3,279件の実際の音声アシスタントのターンにわたるテストでは、RealtimeVADの「ポーズ」イベントは82%の確率でSileroの終了信号よりも早く到着しました。しかし、このスピードには偽陽性の頻度が高くなるという代償が伴います。このツールはあらゆる息遣いや停止子(stop consonant)で反応するため、実際には単一の文章内にある短い間隔に過ぎない多くの「ポーズ」を特定してしまいます。
開発者は、これらの頻繁な「ポーズ」イベントを利用して、文字起こしの準備やLLMデータの事前取得などの推測的な作業を開始することができ、話者が継続している場合はそれらをキャンセルすることも可能です。システムが迅速なキャンセルを処理できない場合は、「ポーズ」イベントを無視して最終的な「終了」信号を待つこともできますが、その信号であってもSileroのデフォルト設定よりは早く到着します。
環境的な制約と制限
100msの先行時間はオーディオ環境に大きく依存します。周囲のノイズが話者の音量から20dB以内の範囲にある部屋では、システムがソフトな発話の終わりと背景ノイズを区別できないため、この先行時間は失われます。
さらに、このツールは16 kHzのモノラルオーディオを必要とし、ノイズ抑制が有効な場合に最高のパフォーマンスを発揮します。電話回線のような非常に静かな、あるいは帯域の狭い音声の場合、システムは依然として基礎となるSileroモデル固有の限界に達する可能性があります。