Login

تنفيذ مُحسَّن لـ Whisper للتعرف على الكلام يعتمد على CTranslate2، أسرع 4 مرات ويستهلك ذاكرة أقل من الإصدار الأصلي.

MITPython 17.0kSYSTRANfaster-whisper Last Updated: 2025-06-02

تفاصيل مشروع Faster-Whisper

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

Faster-Whisper هو إعادة تنفيذ لنموذج OpenAI Whisper، يستخدم CTranslate2 كمحرك استدلال سريع. مقارنةً بالإصدار الأصلي openai/whisper، يحقق Faster-Whisper سرعة تصل إلى 4 أضعاف مع الحفاظ على نفس الدقة، بالإضافة إلى استهلاك أقل للذاكرة. من خلال تقنية التكميم 8 بت، يمكن زيادة الكفاءة بشكل أكبر على وحدات المعالجة المركزية (CPU) ووحدات معالجة الرسوميات (GPU).

الميزات الأساسية

🚀 مزايا الأداء

  • زيادة السرعة: أسرع بـ 4 مرات من Whisper الأصلي
  • تحسين الذاكرة: استهلاك أقل للذاكرة
  • دعم التكميم: يدعم التكميم 8 بت لزيادة الأداء
  • المعالجة الدفعية: يدعم النسخ الصوتي الدفعي لزيادة الإنتاجية

🛠️ الميزات التقنية

  • يعتمد على محرك الاستدلال CTranslate2
  • يدعم التنفيذ على وحدات GPU و CPU
  • متوافق مع نماذج Whisper الأصلية
  • يدعم أوضاع دقة متعددة (FP16، FP32، INT8)
  • فك تشفير الصوت مدمج (لا حاجة لـ FFmpeg)

مقارنة الأداء

اختبار أداء GPU (NVIDIA RTX 3070 Ti 8GB)

مقارنة أداء نسخ صوتي لمدة 13 دقيقة:

حل التنفيذ الدقة حجم الشعاع الوقت استهلاك ذاكرة الفيديو
openai/whisper fp16 5 2m23s 4708MB
whisper.cpp (Flash Attention) fp16 5 1m05s 4127MB
faster-whisper fp16 5 1m47s 3244MB
faster-whisper int8 5 1m33s 2926MB

اختبار أداء CPU (Intel Core i7-12700K)

حل التنفيذ الدقة حجم الشعاع الوقت استهلاك الذاكرة
openai/whisper fp32 5 6m58s 2335MB
whisper.cpp fp32 5 2m05s 1049MB
faster-whisper fp32 5 2m37s 2257MB
faster-whisper int8 5 1m42s 1477MB

تعليمات التثبيت

متطلبات النظام

  • بايثون 3.9 أو أحدث
  • يتطلب تنفيذ GPU دعم مكتبة NVIDIA CUDA

التثبيت الأساسي

pip install faster-whisper

تثبيت دعم GPU

يتطلب تثبيت مكتبات NVIDIA:

  • CUDA 12.x
  • cuDNN 9.x
  • cuBLAS
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*
export LD_LIBRARY_PATH=`python3 -c 'import os; import nvidia.cublas.lib; import nvidia.cudnn.lib; print(os.path.dirname(nvidia.cublas.lib.__file__) + ":" + os.path.dirname(nvidia.cudnn.lib.__file__))'`

طريقة Docker

# استخدام صورة NVIDIA CUDA الرسمية
docker run --gpus all -it nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04

دليل الاستخدام

النسخ الصوتي الأساسي

from faster_whisper import WhisperModel

model_size = "large-v3"

# تنفيذ GPU (FP16)
model = WhisperModel(model_size, device="cuda", compute_type="float16")

# أو تنفيذ GPU (INT8)
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")

# أو تنفيذ CPU (INT8)
# model = WhisperModel(model_size, device="cpu", compute_type="int8")

segments, info = model.transcribe("audio.mp3", beam_size=5)

