Files
TTS/openspec/project.md
beabigegg 33ea22f259 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>
2025-12-27 15:42:11 +08:00

72 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`: 格式範例檔案