플러그인 사용 방법
Runtime Speech Recognizer 플러그인은 들어오는 오디오 데이터에서 단어를 인식하도록 설계되었습니다. 엔진과 함께 작동하도록 약간 수정된 버전의 whisper.cpp를 사용합니다. 플러그인을 사용하려면 다음 단계를 따르세요.
에디터 측
- 프로젝트에 적합한 언어 모델을 여기에 설명된 대로 선택하세요.
런타임 측
- Create a Speech Recognizer and set the necessary parameters (CreateSpeechRecognizer, for parameters see here).
- Bind to the needed delegates (OnRecognitionFinished, OnRecognizedTextSegment and OnRecognitionError).
- Start the speech recognition (StartSpeechRecognition).
- Process audio data and wait for results from the delegates (ProcessAudioData).
- Stop the speech recognizer when needed (e.g., after the OnRecognitionFinished broadcast).
이 플러그인은 부동 소수점 32비트 인터리브 PCM 형식의 입력 오디오를 지원합니다. Runtime Audio Importer와는 잘 작동하지만, 여기에 직접적으로 의존하지는 않습니다.
인식 매개변수
이 플러그인은 스트리밍 및 비스트리밍 오디오 데이터 인식을 모두 지원합니다. 특정 사용 사례에 맞게 인식 매개변수를 조정하려면 SetStreamingDefaults 또는 SetNonStreamingDefaults를 호출하세요. 또한 스레드 수, 스텝 크기, 수신 언어를 영어로 번역할지 여부, 과거 전사 사용 여부와 같은 개별 매개변수를 수동으로 설정할 수 있는 유연성이 있습니다. 사용 가능한 전체 매개변수 목록은 인식 매개변수 목록을 참조하세요.
성능 향상
플러그인 성능 최적화에 대한 팁은 성능 개선 방법 섹션을 참조하세요. Android 및 Meta Quest와 같은 Android 기반 플랫폼에서는 Vosk 확장 기능도 고려하세요. 이는 whisper.cpp에서 GPU 가속을 지원하지 않는 하드웨어를 위한 대체 제공자를 제공합니다.
음성 활동 감지(VAD)
오디오 입력을 처리할 때, 특히 스트리밍 시나리오에서는 인식기에 도달하기 전에 빈 오디오 또는 노이즈만 있는 오디오 세그먼트를 걸러내기 위해 음성 활동 감지(VAD)를 사용하는 것이 좋습니다. 이 필터링은 Runtime Audio Importer 플러그인을 사용하여 캡처 가능한 사운드 웨이브 측에서 활성화할 수 있으며, 이는 언어 모델이 환각을 일으키는 것, 즉 노이즈에서 패턴을 찾아 잘못된 전사를 생성하는 것을 방지하는 데 도움이 됩니다.
최적의 음성 인식 결과를 얻으려면 뛰어난 잡음 내성과 더 정확한 음성 감지를 제공하는 Silero VAD 제공자를 사용하는 것이 좋습니다. Silero VAD는 Runtime Audio Importer 플러그인의 확장 기능으로 제공됩니다. VAD 구성에 대한 자세한 지침은 음성 활동 감지 문서를 참조하세요.
아래 예제의 복사 가능한 노드들은 호환성 이유로 기본 VAD 공급자를 사용합니다. 인식 정확도를 높이려면 Silero VAD로 쉽게 전환할 수 있습니다:
- Silero VAD 확장을 Silero VAD 확장 섹션에 설명된 대로 설치합니다.
- Toggle VAD 노드로 VAD를 활성화한 후, Set VAD Provider 노드를 추가하고 드롭다운에서 "Silero"를 선택합니다.
플러그인에 포함된 데모 프로젝트에서는 VAD가 기본적으로 활성화되어 있습니다. 데모 구현에 대한 자세한 정보는 데모 프로젝트에서 확인할 수 있습니다.
Examples
플러그인의 Content -> Demo 폴더에 좋은 프로젝트 데모가 포함되어 있으며, 구현 예시로 사용할 수 있습니다.
이 예제들은 Runtime Audio Importer를 사용하여 오디오 데이터를 획득하는 것을 예시로, Runtime Speech Recognizer 플러그인을 스트리밍 및 비스트리밍 오디오 입력과 함께 사용하는 방법을 보여줍니다. 예제에서 선보이는 동일한 오디오 가져오기 기능(예: 캡처 가능한 사운드 웨이브 및 ImportAudioFromFile)에 액세스하려면 RuntimeAudioImporter를 별도로 다운로드해야 합니다. 이 예제들은 핵심 개념을 설명하기 위한 용도로만 제공되며 오류 처리를 포함하지 않습니다.
스트리밍 오디오 입력 예제
참고: UE 5.3 및 기타 버전에서는 Blueprints를 복사한 후 누락된 노드가 발생할 수 있습니다. 이는 엔진 버전 간 노드 직렬화 차이로 인해 발생할 수 있습니다. 항상 모든 노드가 구현에서 제대로 연결되어 있는지 확인하십시오.
1. 기본 스트리밍 인식
이 예제는 캡처 가능한 사운드 웨이브를 사용하여 마이크에서 오디오 데이터를 스트림으로 캡처하고 이를 음성 인식기에 전달하는 기본 설정을 보여줍니다. 약 5초 동안 음성을 녹음한 다음 인식을 처리하므로 빠른 테스트와 간단한 구현에 적합합니다. 복사 가능한 노드.
이 설정의 주요 기능:
- 5초 고정 녹음 시간
- 간단한 원샷 인식
- 최소한의 설정 요구사항
- 테스트 및 프로토타이핑에 적합

