السلام عليكم ورحمة الله وبركاته
سُعدت بالمشاركة في العمل على https://github.com/Itqan-community/Munajjam/issues/101
وسأشارك هنا توضيحًا للمشكلة التي عملت عليها والحل الذي اعتمدته، ليستفيد منه بقية المطورين.
المشكلة: يعتمد مشروع Munajjam حاليًا على WhisperX كخلفية (backend) افتراضية للتفريغ الصوتي، وهي تحتاج إلى معالج رسومي (GPU) محلي لتعمل بكفاءة. وكان المطلوب إضافة خيار بديل (Google Cloud Chirp 3) يعمل عبر السحابة دون الحاجة إلى GPU، مع ضمان أن يُعيد نفس بنية البيانات التي يعتمد عليها المشروع، وأن تتم معالجة أخطاء الشبكة والمصادقة بشكل سليم.
طريقة الحل الذي اتبعته:
إضافة صنف (class) باسم ChirpTranscriber يتصل بواجهة Google Cloud Speech-to-Text V2، ويستخدم نموذج chirp_3 مع اللغة العربية (ar-SA)
تقسيم أي تسجيل تزيد مدته عن 50 ثانية إلى مقاطع أصغر تلقائيًا، نظرًا لأن الواجهة البرمجية لا تقبل مقاطع أطول من دقيقة واحدة تقريبًا
استخدام خوارزمية المطابقة التقريبية (fuzzy matching) نفسها المعتمدة أصلًا مع WhisperX، لربط كل كلمة تُستخرج من Chirp 3 بموضعها الصحيح في نص الآية
تسجيل الخلفية الجديدة ضمن نظام الـ factory الحالي، بحيث يمكن تفعيلها عبر الخيار \u200E--whisper-backend chirp3
إضافة اختبارات وحدة (unit tests) بمحاكاة استجابة واجهة Google البرمجية، وتوثيق مقارنة بينها وبين WhisperX
النتيجة النهائية بعد حل المشكلة: أصبح لدى المشروع خيار تجريبي للتفريغ الصوتي يعمل عبر السحابة دون الحاجة إلى GPU محلي، ويُعيد نفس بنية البيانات المستخدمة في بقية أجزاء المشروع دون الإخلال بها، وهو جاهز الآن للاستخدام في مقارنته بـ WhisperX قبل اتخاذ قرار باعتماده كخيار دائم.
رابط الـ Pull Request:
https://github.com/Itqan-community/Munajjam/pull/111