
Read2me هو تطبيق fastapi الذي يجلب محتوى من عناوين URL المقدمة ، ويعالج النص ، ويحوله إلى خطاب باستخدام Microsoft Azure's Edge TTS أو مع نماذج TTS المحلية F5-TTS ، Styletts2 أو Piper TTS ، وعلامات ملفات MP3 الناتجة مع البيانات الوصفية. يمكنك إما تحويل النص الكامل إلى صوت أو الحصول على LLM تحويل نص البذور إلى بودكاست. حاليا Ollama وأي واجهة برمجة تطبيقات متوافقة مع Openai مدعومة. يمكنك تثبيت امتداد الكروم المقدم في أي متصفح قائم على الكروم (على سبيل المثال Chrome أو Microsoft Edge) لإرسال عناوين URL الحالية أو أي نص إلى المقطع ، وإضافة مصادر وكلمات رئيسية للجلب التلقائي.
هذا إصدار تجريبي حاليًا ، لكنني أخطط لتمديده لدعم أنواع المحتوى الأخرى (على سبيل المثال ، EPUB) في المستقبل وأقدم دعمًا أكثر قوة للغات غير الإنجليزية. حاليًا ، عند استخدام Azure Edge TTS الافتراضي ، فإنه يدعم بالفعل اللغات الأخرى ويحاول توسيعها من النص ولكن قد تختلف الجودة اعتمادًا على اللغة.
requirements.txt txt لـ EDGE-TTS ، متطلبات منفصلة لـ F5 و Stylets2. استنساخ المستودع:
git clone https://github.com/WismutHansen/READ2ME.git
cd read2meإنشاء وتفعيل بيئة افتراضية:
python -m venv .venv
source .venv/bin/activate # On Windows: .venvScriptsactivateأو إذا كنت ترغب في استخدام الأشعة فوق البنفسجية لإدارة الحزم:
uv venv
source .venv/bin/activate # On Windows: .venvScriptsactivateتثبيت التبعيات:
pip install -r requirements.txt (or uv pip install -r requirements.txt)بالنسبة لنموذج STYLTTS2 المحلي ، يرجى أيضًا تثبيت التبعيات الإضافية:
pip install -r requirements_stts2.txt (or uv pip install -r requirements_stts2.txt)لنموذج F5-TTS ، يرجى أيضًا تثبيت التبعيات الإضافية:
pip install -r requirements_F5.txt (or uv pip install -r requirements_F5.txt)تثبيت الكاتب المسرحي
playwright installإذا كنت تستخدم الأشعة فوق البنفسجية ، يرجى أيضًا التثبيت:
uv pip install pipلدعم Pipertts المحلي:
python3 -m TTS.piper_tts.instalpipertts (MacOS and Linux) or python -m TTS.piper_tts.instalpipertts (on Windows)ملاحظة: مطلوب FFMPEG عند استخدام إما styletts2 أو pipertts لتحويل ملفات WAV إلى mp3. يتطلب Styletts أيضًا تثبيت ESPEAK-NG على نظامك.
إعداد متغيرات البيئة:
إعادة تسمية .env.example ملف في مدير الجذر إلى .env وتحرير المحتوى إلى تفضيلاتك:
OUTPUT_DIR=Output # Directory to store output files
SOURCES_FILE=sources.json # File containing sources to retrieve articles from twice a day
IMG_PATH=front.jpg # Path to image file to use as cover
OLLAMA_BASE_URL=http://localhost:11434 # Standard Port for Ollama
OPENAI_BASE_URL=http://localhost:11434/v1 # Example for Ollama Open AI compatible endpoint
OPENAI_API_KEY=skxxxxxx # Your OpenAI API Key in case of using the official OpenAI API
MODEL_NAME=llama3.2:latest
LLM_ENGINE=Ollama # Valid Options: Ollama, OpenAIيمكنك استخدام إما Ollama أو أي واجهة برمجة تطبيقات متوافقة مع Openai لللقب وتوليد البرمجيات البودكاست (وظيفة ملخصية أيضًا قريبًا)
استنساخ المستودع والتبديل إليه:
git clone https://github.com/WismutHansen/READ2ME.git && cd read2meانسخ .env.example to .env وتحرير المحتويات: مهم: عند استخدام محرك LLM المحلي ، على سبيل المثال Ollama ، يحتاج عنوان URL إلى اتباع هذا التنسيق "host.docker.internal: 11434 (for Ollama) أو" host.docker.internal: 1234 "(for lmstudio)
بناء حاوية Docker
docker build -t read2me . ملاحظة: يستغرق وقت البناء وقتًا طويلاً ، كن صبوراً
قم بتشغيل حاوية Docker
docker run -p 7777:7777 -d read2meملاحظة: يستغرق وقت البناء وقتًا طويلاً ، كن صبوراً
نسخ وإعادة تسمية .env.example إلى .env . قم بتحرير محتوى هذا الملف كما يحلو لك ، وتحديد دليل الإخراج وملف المهمة ومسار الصورة لاستخدامه في غطاء ملف MP3 بالإضافة إلى ملف المصادر والكلمات الرئيسية.
قم بتشغيل تطبيق Fastapi:
uvicorn main:app --host 0.0.0.0 --port 7777أو ، إذا كنت متصلاً بخادم Linux على سبيل المثال عبر SSH وتريد الاحتفاظ بالتطبيق بعد إغلاق جلستك
nohup uvicorn main:app --host 0.0.0.0 --port 7777 & سيؤدي ذلك إلى كتابة جميع إخراج سطر الأوامر إلى ملف يسمى nohup.out في دليل العمل الحالي الخاص بك.
إضافة عناوين URL للمعالجة:
أرسل طلبًا منشورًا إلى http://localhost:7777/v1/url/full مع جسم JSON يحتوي على عنوان URL:
{
"url" : " https://example.com/article "
} يمكنك استخدام curl أو أي عميل API مثل Postman لإرسال هذا الطلب مثل هذا:
curl -X POST http://localhost:7777/v1/url/full/
-H " Content-Type: application/json "
-d ' {"url": "https://example.com/article"} '
-d ' {"tts-engine": "edge"} 'يحتوي المستودع أيضًا على امتداد كروم يعمل يمكنك تثبيته في أي متصفح يعتمد على الكروم (مثل Google Chrome) عند تمكين إعدادات المطور.
معالجة عناوين URL:
يتحقق التطبيق بشكل دوري من ملف tasks.json . إنه يجلب المحتوى لعنوان URL معين ، ويستخلص النص ، ويحوله إلى الكلام ، ويحفظ ملفات MP3 الناتجة مع البيانات الوصفية المناسبة.
حدد المصادر والكلمات الرئيسية للاسترجاع التلقائي:
قم بإنشاء ملف يسمى sources.json في دليل العمل الحالي الخاص بك مع عناوين URL إلى مواقع الويب التي تريد مراقبتها لمقالات جديدة. يمكنك أيضًا تعيين الكلمات الرئيسية العالمية والكلمات الرئيسية لكل المصدر لاستخدامها كمرشحات لاسترجاع تلقائي. إذا قمت بتعيين "*" لمصدر ، فسيتم استرداد جميع المقالات الجديدة. هنا هيكل مثال:
{
"global_keywords" : [
" globalkeyword1 " ,
" globalkeyword2 "
],
"sources" : [
{
"url" : " https://example.com " ,
"keywords" : [ " keyword1 " , " keyword2 " ]
},
{
"url" : " https://example2.com " ,
"keywords" : [ " * " ]
}
]
}موقع كلا الملفات قابل للتكوين في ملف .env.
لاستخدام الواجهة الأمامية Next.js ، تأكد من تثبيت Node.js على نظامك. ملاحظة: الواجهة الأمامية حاليًا في مرحلة تجريبية مبكرة ، لذا توقع الكثير من الأخطاء: أولاً ، انتقل إلى دليل الواجهة الأمامية
cd frontendثم قم بتثبيت تبعيات العقدة المطلوبة:
npm installثم لبدء تشغيل الواجهة الأمامية:
npm run devيمكنك الوصول إلى الواجهة الأمامية على http: // localhost: 3000
post/v1/url/full
يضيف عنوان URL إلى قائمة المعالجة.
طلب الجسم:
{
"url" : " https://example.com/article " ,
"tts-engine" : " edge "
}إجابة:
{
"message" : " URL added to the processing list "
}post/v1/url/podcast
post/v1/text/full
post/v1/text/podcast
شوكة المستودع.
إنشاء فرع جديد:
git checkout -b feature/your-feature-nameقم بإجراء تغييراتك وارتكابها:
git commit -m ' Add some feature 'ادفع إلى الفرع:
git push origin feature/your-feature-nameإرسال طلب سحب.
تم ترخيص هذا المشروع بموجب إصدار ترخيص Apache 2.0 ، يناير 2004 ، باستثناء رمز Styletts2 ، الذي تم ترخيصه بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. نماذج F5-TTS ABD Styletts2 تدرب مسبقًا تحت رخصتها الخاصة.
النماذج التي تم تدريبها مسبقًا: قبل استخدام هذه النماذج التي تم تدريبها مسبقًا ، فإنك توافق على إبلاغ المستمعين بأن عينات الكلام يتم تصنيعها بواسطة النماذج التي تم تدريبها مسبقًا ، إلا إذا كان لديك إذن لاستخدام الصوت الذي تقوم بتوليفه. وهذا يعني أنك توافق على استخدام الأصوات التي تمنح متحدثوها إذنًا باستنساخ صوتهم ، إما مباشرة أو عن طريق الترخيص قبل جعل الأصوات المصنفة علنية ، أو يجب أن تعلن علنًا أن هذه الأصوات يتم تصنيعها إذا لم يكن لديك إذن لاستخدام هذه الأصوات.
أود أن أشكر المستودعات والمؤلفين التالية على إلهامهم ورمزهم: