
Read2Me เป็นแอปพลิเคชั่น fastapi ที่ดึงเนื้อหาจาก URL ที่ให้ไว้ประมวลผลข้อความแปลงเป็นคำพูดโดยใช้ Edge TTS ของ Microsoft Azure หรือกับรุ่น TTS ในท้องถิ่น F5-TTS, Styletts2 หรือ Piper TTS และแท็กไฟล์ MP3 คุณสามารถเปลี่ยนข้อความเต็มเป็นเสียงหรือมี LLM แปลงข้อความเมล็ดเป็นพอดคาสต์ ปัจจุบัน Oldama และ API ที่เข้ากันได้ของ OpenAI ได้รับการสนับสนุน คุณสามารถติดตั้งส่วนขยายโครเมียมที่ให้ไว้ในเบราว์เซอร์ที่ใช้โครเมียมใด ๆ (เช่น Chrome หรือ Microsoft Edge) เพื่อส่ง URL ปัจจุบันหรือข้อความใด ๆ ไปยัง Sever เพิ่มแหล่งที่มาและคำหลักสำหรับการดึงข้อมูลอัตโนมัติ
นี่เป็นรุ่นเบต้าในปัจจุบัน แต่ฉันวางแผนที่จะขยายเพื่อสนับสนุนประเภทเนื้อหาอื่น ๆ (เช่น EPUB) ในอนาคตและให้การสนับสนุนที่แข็งแกร่งยิ่งขึ้นสำหรับภาษาอื่นที่ไม่ใช่ภาษาอังกฤษ ขณะนี้เมื่อใช้ TTS Azure Edge เริ่มต้นจะสนับสนุนภาษาอื่น ๆ แล้วและพยายามตรวจจับอัตโนมัติจากข้อความ แต่คุณภาพอาจแตกต่างกันไปขึ้นอยู่กับภาษา
requirements.txt สำหรับ edge-tts ข้อกำหนดแยกต่างหากสำหรับ F5 และ Styletts2 โคลนที่เก็บ:
git clone https://github.com/WismutHansen/READ2ME.git
cd read2meสร้างและเปิดใช้งานสภาพแวดล้อมเสมือนจริง:
python -m venv .venv
source .venv/bin/activate # On Windows: .venvScriptsactivateหรือถ้าคุณต้องการใช้ UV สำหรับการจัดการแพ็คเกจ:
uv venv
source .venv/bin/activate # On Windows: .venvScriptsactivateติดตั้งการพึ่งพา:
pip install -r requirements.txt (or uv pip install -r requirements.txt)สำหรับรุ่น texttttts2 local to-to-speech โปรดติดตั้งการอ้างอิงเพิ่มเติม:
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
playwright installหากใช้ UV โปรดติดตั้ง:
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 ใน Root Director เป็น .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คุณสามารถใช้ Oldama หรือ API ที่เข้ากันได้กับ OpenAI สำหรับชื่อเรื่องและการสร้างสคริปต์พอดคาสต์ (ฟังก์ชั่นสรุปเร็ว ๆ นี้)
โคลนที่เก็บและเปลี่ยนเข้าไป:
git clone https://github.com/WismutHansen/READ2ME.git && cd read2meคัดลอก. env.example เป็น. ENV และแก้ไขเนื้อหา: สำคัญ: เมื่อใช้ LLM-Engine ท้องถิ่นเช่น Ollama, URL จำเป็นต้องทำตามรูปแบบนี้ "host.docker.internal: 11434" (สำหรับ Ollama) หรือ "host.docker.internal: 1234"
สร้างคอนเทนเนอร์ 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
ในการใช้ส่วนหน้าต่อไปให้แน่ใจว่าคุณติดตั้ง node.js ในระบบของคุณ หมายเหตุ: ส่วนหน้าอยู่ในระยะเริ่มต้นดังนั้นคาดว่าจะมีข้อบกพร่องมากมาย: ก่อนอื่นให้เปลี่ยนเป็นไดเรกทอรีส่วนหน้า
cd frontendจากนั้นติดตั้งการพึ่งพาโหนดที่ต้องการ:
npm installจากนั้นเพื่อเริ่มการวิ่งส่วนหน้า:
npm run devคุณสามารถเข้าถึงส่วนหน้าบน http: // localhost: 3000
โพสต์/v1/url/เต็ม
เพิ่ม URL ในรายการประมวลผล
ขอร่าง:
{
"url" : " https://example.com/article " ,
"tts-engine" : " edge "
}การตอบสนอง:
{
"message" : " URL added to the processing list "
}โพสต์/v1/url/podcast
โพสต์/v1/ข้อความ/เต็ม
โพสต์/v1/ข้อความ/พอดคาสต์
แยกที่เก็บ
สร้างสาขาใหม่:
git checkout -b feature/your-feature-nameทำการเปลี่ยนแปลงของคุณและกระทำพวกเขา:
git commit -m ' Add some feature 'ผลักไปที่สาขา:
git push origin feature/your-feature-nameส่งคำขอดึง
โครงการนี้ได้รับใบอนุญาตภายใต้ Apache License Version 2.0, มกราคม 2004 ยกเว้นรหัส Styletts2 ซึ่งได้รับอนุญาตภายใต้ใบอนุญาต MIT รุ่น F5-TTS ABD Styletts2 ที่ผ่านการฝึกอบรมมาก่อนอยู่ภายใต้ใบอนุญาตของตนเอง
โมเดล Styletts2 ที่ผ่านการฝึกอบรมมาก่อน: ก่อนที่จะใช้โมเดลที่ผ่านการฝึกอบรมมาก่อนเหล่านี้คุณตกลงที่จะแจ้งผู้ฟังว่าตัวอย่างคำพูดถูกสังเคราะห์โดยโมเดลที่ผ่านการฝึกอบรมมาก่อนเว้นแต่คุณจะได้รับอนุญาตให้ใช้เสียงที่คุณสังเคราะห์ นั่นคือคุณตกลงที่จะใช้เฉพาะเสียงที่ผู้พูดอนุญาตให้มีการโคลนเสียงของพวกเขาไม่ว่าโดยตรงหรือโดยใบอนุญาตก่อนที่จะทำการสังเคราะห์เสียงสาธารณะหรือคุณต้องประกาศต่อสาธารณะว่าเสียงเหล่านี้ถูกสังเคราะห์หากคุณไม่ได้รับอนุญาตให้ใช้เสียงเหล่านี้
ฉันขอขอบคุณที่เก็บและผู้แต่งต่อไปนี้สำหรับแรงบันดาลใจและรหัสของพวกเขา: