Home
Login
ggml-org/whisper.cpp

منفذ C/C++ عالي الأداء لنموذج التعرف على الكلام OpenAI Whisper، يدعم الاستدلال النقي لوحدة المعالجة المركزية (CPU) والنشر عبر منصات متعددة.

MITC++ 40.8kggml-org Last Updated: 2025-06-13
https://github.com/ggml-org/whisper.cpp

نظرة مفصلة على مشروع Whisper.cpp

نظرة عامة على المشروع

Whisper.cpp هو نسخة عالية الأداء مكتوبة بلغة C/C++ من نموذج التعرف التلقائي على الكلام (ASR) Whisper الخاص بـ OpenAI. يقوم هذا المشروع بإعادة تنفيذ نموذج Whisper الأصلي القائم على Python بلغة C/C++ خالصة، مما يحقق وظيفة التعرف على الكلام بكفاءة عالية وبدون تبعيات، وهو مناسب بشكل خاص للتشغيل في البيئات محدودة الموارد والأجهزة المدمجة.

الوظائف والميزات الأساسية

🚀 ميزات تحسين الأداء

محرك استدلال فعال

  • تنفيذ بلغة C/C++ خالصة: لا توجد تبعيات على Python، سرعة تشغيل عالية، واستهلاك منخفض للذاكرة.
  • تخصيص ذاكرة صفري في وقت التشغيل: تحسين إدارة الذاكرة، وتجنب تجزئة الذاكرة في وقت التشغيل.
  • دعم الدقة المختلطة: حسابات دقة مختلطة F16/F32، لتحقيق التوازن بين الدقة والأداء.
  • تحديد الكمية الصحيحة: يدعم طرق تحديد الكمية المتعددة (Q5_0، Q8_0، إلخ)، مما يقلل بشكل كبير من حجم النموذج واستخدام الذاكرة.

دعم تسريع الأجهزة

  • تحسينات Apple Silicon:
    • تحسينات مجموعة تعليمات ARM NEON
    • تكامل إطار عمل Accelerate
    • تسريع Metal GPU
    • دعم Core ML ANE (المحرك العصبي)
  • تحسينات بنية x86: تسريع مجموعة تعليمات AVX/AVX2
  • دعم تسريع GPU:
    • دعم NVIDIA CUDA
    • تسريع Vulkan GPU عبر الأنظمة الأساسية
    • دعم OpenCL
  • دعم الأجهزة المخصصة:
    • تسريع الاستدلال Intel OpenVINO
    • دعم Huawei Ascend NPU
    • دعم وحدة معالجة الرسومات Moore Threads

🌍 دعم عبر الأنظمة الأساسية

أنظمة التشغيل المدعومة

  • منصات سطح المكتب: macOS (Intel/Apple Silicon)، Linux، Windows، FreeBSD
  • منصات الهاتف المحمول: iOS، Android
  • مضمنة: Raspberry Pi والأجهزة الأخرى التي تعمل بنظام ARM
  • منصة الويب: دعم WebAssembly، يمكن تشغيله في المتصفح

روابط متعددة اللغات

  • دعم أصلي: C/C++، Objective-C
  • روابط رسمية: JavaScript، Go، Java، Ruby
  • روابط مجتمعية: Python، Rust، C#/.NET، R، Swift، Unity

🎯 وحدات الوظائف الأساسية

محرك التعرف على الكلام

  • نسخ في الوقت الفعلي: يدعم التعرف على الكلام في الوقت الفعلي من الميكروفون
  • معالجة الدفعات: يدعم النسخ المجمّع لملفات الصوت
  • دعم متعدد اللغات: يدعم التعرف على الكلام بـ 99 لغة
  • فصل المتحدثين: يدعم وظيفة بسيطة لتحديد هوية المتحدث

قدرات معالجة الصوت

  • دعم متعدد التنسيقات: يدعم تنسيقات صوتية متعددة من خلال تكامل FFmpeg
  • تكييف معدل العينة: يعالج تلقائيًا مدخلات الصوت بمعدلات عينة مختلفة
  • المعالجة المسبقة للصوت: وظائف مدمجة لتنظيم الصوت والمعالجة المسبقة

خيارات تنسيق الإخراج

  • الطوابع الزمنية: معلومات الطابع الزمني بدقة تصل إلى أجزاء من الألف من الثانية
  • تقييمات الثقة: يوفر تقييمات ثقة على مستوى الكلمات
  • تنسيقات إخراج متعددة: يدعم تنسيقات مثل النص و JSON وترجمات SRT
  • وضع الكاريوكي: يدعم إنشاء مخرجات فيديو متزامنة ومميزة

🔧 خصائص البنية التقنية

هيكل النموذج

  • هندسة المشفر-فك الشفرة: يحافظ على هيكل المحولات الخاص بنموذج Whisper الأصلي
  • تنسيق GGML مخصص: تنسيق نموذج ثنائي مُحسَّن، يحتوي على جميع المكونات الضرورية
  • اختيار حجم النموذج: مجموعة متنوعة من المواصفات من tiny (39 ميجابايت) إلى large (1.55 جيجابايت)

إدارة الذاكرة

  • تخصيص الذاكرة الثابتة: تخصيص جميع الذاكرة الضرورية في وقت التشغيل
  • تخطيط الذاكرة: طريقة فعالة لتحميل ملفات النموذج
  • تحسين ذاكرة التخزين المؤقت: آلية ذكية لتخزين نتائج الحساب مؤقتًا

سيناريوهات التطبيق الرئيسية

🎤 تطبيقات الصوت في الوقت الفعلي

  • مساعد صوتي: بناء تطبيقات مساعد صوتي غير متصلة بالإنترنت
  • ترجمة في الوقت الفعلي: توفير ترجمة في الوقت الفعلي لمؤتمرات الفيديو والبث المباشر
  • ملاحظات صوتية: تطبيق ملاحظات صوتية إلى نص في الوقت الفعلي

📱 تطبيقات الهاتف المحمول

  • النسخ دون اتصال: تنفيذ التعرف على الكلام دون اتصال بالإنترنت تمامًا على الأجهزة المحمولة
  • إدخال صوتي: توفير وظيفة الإدخال الصوتي لتطبيقات الهاتف المحمول
  • ترجمة متعددة اللغات: تحقيق الترجمة الصوتية بالاشتراك مع نموذج الترجمة

🖥️ تطبيقات سطح المكتب والخادم

  • معالجة مجمعة لملفات الصوت: النسخ التلقائي لعدد كبير من ملفات الصوت
  • إنتاج المحتوى: إنشاء ترجمات تلقائية للبودكاست ومحتوى الفيديو
  • نظام خدمة العملاء: النسخ التلقائي وتحليل صوت خدمة العملاء عبر الهاتف

معايير قياس الأداء

مقارنة بين مواصفات النماذج المختلفة

النموذج حجم القرص استخدام الذاكرة سرعة الاستدلال الدقة
tiny 75 ميجابايت ~273 ميجابايت الأسرع أساسي
base 142 ميجابايت ~388 ميجابايت سريع جيد
small 466 ميجابايت ~852 ميجابايت متوسط جيد جدا
medium 1.5 جيجابايت ~2.1 جيجابايت أبطأ ممتاز
large 2.9 جيجابايت ~3.9 جيجابايت بطيء الأفضل

تأثير تسريع الأجهزة

  • Apple M1/M2: يمكن لتسريع Metal GPU تحسين الأداء بمقدار 3-5 مرات
  • NVIDIA GPU: يمكن لتسريع CUDA تحسين الأداء بمقدار 5-10 مرات
  • Intel CPU: يمكن لمجموعة تعليمات AVX2 تحسين الأداء بمقدار 2-3 مرات

مثال البدء السريع

التجميع والاستخدام الأساسي

# استنساخ المشروع
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp

# تجميع المشروع
cmake -B build
cmake --build build --config Release

# تنزيل النموذج
./models/download-ggml-model.sh base.en

# نسخ الصوت
./build/bin/whisper-cli -f samples/jfk.wav -m models/ggml-base.en.bin

استخدام Docker

# تنزيل النموذج
docker run -it --rm -v $(pwd)/models:/models \
  ghcr.io/ggml-org/whisper.cpp:main \
  "./models/download-ggml-model.sh base /models"

