feat: 新增智慧簡報旁白生成系統 (Smart Slide Voiceover System)

- 新增 Excel 輸入模組:解析 .xlsx 格式講稿檔案
- 新增 TTS 引擎模組:整合 edge-tts 調用 Azure Neural Voice
- 新增 PyQt6 圖形介面:檔案選擇、語音選擇、進度監控
- 新增執行緒模型:QThread + Asyncio 確保 UI 響應性
- 支援 10 種 Neural Voice (中文/越南/英文)
- 支援中英混雜、越英混雜發音

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
beabigegg
2025-12-27 15:42:11 +08:00
commit 33ea22f259
25 changed files with 1943 additions and 0 deletions

71
openspec/project.md Normal file
View File

@@ -0,0 +1,71 @@
# Project Context
## Purpose
智慧簡報旁白生成系統 (Smart Slide Voiceover System) - 一款桌面端應用程式,協助使用者將撰寫於 Excel 的簡報講稿,批次轉換為專業級、擬真且具備親切感的語音檔案 (MP3)。系統解決跨語言(中文+英文專有名詞、越南文+英文專有名詞)的發音自然度問題。
## Tech Stack
- **開發語言**: Python 3.10+
- **GUI 框架**: PyQt6 (原生編譯綁定,效能優於 Electron)
- **TTS 引擎**: edge-tts (Python Library調用 Azure Cognitive Services)
- **資料處理**: Pandas + Openpyxl (Excel 讀取解析)
- **並發模型**: QThread + Asyncio (解決 PyQt 事件迴圈與非同步請求衝突)
- **環境管理**: Conda (environment.yml)
## Project Conventions
### Code Style
- 架構模式: MVC (Model-View-Controller) / Producer-Consumer Pattern
- 主執行緒負責 UI 繪製Worker Thread 執行 TTS 請求
- 透過 pyqtSignal 將進度與 Log 傳回 Main Thread
- 使用 Type Hints 增強程式碼可讀性
### Architecture Patterns
- **Main Thread (UI)**: 繪製介面、接收使用者操作、更新進度條
- **Worker Thread (QThread)**:
- 建立獨立的 asyncio Event Loop
- 執行 Excel 解析
- 序列化執行 TTS 請求
- 透過 Signal 回傳狀態
### Testing Strategy
- 環境測試: Conda 環境建立、依賴完整性
- 功能測試: 檔案讀取防呆、批次生成、強制中斷、介面響應性
- 語音品質驗收: 語言對應正確性、中英/越英夾雜流暢度、語音完整性
### Git Workflow
- 使用功能分支開發
- Commit 訊息採用中文說明
## Domain Context
### 語音模型映射 (Voice Mapping)
| Lang 欄位 | Voice ID | 特徵 |
|-----------|----------|------|
| vi | vi-VN-HoaiMyNeural | 女性,音色明亮溫柔,咬字清晰 |
| zh / zh-tw | zh-TW-HsiaoChenNeural | 女性,台灣標準口音,知性專業 |
| en | en-US-JennyNeural | 女性,美式標準音 |
### Excel 輸入格式
| 欄位 | 必要性 | 說明 |
|------|--------|------|
| Filename | 必要 | 輸出音檔名稱 (例如 Slide_01) |
| Text | 必要 | 旁白內容,支援中英/越英夾雜 |
| Lang | 選填 | 主要語言 (zh/vi),預設 zh |
## Important Constraints
- **Rate Limit 防護**: 每筆請求間需有間隔,防止 IP 被封鎖
- **效能要求**: 單筆音訊生成延遲不超過 3 秒,支援 100+ 筆批次佇列
- **錯誤容忍**: 單一檔案失敗不中斷整個批次,記錄錯誤後跳至下一筆
- **介面響應**: 執行耗時任務時,主視窗不得凍結
- **硬體基準**: PC (Windows), 32GB RAM, RTX 4060 (主要利用 CPU 與網路頻寬)
## External Dependencies
- **Microsoft Edge-TTS**: Azure Cognitive Services Neural Voice API
- **網路需求**: 10Mbps+ 穩定連線
- **作業系統**: Windows 10/11
## Deliverables
- `main.py`: GUI 與邏輯程式碼
- `environment.yml`: Conda 環境配置
- `README.md`: 操作說明文件
- `template.xlsx`: 格式範例檔案