# VoiceRAG – نظام ذكي لتفريغ المحاضرات وتحليلها والتفاعل معها باستخدام الذكاء الاصطناعي
## نبذة عن المشروع
قمت بتطوير VoiceRAG، وهو تطبيق يعتمد على الذكاء الاصطناعي لمعالجة التسجيلات الصوتية والمرئية للمحاضرات والاجتماعات، وتحويلها إلى نصوص منظمة، وتحديد المتحدثين المختلفين، وإتاحة إمكانية التفاعل مع محتوى التسجيل من خلال محادثة ذكية تعتمد على تقنيات التوليد المعزز بالاسترجاع (Retrieval-Augmented Generation – RAG).
يهدف المشروع إلى تحويل التسجيلات الطويلة من مجرد ملفات صوتية أو فيديوهات يصعب البحث داخلها إلى محتوى معرفي يمكن الرجوع إليه والبحث فيه وطرح الأسئلة حوله باللغة العربية أو الإنجليزية.
بدلًا من إعادة الاستماع إلى محاضرة كاملة للعثور على معلومة محددة، يستطيع المستخدم رفع التسجيل، والحصول على تفريغ نصي مرتبط بالتوقيتات وأسماء المتحدثين، ثم طرح أسئلة مباشرة حول ما تمت مناقشته والحصول على إجابات مبنية على محتوى التسجيل نفسه.
## المشكلة التي يعالجها المشروع
تحتوي المحاضرات والاجتماعات والدورات التدريبية على كميات كبيرة من المعلومات التي يصعب مراجعتها يدويًا، خصوصًا عندما تمتد التسجيلات إلى ساعات طويلة أو تتضمن عدة متحدثين.
وتشمل أبرز التحديات:
- صعوبة تحويل التسجيلات الطويلة إلى نصوص قابلة للبحث والمراجعة.
- الحاجة إلى معرفة المتحدث الذي قال كل جزء من المحادثة.
- استهلاك وقت كبير في البحث عن معلومة محددة داخل تسجيل كامل.
- صعوبة التعامل مع التسجيلات التي تحتوي على اللغة العربية والإنجليزية أو الانتقال بينهما.
- الحاجة إلى نظام يتيح فهم محتوى التسجيل والإجابة عن الأسئلة المتعلقة به، بدلًا من الاكتفاء بتحويل الصوت إلى نص.
- ضرورة متابعة استهلاك الخدمات المستخدمة وتكلفة معالجة الملفات والمحادثات.
لذلك، يجمع VoiceRAG بين معالجة الصوت، والتعرف على الكلام، وتحديد المتحدثين، واسترجاع المعلومات، والنماذج اللغوية الكبيرة ضمن تطبيق واحد متكامل.
## كيف يعمل النظام؟
### 1. رفع الملفات ومعالجة الصوت والفيديو
يتيح التطبيق رفع ملفات المحاضرات والتسجيلات الصوتية والمرئية، مع دعم مجموعة من الصيغ الشائعة، مثل MP4 وMKV وAVI وMOV وWebM للفيديو، وMP3 وWAV وFLAC وOGG وM4A للصوت.
يستخدم النظام FFmpeg لاستخراج المسار الصوتي من ملفات الفيديو وتحويله إلى صيغة مناسبة للمعالجة، بما يشمل صوتًا أحادي القناة بمعدل أخذ عينات 16 كيلوهرتز.
بعد ذلك، ينتقل الملف إلى مراحل معالجة الصوت والتعرف على الكلام بصورة منظمة.
### 2. تقسيم الصوت واكتشاف مقاطع الكلام
يستخدم المشروع تقنية Voice Activity Detection (VAD) من خلال Silero VAD لاكتشاف المقاطع التي تحتوي على كلام، والمساعدة في استبعاد فترات الصمت قبل إرسال المقاطع إلى مرحلة التفريغ النصي.
تساعد هذه المرحلة على تنظيم عملية معالجة التسجيلات الطويلة وتقسيمها إلى أجزاء مناسبة للمعالجة اللاحقة.
### 3. تحويل الكلام إلى نص باستخدام الذكاء الاصطناعي
يعتمد النظام على Gemini Flash Lite من خلال واجهة Gemini API لتحويل المقاطع الصوتية إلى نصوص باستخدام تقنية Automatic Speech Recognition (ASR).
يدعم النظام معالجة المحاضرات باللغة العربية والإنجليزية، بما في ذلك التسجيلات التي تجمع بين اللغتين، مع اكتشاف اللغة تلقائيًا أثناء عملية التفريغ.
لا يقتصر الناتج على نص متصل فقط، بل يحتفظ النظام بتقسيمات الكلام والتوقيتات اللازمة لعرض المحتوى بصورة منظمة وربطه بالمتحدثين.
### 4. تحديد المتحدثين وربط الكلام بكل متحدث
يستخدم المشروع pyannote.audio، من خلال نموذج Speaker Diarization 3.1، لتحديد المقاطع الزمنية التي يتحدث فيها كل شخص، وتمييز المتحدثين عن بعضهم البعض داخل التسجيل.
بعد معالجة الملف، يستطيع المستخدم الاستماع إلى عينات صوتية مرتبطة بالمتحدثين المكتشفين، ثم تعيين أسماء مناسبة لهم بدلًا من الاعتماد على معرفات افتراضية.
على سبيل المثال، يمكن تنظيم التفريغ النصي بحيث يظهر كل مقطع مع توقيته واسم الشخص الذي تحدث فيه، وهو ما يجعل مراجعة المحاضرات والمناقشات أكثر سهولة.
ومن المهم التمييز بين تحديد المتحدثين (Speaker Diarization) والتعرف على الهوية الحقيقية للشخص؛ إذ يحدد النظام المتحدثين المختلفين داخل التسجيل، بينما يتيح للمستخدم تعيين أسمائهم يدويًا.
### 5. تجهيز النصوص وبناء قاعدة معرفية قابلة للبحث
بعد إنشاء التفريغ النصي، يستخدم النظام LangChain لتقسيم المحتوى إلى أجزاء نصية أصغر مع الحفاظ على قدر من التداخل بين الأجزاء المتجاورة.
ثم يحول النصوص إلى تمثيلات رقمية دلالية (Embeddings) باستخدام النموذج متعدد اللغات paraphrase-multilingual-MiniLM-L12-v2.
تُخزن هذه التمثيلات داخل PostgreSQL باستخدام إضافة pgvector، بما يسمح باسترجاع الأجزاء النصية الأكثر ارتباطًا بالأسئلة التي يطرحها المستخدم.
يتيح هذا النهج البحث الدلالي عن المعنى، وليس مجرد البحث عن تطابق حرفي للكلمات، مما يساعد على العثور على المعلومات ذات الصلة حتى عندما تختلف صياغة السؤال عن صياغة الكلام في المحاضرة.
ويعمل نموذج التضمينات محليًا على CPU ضمن بنية المشروع، بينما تُستخدم خدمات النماذج الخارجية في مراحل التفريغ النصي وتوليد الإجابات.
### 6. إنشاء مساعد ذكي للإجابة عن الأسئلة باستخدام RAG
تتمثل إحدى أهم وظائف المشروع في تحويل كل محاضرة إلى مصدر معرفي يستطيع المستخدم الاستفسار منه عبر واجهة محادثة تفاعلية.
يعتمد النظام على بنية Retrieval-Augmented Generation، وتمر عملية الإجابة بالمراحل التالية:
1. تحويل سؤال المستخدم إلى تمثيل رقمي باستخدام نموذج التضمينات نفسه.
2. البحث داخل قاعدة البيانات المتجهية لاسترجاع أكثر خمسة مقاطع نصية ارتباطًا بالسؤال.
3. إرسال المقاطع المسترجعة مع السؤال إلى نموذج Gemma 4 31B IT من خلال Hugging Face Inference API.
4. إنشاء إجابة تعتمد على المعلومات المسترجعة من التفريغ النصي للمحاضرة.
5. عرض الإجابة للمستخدم بصورة تفاعلية مع تدفق النص أثناء إنشائه.
يساعد هذا الأسلوب على ربط إجابات النموذج بمحتوى التسجيل بدلًا من الاعتماد على المعرفة العامة للنموذج وحدها.
كما صُمم النظام ليجيب باللغة نفسها التي يطرح بها المستخدم السؤال؛ فعند طرح سؤال باللغة العربية، تكون الإجابة بالعربية، مع الاستناد إلى محتوى المحاضرة المتاح في قاعدة المعرفة.
### 7. عرض الإجابات بصورة مباشرة
يستخدم التطبيق Server-Sent Events (SSE) لإرسال الإجابات إلى الواجهة تدريجيًا أثناء إنشائها، بدلًا من انتظار اكتمال الإجابة بالكامل قبل عرضها.
يوفر ذلك تجربة أكثر تفاعلية عند الاستفسار عن المحاضرات، خصوصًا عندما تحتاج الإجابة إلى معالجة عدة مقاطع نصية أو توليد رد طويل.
### 8. متابعة التكلفة واستهلاك النماذج
يتضمن المشروع آلية لتتبع استخدام الرموز وتكلفة استدعاءات نماذج الذكاء الاصطناعي لكل محاضرة ومحادثة.
تشمل المتابعة عمليات التفريغ النصي واستدعاءات النموذج اللغوي، بما يوفر رؤية أفضل لاستهلاك الخدمات الخارجية ويساعد على تقدير التكلفة التشغيلية عند التعامل مع عدد كبير من التسجيلات والأسئلة.
## أهم مميزات المشروع
- **تفريغ صوتي متعدد اللغات:** تحويل التسجيلات العربية والإنجليزية والمختلطة إلى نصوص قابلة للبحث.
- **تحديد المتحدثين:** تقسيم التسجيل بحسب المتحدث، مع إتاحة الاستماع إلى عينات صوتية وتعيين الأسماء.
- **نصوص مرتبطة بالتوقيتات:** تنظيم محتوى المحاضرة في مقاطع زمنية لتسهيل المراجعة.
- **مساعد محادثة ذكي:** طرح أسئلة حول محتوى المحاضرة والحصول على إجابات قائمة على المقاطع المسترجعة من النص.
- **بحث دلالي:** استرجاع المقاطع الأكثر ارتباطًا بالسؤال باستخدام Embeddings وقاعدة بيانات متجهية.
- **إجابات متدفقة:** عرض الردود تدريجيًا باستخدام SSE.
- **دعم اللغة العربية وواجهة RTL:** عرض المقاطع النصية العربية من اليمين إلى اليسار بصورة مناسبة.
- **سجل المحاضرات والمحادثات:** حفظ بيانات المحاضرات والتفريغات والمقاطع والرسائل، مع إمكانية استرجاع التفاصيل وحذف المحاضرات وبياناتها المرتبطة.
- **متابعة استهلاك النماذج:** تسجيل استخدام الرموز والتكاليف المرتبطة بعمليات الذكاء الاصطناعي.
- **واجهات API منظمة:** توفير نقاط اتصال لرفع الملفات، ومتابعة حالة المعالجة، وإدارة المتحدثين، وطرح الأسئلة، واسترجاع سجل المحادثة وبيانات المحاضرات.
- **سهولة التشغيل:** تجهيز التطبيق باستخدام Docker وDocker Compose لتشغيل خدمات التطبيق وقاعدة البيانات ضمن بيئة موحدة.
## التقنيات والأدوات المستخدمة
**الذكاء الاصطناعي ومعالجة الصوت:**
- Gemini Flash Lite API لتحويل الكلام إلى نص.
- Silero VAD لاكتشاف مقاطع الكلام.
- pyannote.audio 3.1 لتحديد المتحدثين.
- Gemma 4 31B IT لتوليد الإجابات.
**أنظمة RAG والبحث الدلالي:**
- LangChain لإدارة تقسيم النصوص واسترجاع المعلومات وسلسلة المحادثة.
- Sentence Transformers لإنشاء التمثيلات الدلالية متعددة اللغات.
- PostgreSQL 16 لتخزين بيانات المحاضرات والمحادثات.
- pgvector لتخزين التمثيلات المتجهية وتنفيذ البحث بالتشابه.
**تطوير الواجهة الخلفية:**
- Python 3.12.
- FastAPI لبناء خدمات الويب وواجهات API.
- SQLAlchemy بنمط Async للتعامل غير المتزامن مع قاعدة البيانات.
- Pydantic لإدارة إعدادات التطبيق والتحقق من البيانات.
**تطوير الواجهة الأمامية:**
- HTML وCSS وJavaScript.
- تصميم تفاعلي بواجهة داكنة وأسلوب Glassmorphism.
- SSE لعرض الإجابات المتدفقة.
- دعم العرض من اليمين إلى اليسار للنصوص العربية.
**التشغيل والاختبار:**
- Docker وDocker Compose لتجهيز بيئة التشغيل.
- Pytest لاختبار واجهات API ومراحل معالجة الملفات.
## حالات الاستخدام المحتملة
يمكن الاستفادة من النظام في بناء حلول ذكية لعدة قطاعات، منها:
- **التعليم والتدريب:** تحويل المحاضرات إلى نصوص قابلة للبحث، والاستفسار عن المفاهيم والمعلومات التي شرحها المحاضر.
- **الجامعات والطلاب:** تسهيل مراجعة المحاضرات المسجلة والعثور على إجابات للأسئلة المتعلقة بمحتواها.
- **الاجتماعات وفرق العمل:** تنظيم التسجيلات وتحديد المتحدثين والبحث في محتوى المناقشات.
- **الشركات ومراكز التدريب:** الاستفادة من التسجيلات كمصادر معرفية يمكن الاستفسار منها بدلًا من الرجوع إلى الملفات يدويًا.
- **منصات التعليم الإلكتروني:** تطوير أدوات تساعد المتعلمين على مراجعة المحتوى والتفاعل معه.
- **أنظمة إدارة المعرفة:** تحويل المحتوى الصوتي والمرئي إلى بيانات نصية منظمة يمكن ربطها بأنظمة البحث والمساعدين الذكيين.
## القيمة التقنية للمشروع
يُظهر VoiceRAG إمكانية دمج عدة مكونات للذكاء الاصطناعي في تطبيق واحد يبدأ من ملف صوتي أو مرئي، ثم يمر بمراحل معالجة الصوت والتفريغ النصي وتحديد المتحدثين، وينتهي بقاعدة معرفية تتيح البحث الدلالي والإجابة عن الأسئلة.
كما يجمع المشروع بين تطوير واجهة خلفية غير متزامنة، وتصميم قاعدة بيانات علائقية ومتجهية، والتكامل مع واجهات النماذج الخارجية، وبناء واجهة تفاعلية، وإدارة التشغيل باستخدام Docker، مع اختبارات للتحقق من عمل واجهات التطبيق ومراحل المعالجة.
**النتيجة النهائية:** تطبيق متكامل يحول تسجيلات المحاضرات والاجتماعات إلى محتوى منظم وقابل للاستكشاف، مع إمكانية إجراء محادثة ذكية حول المعلومات الواردة في التسجيلات، والاستفادة من المتحدثين والتوقيتات والبحث الدلالي للوصول إلى المعلومات المطلوبة بسهولة.