- 新增 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>
2.9 KiB
2.9 KiB
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: 格式範例檔案