# نسخ الصوت
docker run -it --rm \
  -v $(pwd)/models:/models \
  -v $(pwd)/audio:/audio \
  ghcr.io/ggml-org/whisper.cpp:main \
  "whisper-cli -m /models/ggml-base.bin -f /audio/sample.wav"

مزايا المشروع

✅ المزايا التقنية

  1. أداء عالي: تنفيذ أصلي بلغة C/C++، أداء ممتاز
  2. استهلاك منخفض للموارد: كفاءة عالية في استخدام الذاكرة ووحدة المعالجة المركزية
  3. لا توجد تبعيات: لا حاجة إلى Python أو بيئات وقت التشغيل الأخرى
  4. عبر الأنظمة الأساسية: يدعم جميع الأنظمة الأساسية الرئيسية تقريبًا
  5. تسريع الأجهزة: الاستفادة الكاملة من قدرات تسريع الأجهزة الحديثة

✅ المزايا العملية

  1. سهولة التكامل: يوفر واجهة برمجة تطبيقات C-style، سهلة التكامل في المشاريع الحالية
  2. نشر بسيط: ملف تنفيذي واحد، نشر بسيط
  3. تشغيل دون اتصال: يعمل دون اتصال بالإنترنت تمامًا، ويحمي الخصوصية
  4. مفتوح المصدر ومجاني: ترخيص MIT، صديق للأعمال
  5. صيانة نشطة: مجتمع نشط، تحديثات متكررة

القيود والاحتياطات

⚠️ القيود التقنية

  1. تنسيق الصوت: يدعم بشكل أساسي تنسيق WAV ذي 16 بت، وتتطلب التنسيقات الأخرى التحويل
  2. نموذج اللغة: استنادًا إلى بيانات التدريب، قد لا يكون التعرف على بعض اللهجات واللهجات دقيقًا بدرجة كافية
  3. الوقت الفعلي: على الرغم من التحسين الجيد، قد لا يكون قادرًا على تحقيق المعالجة في الوقت الفعلي على الأجهزة المنخفضة
  4. متطلبات الذاكرة: لا تزال النماذج الكبيرة تتطلب مساحة ذاكرة أكبر

💡 اقتراحات الاستخدام

  1. اختيار النموذج: حدد مواصفات النموذج المناسبة بناءً على الدقة ومتطلبات الأداء
  2. تحسين الأجهزة: الاستفادة الكاملة من قدرات تسريع الأجهزة للنظام الأساسي المستهدف
  3. المعالجة المسبقة للصوت: تأكد من جودة الصوت المدخل للحصول على أفضل تأثير للتعرف
  4. استخدام التحديد الكمي: ضع في اعتبارك استخدام نماذج التحديد الكمي في البيئات محدودة الموارد

نظام المشروع والتوسع

المشاريع ذات الصلة

  • whisper.spm: إصدار Swift Package Manager
  • whisper.rn: ربط React Native
  • whisper.unity: تكامل محرك الألعاب Unity
  • روابط لغات مختلفة: دعم متعدد اللغات لـ Python و Rust و Go والمزيد

ملخص

Whisper.cpp هو حل ممتاز للغاية للتعرف على الكلام، وقد نجح في نقل نموذج Whisper الخاص بـ OpenAI إلى نظام C/C++ الأساسي، مما يحقق أداءً عاليًا واستهلاكًا منخفضًا للموارد وتوافقًا واسعًا مع الأنظمة الأساسية. سواء تم استخدامه لتطوير تطبيقات الهاتف المحمول أو الأنظمة المدمجة أو عمليات نشر الخادم واسعة النطاق، يمكن لـ whisper.cpp توفير قدرات موثوقة وفعالة للتعرف على الكلام.

هذا المشروع مناسب بشكل خاص للسيناريوهات التالية:

  • التطبيقات التي تتطلب التعرف على الكلام دون اتصال بالإنترنت
  • المشاريع التي لديها متطلبات صارمة للأداء واستهلاك الموارد
  • حلول التعرف على الكلام عبر الأنظمة الأساسية
  • المطورون الذين يرغبون في التكامل مع مشاريع C/C++ الحالية