print("اللغة المكتشفة '%s'، باحتمالية %f" % (info.language, info.language_probability))

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

النسخ الصوتي الدفعي

from faster_whisper import WhisperModel, BatchedInferencePipeline

model = WhisperModel("turbo", device="cuda", compute_type="float16")
batched_model = BatchedInferencePipeline(model=model)

segments, info = batched_model.transcribe("audio.mp3", batch_size=16)

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

الطوابع الزمنية على مستوى الكلمة

segments, _ = model.transcribe("audio.mp3", word_timestamps=True)

for segment in segments:
    for word in segment.words:
        print("[%.2fs -> %.2fs] %s" % (word.start, word.end, word.word))

كشف نشاط الصوت (VAD)

# تمكين تصفية VAD
segments, _ = model.transcribe("audio.mp3", vad_filter=True)

# تخصيص معلمات VAD
segments, _ = model.transcribe(
    "audio.mp3",
    vad_filter=True,
    vad_parameters=dict(min_silence_duration_ms=500),
)

دعم Distil-Whisper

from faster_whisper import WhisperModel

model_size = "distil-large-v3"
model = WhisperModel(model_size, device="cuda", compute_type="float16")

segments, info = model.transcribe(
    "audio.mp3", 
    beam_size=5, 
    language="en", 
    condition_on_previous_text=False
)

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

تحويل النموذج

التحويل من Transformers

pip install transformers[torch]>=4.23

ct2-transformers-converter \
    --model openai/whisper-large-v3 \
    --output_dir whisper-large-v3-ct2 \
    --copy_files tokenizer.json preprocessor_config.json \
    --quantization float16

تحميل النماذج المخصصة

# التحميل من دليل محلي
model = WhisperModel("whisper-large-v3-ct2")

# التحميل من Hugging Face Hub
model = WhisperModel("username/whisper-large-v3-ct2")

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

  • تحويل الكلام إلى نص
  • النسخ الصوتي في الوقت الفعلي
  • توليد الترجمات (التعليقات التوضيحية)
  • الترجمة متعددة اللغات
  • تحليل الصوت
  • فهرسة محتوى الصوت

التكوين والتحسين

تكوين السجلات

import logging

logging.basicConfig()
logging.getLogger("faster_whisper").setLevel(logging.DEBUG)

نصائح لتحسين الأداء

  • استخدم تسريع GPU للحصول على أفضل أداء
  • اختر وضع الدقة المناسب بناءً على الأجهزة
  • المعالجة الدفعية لزيادة الإنتاجية
  • تمكين تصفية VAD لتقليل وقت المعالجة
  • ضبط حجم الشعاع وحجم الدفعة بشكل مناسب

تكوين الخيوط

# تعيين عدد خيوط CPU
OMP_NUM_THREADS=4 python3 my_script.py

البنية التقنية

المكونات الأساسية

  • CTranslate2: محرك استدلال سريع
  • PyAV: مكتبة فك تشفير الصوت
  • Silero VAD: كشف نشاط الصوت
  • Transformers: دعم تحويل النموذج

النماذج المدعومة

  • سلسلة OpenAI Whisper (tiny، base، small، medium، large-v1/v2/v3)
  • سلسلة Distil-Whisper
  • النماذج المخصصة المعدلة بدقة

المجتمع والدعم

الخلاصة

Faster-Whisper هو حل عالي الأداء للتعرف على الكلام، يحقق زيادة كبيرة في السرعة من خلال تحسين محرك الاستدلال، مع الحفاظ على نفس الدقة مثل Whisper الأصلي. ميزاته الغنية، ودعمه البيئي الجيد، وواجهة برمجة التطبيقات سهلة الاستخدام تجعله خيارًا مثاليًا لتطبيقات التعرف على الكلام. سواء كنت مطورًا أو باحثًا، يمكنك من خلال Faster-Whisper بناء تطبيقات معالجة صوتية فعالة بسرعة.

Star History Chart