본문으로 건너뛰기

성능 개선 방법

Windows 플랫폼에서는 GPU 가속을 위해 Vulkan을 사용하며, 이를 통해 인식 프로세스가 크게 빨라집니다. 다른 플랫폼에서는 플러그인이 CPU + intrinsics를 사용하여 가속합니다. 그러나 아래의 권장 사항을 따르면 플러그인의 성능을 더욱 향상시킬 수 있습니다:

  1. 스텝 크기 감소

    기본적으로 스텝 크기는 5000ms(5초)로 설정되어 있으며, 이는 캡처 중 5초마다 오디오 데이터가 인식됨을 의미합니다. 더 자주 오디오 데이터를 인식하고 싶다면 스텝 크기를 500ms(0.5초)와 같이 줄일 수 있습니다.

  2. 더 작은 언어 모델 사용

    Tiny Quantized (Q5_1)과 같은 더 작은 언어 모델을 사용하면 모델 크기를 줄이고 성능을 향상할 수 있습니다. 언어 모델을 선택하는 방법에 대한 지침은 여기에서 확인할 수 있습니다.

  3. 인식 상태 관리 최적화

    마이크 입력을 사용할 때 불필요하게 음성 인식기를 중지하고 시작하는 것을 피하세요. StopSpeechRecognitionStartSpeechRecognition을 자주 호출하는 것은 자원 재할당이 필요하므로 효율적이지 않습니다. 대신, 오디오 입력을 직접 제어하는 방법을 고려하세요. 예를 들어, 캡처 가능한 사운드 웨이브를 사용하여 StopCaptureStartCapture를 호출하면 인식 스레드를 유지하면서도 오디오 흐름을 관리할 수 있습니다.

  4. CPU 명령어 세트 변경

    플러그인이 사용하는 기본 라이브러리는 whisper.cpp이며, 이는 CPU 명령어 세트를 활용하여 성능을 향상합니다. 현재 플러그인 내에서 명령어 세트는 코드에 하드코딩되어 있으며, UE의 컴파일러 플래그 전달 제한으로 인해 다양한 매크로를 기반으로 확률적으로 정의됩니다. 대상 플랫폼에서 지원하는 명령어 세트를 수동으로 정의하려면 SpeechRecognizerPrivate.h 파일을 수정할 수 있습니다. 아래는 whisper.cpp에서 현재 사용되는 명령어 세트 목록이며, 이를 SpeechRecognizerPrivate.h 파일에서 직접 정의할 수 있습니다:

    • AVX 및 AVX2 계열:

      • __AVX__
      • __AVXVNNI__
      • __AVX2__
      • __AVX512F__
      • __AVX512VBMI__
      • __AVX512VNNI__
      • __AVX512BF16__
    • 부동소수점 및 SIMD 확장:

      • __FMA__
      • __F16C__
      • __SSE3__
      • __SSSE3__
    • ARM 아키텍처 확장:

      • __ARM_NEON
      • __ARM_FEATURE_SVE
      • __ARM_FEATURE_FMA
      • __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
      • __ARM_FEATURE_MATMUL_INT8
    • POWER 아키텍처 확장:

      • __POWER9_VECTOR__
  5. 가속 라이브러리 사용

    whisper.cpp는 다음과 같은 라이브러리를 사용하여 인식 프로세스를 가속할 수 있습니다: Apple Silicon 장치를 위한 Core ML, x86 CPU 및 Intel GPU를 포함한 장치에서 OpenVINO, Windows 또는 Linux에서 Nvidia GPU Cuda, OpenBLAS를 통한 BLAS CPU 지원, Intel MKL을 통한 BLAS CPU 지원. 이러한 라이브러리는 기본적으로 플러그인에 포함되어 있지 않으며, whisper.cpp의 지침에 따라 수동으로 설치해야 합니다.