본문으로 건너뛰기

음성 활동 감지

Streaming Sound Wave는 Capturable Sound Wave와 같은 파생 유형들과 함께 음성 활동 감지(VAD)를 지원합니다. VAD는 들어오는 오디오 데이터를 필터링하여 음성이 감지되었을 때만 내부 버퍼를 채웁니다.

이 플러그인은 두 가지 VAD 구현을 제공합니다:

기본 구현에서는 Runtime Audio Importer가 지원하는 모든 플랫폼과 엔진 버전에서 효율적으로 작동하는 경량 음성 활동 감지 라이브러리인 libfvad를 사용합니다.

기본 사용법​

사운드 웨이브를 생성한 후 VAD를 활성화하려면 ToggleVAD 함수를 사용하세요:

Toggle VAD node

VAD를 활성화한 후, 언제든지 재설정할 수 있습니다:

Reset VAD node

기본 VAD 설정​

기본 VAD 프로바이더를 사용하는 경우, VAD 모드를 변경하여 공격성을 조정할 수 있습니다:

Set VAD Mode node

모드 매개변수는 VAD가 오디오를 얼마나 공격적으로 필터링할지 제어합니다. 값이 높을수록 더 제한적이므로 오탐지를 보고할 가능성이 낮지만 일부 음성을 놓칠 수 있습니다.

VAD 제공자​

ToggleVAD 함수로 VAD를 활성화한 후, 필요에 따라 다양한 음성 활동 감지 제공업체 중에서 선택할 수 있습니다. 기본 제공업체는 내장되어 있으며, Silero VAD와 같은 추가 제공업체는 확장 플러그인을 통해 사용할 수 있습니다.

Set VAD Provider node

현재 VAD Provider 가져오기​

스트리밍 사운드 웨이브에 현재 할당된 VAD 프로바이더를 GetVADProvider 함수를 사용하여 가져올 수 있습니다. 이는 Silero VAD의 음성 임계값 설정과 같은 프로바이더별 기능에 액세스해야 할 때 별도의 참조를 유지할 필요 없이 유용합니다.

Get VAD Provider node

제공자별 기능에 접근하려면 반환된 제공자를 원하는 유형으로 형변환하세요. 예를 들어, Silero VAD 고유 기능에 접근하려면:

Get VAD Provider Cast To Silero node

Silero VAD Extension​

Silero VAD는 신경망을 사용하여 더 정확한 음성 감지를 제공합니다. 사용하려면:

  1. Runtime Audio Importer 플러그인이 프로젝트에 이미 설치되어 있는지 확인하세요.

  2. UE 5.5 및 이전 버전의 경우: Silero VAD extension plugin을 다운로드하기 전에 프로젝트에서 NNERuntimeORT가 비활성화되어 있는지 확인하십시오. NNERuntimeORT가 활성화되어 있으면 이러한 엔진 버전에서 Silero VAD를 사용할 때 충돌로 인해 크래시가 발생할 수 있습니다.

  3. Silero VAD 확장 플러그인을 여기에서 다운로드하세요.

  4. 다운로드한 아카이브에서 폴더를 프로젝트의 Plugins 폴더에 압축 해제하세요 (이 폴더가 없으면 생성하세요).

  5. UE 5.6 이후의 경우: RuntimeAudioImporterSileroVAD.uplugin 파일을 편집하여 NNERuntimeORT 종속성을 추가합니다. "Plugins" 필드에서 RuntimeAudioImporter 추가 뒤에 다음을 추가하세요:

    ,
    {
    "Name": "NNERuntimeORT",
    "Enabled": true
    }
  6. 프로젝트를 다시 빌드하세요 (이 확장 기능은 C++ 프로젝트가 필요합니다)

