تركيب Whisper للتفريغ العربي عالي الجودة محلياً (faster-whisper)
دليل عملي لإعداد faster-whisper مع نموذج large-v3 للتفريغ العربي، يشمل المعالجة المسبقة للصوت، diarization، تنقيح المخرج بـ Ollama، وحفظ SRT للترجمة.
أهمية التفريغ الصوتي المحلي للمؤسسات
بالنسبة للصحفيين، الباحثين، وفرق المنظمات غير الربحية، يعتبر تفريغ المقابلات الصوتية والاجتماعات من أكثر المهام استنزافاً للوقت. الاعتماد على الخدمات السحابية للتفريغ قد ينتهك خصوصية المقابلات الحساسة ويكلف مبالغ طائلة. الحل الأمثل يكمن في استخدام faster-whisper (وهي نسخة محسنة وأسرع 4 مرات من نموذج Whisper الأصلي من OpenAI) لتفريغ الصوت العربي بجودة احترافية وبشكل محلي تماماً (Offline) على جهازك.
المتطلبات التقنية
للحصول على تفريغ سريع ودقيق، يفضل وجود جهاز كمبيوتر مزود ببطاقة رسوميات (NVIDIA GPU) تحتوي على ذاكرة عشوائية (VRAM) لا تقل عن 6 جيجابايت. إذا لم يتوفر، سيعمل النموذج على المعالج العادي (CPU) ولكنه سيكون أبطأ بشكل ملحوظ.
خطوات إعداد خط إنتاج التفريغ (Pipeline)
1. تثبيت البيئة البرمجية
قم بإنشاء بيئة Python معزولة، ثم قم بتثبيت المكتبة عبر موجه الأوامر:
pip install faster-whisper
2. كتابة سكربت التفريغ الأساسي
في ملف Python جديد، استخدم نموذج large-v3 لأنه يوفر أفضل دقة للغة العربية:
from faster_whisper import WhisperModel
# تحميل النموذج (سيتم تنزيله لأول مرة فقط بحجم 3GB تقريباً)
model_size = "large-v3"
model = WhisperModel(model_size, device="cuda", compute_type="float16")
# تحديد ملف الصوت وإجبار النظام على استخدام اللغة العربية
segments, info = model.transcribe("interview.mp3", language="ar", beam_size=5, vad_filter=True)
print("اكتشف النظام اللغة بدقة: '%s' بثقة %f" % (info.language, info.language_probability))
# طباعة التفريغ مع التوقيت الزمني
for segment in segments:
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
ملاحظة تقنية: تفعيل vad_filter=True خطوة حاسمة لتقليل هلوسة النموذج (Hallucinations) خلال فترات الصمت في التسجيل.
3. المعالجة المسبقة للصوت (Audio Pre-processing)
لضمان أعلى دقة ممكنة، يفضل ألا تعطي النموذج ملفاً صوتياً خاماً ومليئاً بالضوضاء. استخدم أداة FFmpeg لتحويل الملف إلى صيغة (WAV بتردد 16kHz) وتطبيق فلتر إزالة الضوضاء المحيطة:
ffmpeg -i raw_audio.mp3 -ar 16000 -ac 1 -c:a pcm_s16le -af "afftdn=nf=-20" clean_audio.wav
4. تمييز المتحدثين (Speaker Diarization)
إذا كانت المقابلة تحتوي على عدة أشخاص، ستحتاج لمعرفة “من قال ماذا”. يمكنك دمج مكتبة WhisperX في السكربت الخاص بك، والتي تقوم بمطابقة التفريغ النصي المستخرج مع نماذج تمييز الأصوات (مثل pyannote) لإعطائك نتيجة تشمل (المتحدث 1: كذا وكذا. المتحدث 2: كذا وكذا).
5. التنقيح الآلي باستخدام Ollama
النماذج الصوتية قد تخطئ في إملاء بعض الأسماء الخاصة أو أرقام التواريخ. لرفع الجودة لتصبح جاهزة للنشر، قم بتمرير النص المفرغ إلى نموذج لغوي محلي (مثل Llama 3) باستخدام Ollama عبر إضافة كود برمجي بسيط يطلب من النموذج: “قم بتصحيح الأخطاء الإملائية والترقيمية في النص التالي دون تغيير المعنى الأصلي”.
الخلاصة
من خلال دمج faster-whisper للتفريغ، مع FFmpeg للصوتيات، و Ollama للتنقيح اللغوي، تكون قد بنيت نظام تفريغ عربي محلي يضاهي أقوى المنصات التجارية، مجاناً، ومع حماية 100% لبياناتك الصحفية والبحثية.