2. 제어된 스트리밍 인식
이 예제는 기본 스트리밍 설정을 확장하여 인식 프로세스를 수동으로 제어할 수 있게 합니다. 원할 때 인식을 시작하고 중지할 수 있어, 인식이 발생하는 시점을 정밀하게 제어해야 하는 시나리오에 적합합니다. 복사 가능한 노드.
이 설정의 주요 기능:
- 수동 시작/중지 제어
- 연속 인식 기능
- 유연한 녹음 시간
- 대화형 애플리케이션에 적합

3. 음성 명령 인식
이 예제는 명령 인식 시나리오에 최적화되어 있습니다. 스트리밍 인식과 음성 활동 감지(VAD)를 결합하여 사용자가 말을 멈추면 음성을 자동으로 처리합니다. 인식기는 침묵이 감지되었을 때만 누적된 음성 처리를 시작하므로 명령 기반 인터페이스에 적합합니다. 복사 가능한 노드.
이 설정의 주요 기능:
- 수동 시작/중지 제어
- 음성 활동 감지(VAD)를 활성화하여 음성 구간을 감지합니다
- 침묵이 감지되면 자동으로 인식이 트리거됩니다
- 짧은 명령 인식에 최적입니다
- 실제 음성만 인식하여 처리 오버헤드를 줄입니다

4. 최종 버퍼 처리를 통한 음성 인식 자동 초기화
이 예제는 음성 활성화 인식 접근 방식의 또 다른 변형으로, 수명 주기 처리가 다릅니다. 초기화 중에 인식기를 자동으로 시작하고 초기화 해제 중에는 중지합니다. 주요 특징은 인식기를 중지하기 전에 마지막으로 누적된 오디오 버퍼를 처리하여, 사용자가 인식 프로세스를 종료하려 할 때 음성 데이터가 손실되지 않도록 하는 것입니다. 이 설정은 말하는 도중에 중지하더라도 사용자의 완전한 발화를 캡처해야 하는 애플리케이션에 특히 유용합니다. 복사 가능한 노드.
이 설정의 주요 기능:
- 초기화 시 인식기를 자동으로 시작합니다
- 초기화 해제 시 인식기를 자동으로 중지합니다
- 완전히 중지하기 전에 마지막 오디오 버퍼를 처리합니다
- 효율적인 인식을 위해 음성 활동 감지(VAD)를 사용합니다
- 중지할 때 음성 데이터가 손실되지 않도록 보장합니다

비스트리밍 오디오 입력
이 예제는 오디오 데이터를 Imported Sound Wave로 가져오고, 가져오기가 완료되면 전체 오디오 데이터를 인식합니다. 복사 가능한 노드.
