انتقل إلى المحتوى الرئيسي

كيفية تحسين الأداء

تستخدم منصات Windows واجهة Vulkan لتسريع معالجة GPU، مما يزيد بشكل كبير من سرعة عملية التعرف. على المنصات الأخرى، يستخدم البرنامج المساعد وحدة المعالجة المركزية (CPU) بالإضافة إلى التعليمات الداخلية (intrinsics) للتسريع. ومع ذلك، يمكنك تحسين أداء البرنامج المساعد أكثر باتباع التوصيات التالية:

  1. تقليل حجم الخطوة

    بشكل افتراضي، يكون حجم الخطوة 5000 مللي ثانية (5 ثوانٍ)، مما يعني أن بيانات الصوت يتم التعرف عليها كل 5 ثوانٍ أثناء الالتقاط. إذا كنت ترغب في التعرف على بيانات الصوت بشكل أكثر تكرارًا، يمكنك تقليل حجم الخطوة، مثل 500 مللي ثانية (0.5 ثانية).

  2. استخدام نموذج لغة أصغر

    يمكنك التفكير في استخدام نموذج لغة أصغر، مثل Tiny Quantized (Q5_1)، لتقليل حجم النموذج وتحسين الأداء. يمكن العثور على تعليمات حول كيفية اختيار نموذج لغة هنا.

  3. تحسين إدارة حالة التعرف

    عند العمل مع مدخلات الميكروفون، تجنب التوقف والبدء غير الضروريين لبرنامج التعرف على الكلام. بدلاً من استدعاء StopSpeechRecognition و StartSpeechRecognition بشكل متكرر، مما يتطلب إعادة تخصيص الموارد، فكر في التحكم في مدخلات الصوت مباشرة. على سبيل المثال، مع موجة صوتية قابلة للالتقاط، استخدم StopCapture و StartCapture لإدارة تدفق الصوت مع الحفاظ على نشاط خيط التعرف.

  4. تغيير مجموعات تعليمات وحدة المعالجة المركزية

    المكتبة الأساسية المستخدمة في البرنامج المساعد هي whisper.cpp، والتي تستخدم مجموعات تعليمات وحدة المعالجة المركزية لزيادة أداء التعرف. حاليًا، يتم ترميز مجموعات التعليمات في الكود داخل البرنامج المساعد وتحديدها عن طريق التقريب/الاحتمالية لوجودها اعتمادًا على وحدات الماكرو المختلفة، بسبب قيود Unreal Engine لتمرير أعلام المترجم. يمكنك تعديل ملف 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 ووحدات معالجة الرسوميات Intel، Nvidia GPU Cuda على Windows أو Linux، دعم وحدة المعالجة المركزية BLAS عبر OpenBLAS، دعم وحدة المعالجة المركزية BLAS عبر Intel MKL. يرجى ملاحظة أن هذه المكتبات غير مضمنة في البرنامج المساعد افتراضيًا ويجب عليك تثبيتها يدويًا، باتباع تعليمات whisper.cpp.