Saltar al contenido principal

Cómo mejorar el rendimiento

Las plataformas Windows utilizan Vulkan para la aceleración de la GPU, lo que acelera significativamente el proceso de reconocimiento. En otras plataformas, el complemento usa la CPU + intrinsics para la aceleración. Sin embargo, puedes mejorar aún más el rendimiento del complemento siguiendo las recomendaciones a continuación:

  1. Disminuir el Tamaño del Paso

    De forma predeterminada, el tamaño del paso es de 5000 ms (5 segundos), lo que significa que los datos de audio se reconocen cada 5 segundos durante la captura. Si deseas reconocer los datos de audio con mayor frecuencia, puedes disminuir el tamaño del paso, por ejemplo, a 500 ms (0.5 segundos).

  2. Usar un Modelo de Lenguaje Más Pequeño

    Puedes considerar usar un modelo de lenguaje más pequeño, como Tiny Quantized (Q5_1), para reducir el tamaño del modelo y mejorar el rendimiento. Las instrucciones sobre cómo seleccionar un modelo de lenguaje se pueden encontrar aquí.

  3. Optimizar la Gestión del Estado de Reconocimiento

    Al trabajar con la entrada del micrófono, evita detener e iniciar innecesariamente el reconocedor de voz. En lugar de llamar con frecuencia a StopSpeechRecognition y StartSpeechRecognition, lo que requiere una reasignación de recursos, considera controlar directamente la entrada de audio. Por ejemplo, con una capturable sound wave, usa StopCapture y StartCapture para gestionar el flujo de audio mientras mantienes activa la ejecución del reconocimiento.

  4. Modificar los Conjuntos de Instrucciones de la CPU

    La biblioteca subyacente utilizada en el complemento es whisper.cpp, que emplea conjuntos de instrucciones de la CPU para aumentar el rendimiento del reconocimiento. Actualmente, los conjuntos de instrucciones están codificados en el complemento y definidos por aproximación/probabilidad de su existencia, dependiendo de varios macros, debido a limitaciones de UE para pasar las banderas del compilador. Puedes modificar manualmente el archivo SpeechRecognizerPrivate.h para definir los conjuntos de instrucciones compatibles con tu plataforma objetivo. Aquí está la lista de los conjuntos de instrucciones utilizados actualmente por whisper.cpp, que puedes definir manualmente en el archivo SpeechRecognizerPrivate.h:

    • Familia AVX y AVX2:

      • __AVX__
      • __AVXVNNI__
      • __AVX2__
      • __AVX512F__
      • __AVX512VBMI__
      • __AVX512VNNI__
      • __AVX512BF16__
    • Extensiones de Punto Flotante y SIMD:

      • __FMA__
      • __F16C__
      • __SSE3__
      • __SSSE3__
    • Extensiones de Arquitectura ARM:

      • __ARM_NEON
      • __ARM_FEATURE_SVE
      • __ARM_FEATURE_FMA
      • __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
      • __ARM_FEATURE_MATMUL_INT8
    • Extensiones de Arquitectura POWER:

      • __POWER9_VECTOR__
  5. Usar Librerías de Aceleración

    whisper.cpp puede acelerar el proceso de reconocimiento utilizando las siguientes bibliotecas: Core ML para dispositivos Apple Silicon, OpenVINO en dispositivos incluidos CPUs x86 y GPUs Intel, Nvidia GPU Cuda en Windows o Linux, BLAS CPU a través de OpenBLAS, BLAS CPU a través de Intel MKL. Ten en cuenta que estas bibliotecas no están incluidas en el complemento por defecto y debes instalarlas manualmente siguiendo las instrucciones de whisper.cpp.