마이크 / 음성 활동 감지
마이크로 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: 입력이 “발화 중”으로 판정되는 피크 dB 레벨 임계값입니다.
- Attack: 발화 중 상태로 전환되기 전, 레벨이 임계값 이상으로 유지되어야 하는 시간(초)입니다.
- Release: 대기 상태로 되돌아가기 전, 레벨이 임계값 이하로 유지되어야 하는 시간(초)입니다. 단어 사이의 짧은 침묵을 흡수하여 상태가 깜빡이지 않도록 합니다.
동작 원리
EnableMicActivityDetection은 해당 입력의 미터를 자동으로 활성화하므로, 구독을 직접 관리할 필요가 없습니다. 원시 레벨만 필요한 경우(예: 인게임 VU 미터), SetVolumeMetersEnabled(true)를 호출하고 OnInputVolumeMeters에 직접 바인딩하세요. 오디오 가이드를 참조하세요.
발화 중/대기 상태는 trigger-volume condition으로도 사용할 수 있습니다. OBS Trigger Volume을 참조하세요.
참고: OBS는 음소거된 입력에 대해 빈 레벨을 전송하므로, 감지는 음소거 해제된 청취 가능한 소스에서만 활성화됩니다.
관련 항목
- 오디오 가이드: 볼륨 미터, 음소거/볼륨 제어, 원시 레벨 스트림.
- OBS Trigger Volume: 발화 중/대기 상태에 따라 공간 트리거를 제어합니다.