important
  • 기본 VAD는 Runtime Audio Importer가 지원하는 모든 엔진 버전(UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8)에서 작동합니다.

  • Silero VAD는 Unreal Engine 4.27 및 모든 UE5 버전(4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8)을 지원합니다.

  • UE 5.5 및 이전 버전: NNERuntimeORT는 플러그인 충돌로 인한 크래시를 방지하기 위해 Silero VAD를 사용하기 전에 비활성화해야 합니다. 특히 UE 5.3에서는 NNERuntimeORTCpu와 NNERuntimeORTGpu도 비활성화해야 합니다.

  • UE 5.6+ 요구 사항: Unreal Engine 5.6부터, Silero VAD 확장 기능은 NNERuntimeORT 플러그인 종속성을 .uplugin 파일에 수동으로 추가해야 합니다.

  • Silero VAD는 Windows, Linux, Mac, Android(Meta Quest 포함) 및 iOS에서 사용할 수 있습니다.

  • 이 확장 기능은 소스 코드로 제공되며 사용하려면 C++ 프로젝트가 필요합니다.

  • 플러그인을 수동으로 빌드하는 방법에 대한 자세한 정보는 플러그인 빌드 튜토리얼을 참조하세요.

설치 후에는 SetVADProvider 함수에 Silero 클래스 제공자를 사용하여 VAD 제공자로 선택할 수 있습니다.

음성 임계값​

Silero VAD 제공자는 오디오 세그먼트를 음성으로 간주하는 데 필요한 최소 신뢰도 점수(신경망의 음성 확률 출력에서 나온)를 제어하는 Speech Threshold 파라미터를 노출합니다. GetVADProvider로 제공자를 가져와 Silero VAD 제공자 유형으로 캐스팅한 후 SetSpeechThreshold 함수를 사용하여 이 값을 설정할 수 있습니다.

Set Speech Threshold node

SetSpeechThreshold는 임계값이 성공적으로 적용되면 true를 반환하고, 그렇지 않으면 false를 반환합니다(예를 들어 값이 유효 범위를 벗어난 경우).

A 높은 임계값은 감지를 더 보수적으로 만듭니다: 배경 소음으로 인한 오탐지를 줄여주지만, 더 조용하거나 명확하지 않은 음성을 놓칠 수도 있습니다. A 낮은 임계값은 감지를 더 민감하게 만듭니다: 더 많은 음성을 포착하지만 오탐지 위험이 높아집니다. 기본값은 0.5입니다.

음성 시작 및 종료 감지​

음성 활동 감지는 단순히 음성의 존재를 감지할 뿐 아니라, 음성 활동의 시작과 끝까지 감지할 수 있습니다. 이는 재생이나 캡처 중에 음성이 시작되거나 끝날 때 이벤트를 트리거하는 데 유용합니다.

음성 시작 및 종료 감지의 민감도는 최소 음성 지속 시간이나 무음 지속 시간 같은 매개변수를 조정하여 사용자 지정할 수 있습니다. 이러한 매개변수는 짧은 소음이나 지나치게 짧은 발화 간 멈춤 등을 잘못 감지하는 오탐지를 피하도록 감지를 미세 조정하는 데 도움이 됩니다.

최소 음성 지속 시간​

Minimum Speech Duration 매개변수는 음성 시작 이벤트를 트리거하는 데 필요한 지속적인 음성 활동의 최소 시간을 설정합니다. 이는 말소리로 간주되어서는 안 되는 짧은 소음을 걸러내는 데 도움이 되며, 지속적인 음성 활동만 인식되도록 합니다. Minimum Speech Duration의 기본값은 300 밀리초입니다.

Set Minimum Speech Duration node

무음 지속 시간​

Silence Duration 매개변수는 음성 종료 이벤트를 트리거하는 데 필요한 무음 지속 시간을 설정합니다. 이는 단어나 문장 사이의 자연스러운 멈춤 동안 음성 감지가 너무 일찍 종료되는 것을 방지합니다. Silence Duration의 기본값은 500밀리초입니다.

Set Silence Duration node

Speech Delegates에 바인딩​

음성이 시작되거나 종료될 때 특정 델리게이트에 바인딩할 수 있습니다. 이는 음성 활동을 기반으로 텍스트 인식 시작/중지 또는 다른 오디오 소스의 볼륨 조절과 같은 커스텀 동작을 트리거하는 데 유용합니다.

Bind Event To On Speech Started Bind Event To On Speech Ended

VAD 제공자 비교​

기본 VAD (libfvad)​

장점:

  • 가볍고 효율적입니다
  • 모든 플랫폼에서 작동합니다
  • 최소한의 리소스 사용
  • 모바일 및 저전력 기기에 적합합니다

가장 적합한 용도:

  • 조용한 환경에서의 간단한 음성 감지
  • 모바일 애플리케이션
  • 성능이 우선인 프로젝트
  • 범용 플랫폼 지원이 필요할 때