Spaces:
Sleeping
Sleeping
Commit
·
f376cb2
1
Parent(s):
62f78a2
🚀 重大重構版本 v2.0.0
Browse files核心改進:
- 🏗️ 模組化架構:拆分 prompts.py, quality_control.py, content_planner.py
- 🎯 解決文稿斷裂:提升 max_tokens 至 65536,智能截斷檢測
- 📝 新增摘要功能:博客式摘要 + 極簡摘要,專為 podcast 上架設計
- 🎨 簡化介面:隱藏複雜提示詞,專注核心功能
- ⚙️ 參數化設計:可調整輸出 token 限制,適配不同模型
- 🔧 現代化提示詞:採用簡潔高效的 AI 最佳實踐
- 📊 智能品質控制:全局品質檢查,分批生成備用機制
技術優化:
- 支援 Gemini Flash 2.5 (65536 tokens)
- 智能內容規劃和主題導向分段
- 向後兼容性保證
- 完整的錯誤處理和重試機制
README.md
CHANGED
|
@@ -21,29 +21,78 @@ pinned: false
|
|
| 21 |
short_description: 原tbdavid2019/PDF2podcast拆出的劇本生成(1)
|
| 22 |
---
|
| 23 |
|
| 24 |
-
# PDF2Podcast 腳本生成器
|
| 25 |
|
| 26 |
PDF2Podcast 是一個強大的文件轉換工具,能夠將 PDF、TXT 和 EPUB 檔案轉換成生動的對話腳本。此工具特別適合創建 podcast、講座、教學內容或摘要,透過大型語言模型 (LLM) 將靜態文字轉換為引人入勝的對話或演講稿。
|
| 27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
## 功能特點
|
| 29 |
|
| 30 |
- **多種檔案格式支援**:可處理 PDF、TXT 和 EPUB 檔案
|
| 31 |
-
-
|
| 32 |
- Podcast 對話(兩位主持人 David 和 Cordelia)
|
|
|
|
| 33 |
- 科學材料發現摘要(教授與學生對話)
|
| 34 |
- 講座腳本(單一演講者)
|
| 35 |
-
-
|
| 36 |
-
-
|
| 37 |
-
-
|
| 38 |
- **彈性 API 整合**:支援 OpenAI API 及其他相容的 API 端點
|
| 39 |
- **模型選擇**:可從連接的 API 獲取並選擇可用的語言模型
|
| 40 |
- **繁體中文輸出**:預設生成繁體中文腳本
|
| 41 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
|
| 43 |
## 安裝指南
|
| 44 |
|
| 45 |
### 前置需求
|
| 46 |
-
|
| 47 |
- Python 3.7 或更高版本
|
| 48 |
- pip 套件管理器
|
| 49 |
|
|
@@ -51,8 +100,8 @@ PDF2Podcast 是一個強大的文件轉換工具,能夠將 PDF、TXT 和 EPUB
|
|
| 51 |
|
| 52 |
1. 複製此專案到本地:
|
| 53 |
```bash
|
| 54 |
-
git clone https://github.com/
|
| 55 |
-
cd PDF2podcast
|
| 56 |
```
|
| 57 |
|
| 58 |
2. 安裝所需依賴:
|
|
@@ -68,68 +117,167 @@ PDF2Podcast 是一個強大的文件轉換工具,能夠將 PDF、TXT 和 EPUB
|
|
| 68 |
|
| 69 |
## 使用方法
|
| 70 |
|
| 71 |
-
|
|
|
|
|
|
|
| 72 |
```bash
|
| 73 |
python app.py
|
| 74 |
```
|
| 75 |
|
| 76 |
-
2.
|
| 77 |
-
|
| 78 |
-
3. 上傳您想要轉換的檔案(PDF、TXT 或 EPUB)
|
| 79 |
-
|
| 80 |
-
4. 設定 API 參數:
|
| 81 |
-
- 輸入 API Base URL(預設為 https://gemini.david888.com/v1)
|
| 82 |
- 輸入您的 LLM API 金鑰
|
| 83 |
- 點擊「獲取模型列表」按鈕
|
| 84 |
|
| 85 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
|
| 87 |
-
|
|
|
|
|
|
|
| 88 |
|
| 89 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
|
| 91 |
## 提示詞模板說明
|
| 92 |
|
| 93 |
-
###
|
| 94 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 95 |
|
| 96 |
-
###
|
| 97 |
-
|
|
|
|
|
|
|
|
|
|
| 98 |
|
| 99 |
-
###
|
| 100 |
-
|
|
|
|
|
|
|
| 101 |
|
| 102 |
-
|
| 103 |
-
生成約 1024 字的內容摘要,保留原文的關鍵點和重要概念。
|
| 104 |
|
| 105 |
-
###
|
| 106 |
-
生成約 256 字的簡潔摘要,適合快速了解文件內容。
|
| 107 |
|
| 108 |
-
|
|
|
|
|
|
|
|
|
|
| 109 |
|
| 110 |
-
|
| 111 |
-
-
|
| 112 |
-
-
|
| 113 |
-
-
|
| 114 |
-
- **前導提示詞**:設定對話或講座的開場
|
| 115 |
-
- **對話提示詞**:定義對話的結構和風格
|
| 116 |
-
- **自定義提示詞**:添加額外的特定指令
|
| 117 |
|
| 118 |
-
|
|
|
|
|
|
|
|
|
|
| 119 |
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
-
|
| 124 |
-
-
|
| 125 |
-
|
| 126 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
|
| 128 |
完整依賴列表請參見 `requirements.txt` 檔案。
|
| 129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 130 |
## 注意事項
|
| 131 |
|
| 132 |
- 處理大型檔案可能需要較長時間
|
| 133 |
- API 使用可能會產生費用,請查閱您使用的 API 提供商的計費政策
|
| 134 |
- 生成的內容質量取決於所選模型和提供的提示詞
|
|
|
|
| 135 |
|
|
|
|
| 21 |
short_description: 原tbdavid2019/PDF2podcast拆出的劇本生成(1)
|
| 22 |
---
|
| 23 |
|
| 24 |
+
# PDF2Podcast 腳本生成器 (重構版)
|
| 25 |
|
| 26 |
PDF2Podcast 是一個強大的文件轉換工具,能夠將 PDF、TXT 和 EPUB 檔案轉換成生動的對話腳本。此工具特別適合創建 podcast、講座、教學內容或摘要,透過大型語言模型 (LLM) 將靜態文字轉換為引人入勝的對話或演講稿。
|
| 27 |
|
| 28 |
+
## 🚀 最新更新 (2025-10-02)
|
| 29 |
+
|
| 30 |
+
### 重大架構重構
|
| 31 |
+
- **模組化設計**:將原本複雜的單一檔案拆分為多個專業模組
|
| 32 |
+
- `prompts.py`:現代化提示詞管理,採用簡潔高效的設計
|
| 33 |
+
- `quality_control.py`:對話品質檢查和連貫性驗證
|
| 34 |
+
- `content_planner.py`:智能內容規劃和主題導向分段
|
| 35 |
+
- **簡化提示詞**:摒棄複雜的多段式提示詞,採用現代 AI 系統最佳實踐
|
| 36 |
+
|
| 37 |
+
### 核心功能優化
|
| 38 |
+
- **解決文稿斷裂問題**:
|
| 39 |
+
- 大幅提升 `max_tokens` 至 65,536 (支援 Gemini Flash 2.5)
|
| 40 |
+
- 智能截斷檢測,自動啟用分批生成備用機制
|
| 41 |
+
- 品質檢查針對完整文稿進行,而非逐批檢查
|
| 42 |
+
- **可調整參數**:
|
| 43 |
+
- 最大輸出 Token 數可調整 (1,024 - 131,072)
|
| 44 |
+
- 最大輸入文本長度可調整 (50,000 - 2,000,000 字符)
|
| 45 |
+
- 適配不同模型的限制 (Gemini: 65536, GPT-4: 4096, Claude: 8192)
|
| 46 |
+
|
| 47 |
+
### 全新摘要功能 📝
|
| 48 |
+
- **Podcast Summary 生成**:專為 podcast 上架準備
|
| 49 |
+
- **博客式摘要**:適合搜索引擎收錄的 Markdown 格式文章
|
| 50 |
+
- **極簡摘要**:200 字以內的節目介紹,適合平台描述
|
| 51 |
+
- **一鍵生成**:從腳本直接生成多種格式的摘要內容
|
| 52 |
+
|
| 53 |
+
### 介面優化
|
| 54 |
+
- **簡化設計**:隱藏複雜的多段式提示詞欄位
|
| 55 |
+
- **專注核心**:保留模板選擇和自定義提示詞功能
|
| 56 |
+
- **雙輸出區域**:腳本生成 + 摘要生成並行操作
|
| 57 |
+
|
| 58 |
## 功能特點
|
| 59 |
|
| 60 |
- **多種檔案格式支援**:可處理 PDF、TXT 和 EPUB 檔案
|
| 61 |
+
- **現代化模板系統**:
|
| 62 |
- Podcast 對話(兩位主持人 David 和 Cordelia)
|
| 63 |
+
- 單人播客獨白
|
| 64 |
- 科學材料發現摘要(教授與學生對話)
|
| 65 |
- 講座腳本(單一演講者)
|
| 66 |
+
- 一般摘要和簡短摘要
|
| 67 |
+
- **新增**:博客式摘要和極簡摘要
|
| 68 |
+
- **智能品質控制**:自動檢測對話品質和連貫性
|
| 69 |
- **彈性 API 整合**:支援 OpenAI API 及其他相容的 API 端點
|
| 70 |
- **模型選擇**:可從連接的 API 獲取並選擇可用的語言模型
|
| 71 |
- **繁體中文輸出**:預設生成繁體中文腳本
|
| 72 |
+
- **現代化介面**:基於 Gradio 的直觀操作界面
|
| 73 |
+
|
| 74 |
+
## 技術架構
|
| 75 |
+
|
| 76 |
+
### 核心模組
|
| 77 |
+
```
|
| 78 |
+
PDF2podcast-1-script/
|
| 79 |
+
├── app.py # 主應用程式 (Gradio 介面)
|
| 80 |
+
├── prompts.py # 現代化提示詞管理
|
| 81 |
+
├── quality_control.py # 品質檢查系統
|
| 82 |
+
├── content_planner.py # 內容規劃器
|
| 83 |
+
├── requirements.txt # 依賴清單
|
| 84 |
+
└── README.md # 專案說明
|
| 85 |
+
```
|
| 86 |
+
|
| 87 |
+
### 提示詞設計原則
|
| 88 |
+
- **簡潔高效**:摒棄複雜的多段式設計
|
| 89 |
+
- **現代化**:採用最新 AI 系統最佳實踐
|
| 90 |
+
- **可擴展**:易於添加新模板和自定義內容
|
| 91 |
+
- **向後兼容**:保持與舊版本的相容性
|
| 92 |
|
| 93 |
## 安裝指南
|
| 94 |
|
| 95 |
### 前置需求
|
|
|
|
| 96 |
- Python 3.7 或更高版本
|
| 97 |
- pip 套件管理器
|
| 98 |
|
|
|
|
| 100 |
|
| 101 |
1. 複製此專案到本地:
|
| 102 |
```bash
|
| 103 |
+
git clone https://github.com/tbdavid2019/PDF2podcast-1-script.git
|
| 104 |
+
cd PDF2podcast-1-script
|
| 105 |
```
|
| 106 |
|
| 107 |
2. 安裝所需依賴:
|
|
|
|
| 117 |
|
| 118 |
## 使用方法
|
| 119 |
|
| 120 |
+
### 基本操作流程
|
| 121 |
+
|
| 122 |
+
1. **啟動應用程式**:
|
| 123 |
```bash
|
| 124 |
python app.py
|
| 125 |
```
|
| 126 |
|
| 127 |
+
2. **設定 API 參數**:
|
| 128 |
+
- 輸入 API Base URL(預設為 Gemini API)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 129 |
- 輸入您的 LLM API 金鑰
|
| 130 |
- 點擊「獲取模型列表」按鈕
|
| 131 |
|
| 132 |
+
3. **上傳文件**:支援 PDF、TXT 或 EPUB 格式
|
| 133 |
+
|
| 134 |
+
4. **選擇模板**:從下拉選單選擇適合的提示詞模板
|
| 135 |
+
|
| 136 |
+
5. **調整參數**:
|
| 137 |
+
- 最大輸出 Token 數 (建議 Gemini: 65536)
|
| 138 |
+
- 最大輸入文本長度
|
| 139 |
+
- 分批生成部分數量 (通常設為 1)
|
| 140 |
+
|
| 141 |
+
6. **生成腳本**:點擊「生成腳本」按鈕
|
| 142 |
|
| 143 |
+
7. **生成摘要**:
|
| 144 |
+
- 選擇摘要類型(博客式 / 極簡)
|
| 145 |
+
- 點擊「生成摘要」按鈕
|
| 146 |
|
| 147 |
+
### 進階功能
|
| 148 |
+
|
| 149 |
+
#### 自定義提示詞
|
| 150 |
+
- 在「自定義提示詞」欄位添加特殊要求
|
| 151 |
+
- 系統會自動將其整合到主要提示詞中
|
| 152 |
+
|
| 153 |
+
#### 模型適配建議
|
| 154 |
+
- **Gemini Flash 2.5**: max_tokens = 65536 (推薦)
|
| 155 |
+
- **GPT-4**: max_tokens = 4096
|
| 156 |
+
- **Claude**: max_tokens = 8192
|
| 157 |
+
- **其他模型**: 請參考官方文檔
|
| 158 |
|
| 159 |
## 提示詞模板說明
|
| 160 |
|
| 161 |
+
### 主要模板
|
| 162 |
+
|
| 163 |
+
#### Podcast 模板 (推薦)
|
| 164 |
+
生成兩位主持人(David 和 Cordelia)之間的對話:
|
| 165 |
+
- 開場:「歡迎收聽 David888 Podcast,我是 David...」
|
| 166 |
+
- 風格:類似 All-In-Podcast,輕鬆專業
|
| 167 |
+
- 長度:50-200 輪對話,根據內容自動調整
|
| 168 |
+
|
| 169 |
+
#### 單人播客模板
|
| 170 |
+
生成單一主持人的播客獨白:
|
| 171 |
+
- 風格親切專業,適合深度講解
|
| 172 |
+
- 內容豐富且易懂
|
| 173 |
+
|
| 174 |
+
#### 摘要模板 (新增)
|
| 175 |
+
- **博客式摘要**:適合 SEO 的 Markdown 格式文章
|
| 176 |
+
- **極簡摘要**:200 字以內的節目介紹
|
| 177 |
+
|
| 178 |
+
### 科學專用模板
|
| 179 |
+
- **SciAgents 材料發現**:專門介紹 AI 材料發現成果
|
| 180 |
+
- **講座模板**:費曼風格的教學內容
|
| 181 |
+
|
| 182 |
+
## 品質控制系統
|
| 183 |
|
| 184 |
+
### 自動檢測功能
|
| 185 |
+
- **截斷檢測**:智能識別內容是否被提前截斷
|
| 186 |
+
- **連貫性檢查**:驗證對話的邏輯一致性
|
| 187 |
+
- **格式驗證**:確保 speaker-1/speaker-2 格式正確
|
| 188 |
+
- **品質評分**:提供整體品質評估 (0-100分)
|
| 189 |
|
| 190 |
+
### 備用機制
|
| 191 |
+
- 當單次生成被截斷時,自動啟用分批生成
|
| 192 |
+
- 智能內容規劃,確保主題連貫性
|
| 193 |
+
- 全局品質檢查,而非逐批檢查
|
| 194 |
|
| 195 |
+
## 故障排除
|
|
|
|
| 196 |
|
| 197 |
+
### 常見問題
|
|
|
|
| 198 |
|
| 199 |
+
#### 文稿被截斷
|
| 200 |
+
- **解決方案**:提高 max_tokens 設定至模型支援上限
|
| 201 |
+
- **Gemini Flash 2.5**: 可設定至 65536
|
| 202 |
+
- **自動備用**:系統會自動偵測並啟用分批生成
|
| 203 |
|
| 204 |
+
#### API 連接問題
|
| 205 |
+
- 檢查 API 金鑰是否正確
|
| 206 |
+
- 確認 API Base URL 格式
|
| 207 |
+
- 查看錯誤日誌獲取詳細資訊
|
|
|
|
|
|
|
|
|
|
| 208 |
|
| 209 |
+
#### 品質評分偏低
|
| 210 |
+
- 檢查原始內容品質
|
| 211 |
+
- 考慮調整提示詞模板
|
| 212 |
+
- 嘗試不同的 temperature 設定
|
| 213 |
|
| 214 |
+
## 技術規格
|
| 215 |
+
|
| 216 |
+
### 支援的模型
|
| 217 |
+
- **推薦**: Gemini Flash 2.5 (65536 tokens)
|
| 218 |
+
- **相容**: OpenAI GPT 系列、Claude、其他 OpenAI API 相容模型
|
| 219 |
+
|
| 220 |
+
### 效能規格
|
| 221 |
+
- **最大輸入**: 2,000,000 字符
|
| 222 |
+
- **最大輸出**: 131,072 tokens (視模型而定)
|
| 223 |
+
- **處理速度**: 視模型 API 回應時間而定
|
| 224 |
+
- **記憶體需求**: 約 500MB (含依賴)
|
| 225 |
+
|
| 226 |
+
### 依賴套件
|
| 227 |
+
主要依賴套件:
|
| 228 |
+
- gradio:Web 介面框架
|
| 229 |
+
- pymupdf:PDF 文件處理
|
| 230 |
+
- ebooklib:EPUB 文件處理
|
| 231 |
+
- beautifulsoup4:HTML 內容解析
|
| 232 |
+
- requests:API 通訊
|
| 233 |
+
- python-dotenv:環境變數管理
|
| 234 |
|
| 235 |
完整依賴列表請參見 `requirements.txt` 檔案。
|
| 236 |
|
| 237 |
+
## 版本歷史
|
| 238 |
+
|
| 239 |
+
### v2.0.0 (2025-10-02) - 重構版
|
| 240 |
+
- 🎯 **重大重構**:模組化架構,分離關注點
|
| 241 |
+
- 🚀 **解決斷裂**:提升 token 限制,修復文稿截斷問題
|
| 242 |
+
- 📝 **新增摘要**:Podcast 上架專用的摘要生成功能
|
| 243 |
+
- 🎨 **介面優化**:簡化複雜設定,專注核心功能
|
| 244 |
+
- ⚙️ **參數化**:可調整輸出 token 限制,適配不同模型
|
| 245 |
+
- 🔧 **品質提升**:智能品質檢查和截斷偵測
|
| 246 |
+
|
| 247 |
+
### v1.x - 初始版本
|
| 248 |
+
- 基本的 PDF/EPUB 轉 Podcast 功能
|
| 249 |
+
- 複雜的多段式提示詞設計
|
| 250 |
+
- 固定的 token 限制
|
| 251 |
+
|
| 252 |
+
## 貢獻指南
|
| 253 |
+
|
| 254 |
+
歡迎提交 Issues 和 Pull Requests!
|
| 255 |
+
|
| 256 |
+
### 開發環境設置
|
| 257 |
+
1. Fork 此專案
|
| 258 |
+
2. 創建功能分支:`git checkout -b feature/新功能`
|
| 259 |
+
3. 提交變更:`git commit -am '添加新功能'`
|
| 260 |
+
4. 推送分支:`git push origin feature/新功能`
|
| 261 |
+
5. 創建 Pull Request
|
| 262 |
+
|
| 263 |
+
### 程式碼規範
|
| 264 |
+
- 使用 Python PEP 8 風格
|
| 265 |
+
- ���加適當的註釋和文檔字符串
|
| 266 |
+
- 確保向後相容性
|
| 267 |
+
|
| 268 |
+
## 授權條款
|
| 269 |
+
|
| 270 |
+
[在此添加授權資訊]
|
| 271 |
+
|
| 272 |
+
## 聯絡資訊
|
| 273 |
+
|
| 274 |
+
- GitHub: https://github.com/tbdavid2019/PDF2podcast-1-script
|
| 275 |
+
- Issues: https://github.com/tbdavid2019/PDF2podcast-1-script/issues
|
| 276 |
+
|
| 277 |
## 注意事項
|
| 278 |
|
| 279 |
- 處理大型檔案可能需要較長時間
|
| 280 |
- API 使用可能會產生費用,請查閱您使用的 API 提供商的計費政策
|
| 281 |
- 生成的內容質量取決於所選模型和提供的提示詞
|
| 282 |
+
- 建議在生產環境使用前進行充分測試
|
| 283 |
|