본문으로 건너뛰기

음성 활동 감지

Streaming Sound WaveCapturable 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)

장점:

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

가장 적합한 용도:

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