Skip to content

Desuq Cafe

ドキュメントメニュー

この翻訳は最新の英語版より遅れている場合があります。 英語版を表示

マイク / 音声アクティビティ検出

マイクから OBS を制御できます。これは VTuber の定番である「発話中 → アニメーション、アイドル → 休止」ループを、完全にエンジン内で実現するものです。プラグインは入力の音声レベルを OBS の InputVolumeMeters 経由で監視し、デバウンス付きヒステリシス検出器(アタック/リリースのタイミングにより、短い語間でステートがちらつかないようにする)を通して処理し、入力が発話中 ⟷ アイドルのしきい値を超えるとイベントを発火します。

使い方

UInhyeongOBSSubsystem* OBS = GetGameInstance()->GetSubsystem<UInhyeongOBSSubsystem>();

// Start detecting. ThresholdDb / Attack / Release default to sensible voice values.
OBS->EnableMicActivityDetection(TEXT("Mic/Aux"), /*ThresholdDb=*/-40.f, /*Attack=*/0.05f, /*Release=*/0.5f);

// React to talking <-> idle transitions
OBS->OnMicActivityChanged.AddDynamic(this, &AMyActor::HandleMicActivity);

// ...or poll on demand
bool bTalking = OBS->IsMicActive(TEXT("Mic/Aux"));

// Stop detecting (leaves the underlying meter subscription on for other consumers)
OBS->DisableMicActivityDetection(TEXT("Mic/Aux"));

API

メンバー説明
EnableMicActivityDetection(Input, ThresholdDb=-40, Attack=0.05, Release=0.5)指定した入力の検出を開始します。その入力の音量メーターを自動的に有効化します。
DisableMicActivityDetection(Input)検出を停止します。他のコンシューマーが利用している可能性があるため、内部のメーターサブスクリプションはそのままにします。
IsMicActive(Input)現在の発話中/アイドルのステートをポーリングします。
OnMicActivityChanged発話中 ⟷ アイドルのトランジションのたびに発火します。

パラメーター

  • ThresholdDb: 入力が「発話中」とみなされる peak-dB レベル。
  • Attack: 発話中に切り替わるまで、レベルがしきい値を上回り続ける必要がある秒数。
  • Release: アイドルに切り替わるまで、レベルがしきい値を下回り続ける必要がある秒数(語間をまたいでステートがちらつかないようにするハングオーバー)。

仕組み

EnableMicActivityDetection は入力のメーターを自動的に登録するため、サブスクリプションを自分で管理する必要はありません。生のレベルだけが必要な場合(例: ゲーム内 VU メーターなど)は、SetVolumeMetersEnabled(true) を呼び出して OnInputVolumeMeters に直接バインドしてください。詳しくは音声ガイドを参照してください。

発話中/アイドルはトリガー条件としても利用できます。OBS Trigger Volume を参照してください。

注意: OBS はミュートされた入力に対して空のレベルを送信するため、検出はミュート解除された聴こえるソースに対してのみアクティブになります。

関連項目

  • 音声ガイド: 音量メーター、ミュート/音量制御、生レベルストリーム。
  • OBS Trigger Volume: 発話中/アイドルのステートに基づいて空間トリガーをゲート制御する。