لدي مشاكل في قراءة PDFs والاستماع إليهم يساعدني على الخروج بشكل كبير! لذلك أنا أعمل على تطبيق سهل الاستخدام يمكن إعطاؤه ملف PDF (أو ملف TXT) وأبصق ملف MP3. في المستقبل ، سيكون هذا خادمًا ممتعًا يقوم بالعمل الشاق ، ولكن في الوقت الحالي ، سيكون مجرد مشروع Python/Bash. هذا مشروع شخصي صغير ، لذلك لن يكون هناك تحديثات منتظمة في حد ذاتها ، ولكن عندما يكون لدي وقت سأدفع ما لدي.
أكبر مشكلة في PDFs هي أنهم إما ليس لديهم نص داخل المستند (هي صور بشكل أساسي) أو النص الحالي (عادة ما يكون نتيجة OCR) ذات جودة رديئة. غالبًا ما يكون OCR سيئًا للغاية على PDFs التي أعطيت لي ، لذلك أستخدم Bert (نموذج لغة مقنعة) لتحسين نتائج التحقق من التدقيق. في المستقبل سيتم استبدال هذا من قبل Microsoft's Troch.
إذا كانت OCR هي المشكلة الوحيدة ، فسأستخدم فقط Make OCRMYPDF إلى ESPEAK وسيتم القيام به. لسوء الحظ ، يبدو Espeak فظيعًا. لا يوجد انعكاس ومن الصعب حقًا الانتباه إليه لفترات طويلة من الزمن. هذا هو المكان الذي تأتي فيه TTS Coqui.ai إلى الإنقاذ ، مما يجعل قراءات مدتها ساعات محتملة.
الحلول الأخرى لهذه المشكلة هي مصدر مغلق وتكلف الكثير من المال. هذا مجاني.
في نهاية المطاف ، سيكون لهذا المشروع واجهة مستخدم ويب أنيقة والتي ستتطلب القليل من الإدخال من المستخدم النهائي. هذا هو برنامج إمكانية الوصول بعد كل شيء - سيكون من الغريب إذا كان من الصعب استخدامه. لسوء الحظ ، في الوقت الحالي ، لدي فقط CLI تم اختباره فقط على Linux. ليس الأفضل ، لكنني يجب أن أبدأ في مكان ما.
الطريقة "الأسهل" للقيام بذلك هي تثبيت WSL مع Ubuntu واتبع تعليمات Ubuntu/Debian.
إذا كنت تتخيل وتعرف كيف تنطلق على Windows ، فأخبرني كيف تسير الأمور وكيف فعلت ذلك!
ملاحظة: لسوء الحظ ، من الصعب إعداد أشياء GPU لـ WSL ، وحتى ذلك الحين تعمل فقط لبطاقات CUDA (NVIDIA) ، والتي ليس لدي أي طريقة للاختبار حتى الآن (لا يمكنني اختبار أي أشياء GPU الآن ، ولكن هذا يتجاوز النقطة).
يجب أن أقول ، ليس لدي أي فكرة عن كيفية الحصول على جميع التبعيات (انظر Ubuntu/Debian) على Mac. تقول نظرة سريعة على أن brew أو port يجب أن يكون قادرًا على الحصول على معظمهم ، لكن ليس لدي أي فكرة عن توفرهما. إذا كان لديك جهاز Mac ووجدت ذلك ، فأخبرني كيف فعلت ذلك!
sudo apt install -y python3 python3-venv espeak ffmpeg tesseract-ocr-all python3-dev libenchant-dev libpoppler-cpp-dev pkg-config libavcodec libavtools ghostscript poppler-utils
اصنع وتنشيط بيئة افتراضية ، واحصل على Pytorch ، ثم قم بتشغيله
pip install reading4listeners
وأنت جميعًا على استعداد لتشغيل r4l (انظر أدناه للحصول على معلومات الاستخدام)
على دبيان ، RUN
sudo apt install -y python3 python3-venv espeak ffmpeg tesseract-ocr-all python3-dev libenchant-dev libpoppler-cpp-dev pkg-config libavcodec libavtools ghostscript poppler-utils
git clone https://github.com/CypherousSkies/pdf-to-speech
cd pdf-to-speech
python3 -m venv venv
souce venv/bin/activate
pip install -U pip setuptools wheel cython
الحصول على Pytorch
python setup.py develop
يأخذ ~ 2-3 جيجابايت من مساحة القرص للتثبيت
يقوم r4l [--in_path in/] [--out_path out/] [--lang en] بتشغيل مجموعة المسح والتصحيح على جميع الملفات المتوافقة في الدليل in/ وإخراج ملفات MP3 إلى out/ باستخدام اللغة en (قوسين مربعة تشير إلى معلمات اختيارية ذات قيم افتراضية).
قم بتشغيل r4l --list_langs لسرد اللغات المدعومة
~~ يستخدم هذا البرنامج الكثير من الذاكرة ، لذا أنصح بتوسيع حجم المبادلة بمقدار 10 جيجابايت تقريبًا (لاستخدام Debian fixswap.sh ) ~~ (يجب أن يتم إصلاح هذا الآن ، ولكن إذا نفد من الذاكرة/تعطل بشكل عشوائي ، فإن حجم المبادلة)
على الإعداد الحالي الخاص بي (4 intel i7 8th cores gen ، no GPU ، Debian 10 ، 5GB RAM+7GB SWAP) ، سوف يقرأ الإعداد باللغة الإنجليزية حوالي 440 كلمة/دقيقة (ن = 21 ، r^2 = 0.97) في ملف صوتي 175 كلمة/دقيقة. لذلك يستغرق R4L ~ 11.4 دقيقة لقراءة ملف Word 5000 ، والذي سيستغرق حوالي 28.5 دقيقة للاستماع إلى IRL.
لسوء الحظ ، لا يمكنني تسريعه إلى ما هو أبعد من ذلك لأنظمة وحدة المعالجة المركزية فقط. كانت النقطة الرئيسية للالتصاق هي أن الوصول إلى الملف بطيء ، ولكن مع إدراك ذاكرة الوصول العشوائي المحسّنة ، فإن التباطؤ الرئيسي هو Bert و TTS ، وكلاهما مصمم للتشغيل بسرعة على آلات G/TPU.
على مستوى عال ، إليك كيفية عمل هذا:
input.pdf -> ocrmypdf (ghostscript -> unpaper -> tesseract -ocr) -> المعالجة المسبقة (regex) -> تصحيح OCR (Bert) -> postprocessing (regex) -> النص إلى الكلام (coqui.ai tts) -
من شبه المؤكد أن أحتاج إلى ضبط TROCR/BERT و TTS بشكل أفضل للتعامل بشكل أفضل مع النصوص التي أنا مهتم بها عندما أتمكن من الوصول إلى منصة ML ، ولكن حتى ذلك الحين ، سأستمر في استخدام النماذج الجاهزة. نأمل أن يتم التحكم في كل هذا بواسطة واجهة مستخدم ويب بسيطة لطيفة وترك تعمل على خادم للاستخدام العام. كما أود أن أقوم بتعبئة هذا إلى قابلة للتنفيذ تتطلب الحد الأدنى من المعرفة التقنية لاستخدامها وصيانتها ، ولكن هذا هدف بعيد المنال.