Перейти к основному содержимому

Как улучшить производительность

Платформы Windows используют Vulkan для ускорения работы GPU, что существенно ускоряет процесс распознавания. На других платформах плагин использует CPU + intrinsics для ускорения. Однако вы можете дополнительно улучшить производительность плагина, следуя рекомендациям ниже:

  1. Уменьшите размер шага

    По умолчанию размер шага составляет 5000 мс (5 секунд), то есть данные аудио распознаются каждые 5 секунд во время захвата. Если вы хотите распознавать аудиоданные чаще, уменьшите размер шага, например, до 500 мс (0,5 секунды).

  2. Используйте меньшую языковую модель

    Вы можете рассмотреть возможность использования меньшей языковой модели, такой как Tiny Quantized (Q5_1), чтобы уменьшить размер модели и улучшить производительность. Инструкции по выбору языковой модели можно найти здесь.

  3. Оптимизируйте управление состоянием распознавания

    При работе с микрофонным входом избегайте ненужных остановок и запусков распознавателя речи. Вместо частого вызова StopSpeechRecognition и StartSpeechRecognition, которые требуют перераспределения ресурсов, рассмотрите возможность управления аудиопотоком напрямую. Например, с использованием захватываемой звуковой волны, применяйте StopCapture и StartCapture для управления потоком аудио при сохранении активного потока распознавания.

  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 может ускорить процесс распознавания с помощью следующих библиотек: Core ML для устройств Apple Silicon, OpenVINO для устройств, включая x86 CPU и Intel GPU, Nvidia GPU Cuda на Windows или Linux, BLAS CPU через OpenBLAS, BLAS CPU через Intel MKL. Обратите внимание, что эти библиотеки не включены в плагин по умолчанию, и их необходимо установить вручную, следуя инструкциям whisper.cpp.