cwchang commited on
Commit
efd420b
·
1 Parent(s): 0ad27b7

chore: clean up redundant files and add project dependencies

Browse files

Removed files:
- README-HF.md: Redundant HF Spaces documentation (info in CLAUDE.md)
- UI_IMPROVEMENTS.md: Superseded by UX_IMPROVEMENTS_V2.md

Added files:
- .env.example: Environment variable template for developers
- .python-version: Python version specification for pyenv
- uv.lock: UV dependency lock file for reproducible builds

This cleanup removes duplicate documentation while preserving essential
development configuration files.

Files changed (5) hide show
  1. .env.example +21 -0
  2. .python-version +1 -0
  3. README-HF.md +0 -64
  4. UI_IMPROVEMENTS.md +0 -206
  5. uv.lock +0 -0
.env.example ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 環境變數範例檔案
2
+ # 複製此檔案為 .env 並填入實際值
3
+
4
+ # 後端配置
5
+ MODEL_PATH=/app/models/Qwen3-TTS-12Hz-1.7B-Base
6
+ UPLOAD_DIR=/app/backend/uploads
7
+ OUTPUT_DIR=/app/backend/outputs
8
+
9
+ # CORS 允許的來源(多個用逗號分隔)
10
+ CORS_ORIGINS=http://localhost:3000,http://localhost
11
+
12
+ # 前端配置
13
+ VITE_API_URL=http://localhost:8000
14
+
15
+ # 部署配置(Render 或其他平台)
16
+ # 如果部署到 Render,取消註解並設置正確的 URL
17
+ # CORS_ORIGINS=https://your-frontend.onrender.com
18
+ # VITE_API_URL=https://your-backend.onrender.com
19
+
20
+ # CPU 模式(如果沒有 GPU 支援)
21
+ USE_CPU=false
.python-version ADDED
@@ -0,0 +1 @@
 
 
1
+ 3.12
README-HF.md DELETED
@@ -1,64 +0,0 @@
1
- ---
2
- title: Qwen3-TTS Voice Clone
3
- emoji: 🎤
4
- colorFrom: blue
5
- colorTo: purple
6
- sdk: docker
7
- pinned: false
8
- license: apache-2.0
9
- ---
10
-
11
- # 🎤 Qwen3-TTS 語音複製
12
-
13
- 基於 Qwen3-TTS-12Hz-1.7B-Base 的全功能語音複製應用。
14
-
15
- ## ✨ 功能特色
16
-
17
- - 🎯 **3秒快速複製**: 僅需 3-10 秒參考音訊
18
- - 🌏 **多語言支持**: 中、英、日、韓等 10 種語言
19
- - 🎨 **高相似度**: 聲音相似度可達 95%
20
- - 💻 **完整 Web UI**: React 前端 + FastAPI 後端
21
- - 🚀 **即開即用**: 模型自動下載
22
-
23
- ## 🚀 使用方法
24
-
25
- 1. 上傳 3-10 秒的參考音訊(清晰人聲)
26
- 2. 輸入參考音訊的逐字稿
27
- 3. 輸入想要生成的目標文字
28
- 4. 選擇語言
29
- 5. 點擊「複製並生成」
30
-
31
- ## 📊 效能說明
32
-
33
- - **CPU 模式**: 10-20 秒/次
34
- - **記憶體**: 約 8-12GB
35
- - **模型大小**: 4.3GB
36
-
37
- ## 🛠️ 技術棧
38
-
39
- - **前端**: React + TypeScript + Tailwind CSS
40
- - **後端**: FastAPI + Python
41
- - **模型**: Qwen3-TTS-12Hz-1.7B-Base
42
- - **部署**: Docker
43
-
44
- ## 📝 本地運行
45
-
46
- ```bash
47
- # Clone 項目
48
- git clone https://huggingface.co/spaces/你的用戶名/qwen3-tts-clone
49
- cd qwen3-tts-clone
50
-
51
- # 使用 Docker
52
- docker build -f Dockerfile.huggingface -t qwen3-tts .
53
- docker run -p 7860:7860 qwen3-tts
54
- ```
55
-
56
- 訪問: http://localhost:7860
57
-
58
- ## 🤝 貢獻
59
-
60
- 基於 [Qwen3-TTS](https://github.com/QwenLM/Qwen3-TTS) by Alibaba Qwen Team
61
-
62
- ## 📄 授權
63
-
64
- Apache 2.0 License
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UI_IMPROVEMENTS.md DELETED
@@ -1,206 +0,0 @@
1
- # UI/UX 專業化改進總結
2
-
3
- ## 改進概述
4
-
5
- 根據 UI/UX Pro Max 設計系統建議,對 Qwen3-TTS 語音複製應用進行了全面的專業化改進。
6
-
7
- ## 設計系統規格
8
-
9
- ### 色彩配置
10
- - **Primary**: `#6366f1` (Indigo)
11
- - **Secondary**: `#312E81` (Deep Indigo)
12
- - **Accent**: `#F97316` (Warm Orange)
13
- - **Background**: `#0F0F23` (Dark Audio)
14
- - **Text**: `#F8FAFC` (High contrast white)
15
-
16
- ### 字體
17
- - **主要字體**: Poppins (標題、按鈕)
18
- - **次要字體**: Open Sans (正文)
19
- - 字體配對適合現代、專業、清晰的企業風格
20
-
21
- ### 設計風格
22
- - **Pattern**: Interactive Demo + Feature-Rich
23
- - **Style**: Micro-interactions (小動畫、觸覺反饋、響應式互動)
24
- - **Performance**: ⚡ 優秀
25
- - **Accessibility**: ✓ 良好
26
-
27
- ## 具體改進項目
28
-
29
- ### 1. 移除所有表情符號 (Emoji)
30
- **改進前**: ❌ ✓ 等表情符號用作狀態指示器
31
- **改進後**: 使用專業的 SVG 圖示 (Lucide React)
32
-
33
- **影響檔案**:
34
- - `frontend/src/App.tsx` (所有狀態訊息)
35
-
36
- ### 2. 添加專業互動效果
37
-
38
- #### 按鈕與可點擊元素
39
- - ✅ 所有按鈕添加 `cursor-pointer`
40
- - ✅ Hover 狀態使用 `transform: scale()` 和 `box-shadow` 增強
41
- - ✅ 平滑過渡動畫 (`transition-all duration-200`)
42
- - ✅ Focus states 可見性 (鍵盤導航支援)
43
-
44
- #### 表單元素
45
- - ✅ Input/Textarea 添加 focus ring (`focus:ring-2 focus:ring-brand-primary/20`)
46
- - ✅ Hover 狀態邊框顏色變化
47
- - ✅ Disabled 狀態視覺反饋
48
-
49
- #### 上傳區域
50
- - ✅ 拖放區域 hover 效果 (背景色 + 邊框色)
51
- - ✅ 圖示包裹在圓形背景中提升視覺層次
52
- - ✅ 添加 ARIA 標籤提升無障礙性
53
-
54
- ### 3. 視覺層次優化
55
-
56
- #### 區塊標題
57
- - **改進前**: 單色背景 + 圖示
58
- - **改進後**: 漸層背景 (`from-brand-primary to-brand-secondary`) + 圖示在圓形容器內
59
-
60
- #### 卡片與容器
61
- - 添加細微陰影 (`shadow-sm`)
62
- - 更清晰的間距與內距
63
- - 統一圓角半徑 (`rounded-lg`)
64
-
65
- ### 4. 狀態反饋改進
66
-
67
- #### 狀態訊息
68
- - **Info**: 藍色背景 + 邊框 (`bg-brand-primary/10 border-brand-primary/30`)
69
- - **Success**: 綠色背景 + 邊框 (`bg-green-500/10 border-green-500/30`)
70
- - **Error**: 紅色背景 + 邊框 (`bg-red-500/10 border-red-500/30`)
71
- - 圖示與文字顏色對應狀態類型
72
-
73
- #### 上傳成功狀態
74
- - 添加圓形綠色背景包裹勾選圖示
75
- - 顯示「點擊以重新上傳」提示
76
-
77
- #### 空狀態設計
78
- - 生成音訊區域添加圖示圓形背景
79
- - 顯示「尚無生成的音訊」文字說明
80
-
81
- ### 5. 微互動 (Micro-interactions)
82
-
83
- #### 動畫效果
84
- - Hero section badge 脈衝動畫 (`animate-pulse`)
85
- - 按鈕 hover 放大效果 (`scale-[1.02]`)
86
- - 陰影增強效果 (hover 時)
87
- - Loading spinner 旋轉動畫
88
-
89
- #### 過渡時間
90
- - 150-300ms 用於微互動 (符合 UX 最佳實踐)
91
- - 所有過渡使用 `ease-out` 緩動函數
92
-
93
- ### 6. 無障礙性改進
94
-
95
- #### ARIA 標籤
96
- - ✅ 上傳區域: `aria-label="上傳參考音訊檔案"`
97
- - ✅ 表單元素: `aria-label` 屬性
98
- - ✅ 按鈕: `aria-label` 描述功能
99
-
100
- #### 鍵盤導航
101
- - ✅ 所有互動元素可透過 Tab 鍵導航
102
- - ✅ Focus ring 可見 (`focus:ring-2`)
103
- - ✅ Checkbox 使用語義化 `<label>` 與隱藏 `<input>`
104
-
105
- #### 語義化 HTML
106
- - 上傳區域使用 `role="button"` 和 `tabIndex={0}`
107
- - Audio 元素包含原生控制項
108
-
109
- ### 7. 響應式設計
110
-
111
- #### 斷點
112
- - Mobile-first 設計方法
113
- - 測試於 375px, 768px, 1024px, 1440px
114
-
115
- #### 間距
116
- - 響應式內距: `px-6 md:px-12 lg:px-24`
117
- - 響應式字體: `text-5xl md:text-6xl`
118
-
119
- ## 技術實現
120
-
121
- ### 檔案修改清單
122
-
123
- 1. **frontend/src/App.tsx**
124
- - 移除所有 emoji
125
- - 添加互動狀態與過渡動畫
126
- - 改進 ARIA 標籤與無障礙性
127
- - 優化視覺層次
128
-
129
- 2. **frontend/tailwind.config.js**
130
- - 更新色彩配置 (符合設計系統)
131
- - 添加 Poppins 與 Open Sans 字體
132
- - 添加 brand.accent 色彩
133
-
134
- 3. **frontend/index.html**
135
- - 更新 Google Fonts 引用
136
- - 添加 Poppins 與 Open Sans 字體載入
137
-
138
- ## 效能優化
139
-
140
- ### CSS 優化
141
- - 使用 `transform` 和 `opacity` 進行動畫 (GPU 加速)
142
- - 避免使用 `width/height/top/left` 動畫
143
- - 過渡時間控制在 150-300ms
144
-
145
- ### 字體載入
146
- - 使用 `preconnect` 加速 Google Fonts
147
- - `display=swap` 避免字體載入閃爍
148
-
149
- ## 前後對比
150
-
151
- ### 改進前問題
152
- ❌ 使用 emoji (❌ ✓) 作為 UI 元素 - 不專業
153
- ❌ 缺少互動反饋 (hover, focus states)
154
- ❌ 視覺層次不明確
155
- ❌ 缺少無障礙性支援
156
- ❌ 狀態訊息設計簡陋
157
-
158
- ### 改進後優勢
159
- ✅ 專業的 SVG 圖示系統
160
- ✅ 完整的互動反饋與微動畫
161
- ✅ 清晰的視覺層次與色彩系統
162
- ✅ 完整的 ARIA 標籤與鍵盤導航
163
- ✅ 專業的狀態反饋設計
164
-
165
- ## 設計檢查清單
166
-
167
- 根據 UI/UX Pro Max 交付前檢查清單:
168
-
169
- ### 視覺品質
170
- - [x] 無 emoji 作為圖示 (使用 SVG)
171
- - [x] 所有圖示來自一致的圖示集 (Lucide React)
172
- - [x] Hover 狀態不造成版面移位
173
- - [x] 使用主題色彩直接套用
174
-
175
- ### 互���
176
- - [x] 所有可點擊元素有 `cursor-pointer`
177
- - [x] Hover 狀態提供清晰視覺反饋
178
- - [x] 過渡動畫平滑 (150-300ms)
179
- - [x] Focus 狀態鍵盤導航可見
180
-
181
- ### 版面
182
- - [x] 浮動元素與邊緣有適當間距
183
- - [x] 無內容被固定導航列遮蔽
184
- - [x] 響應式於 375px, 768px, 1024px, 1440px
185
- - [x] 行動裝置無水平捲動
186
-
187
- ### 無障礙性
188
- - [x] 所有圖片有 alt 文字
189
- - [x] 表單輸入有標籤
190
- - [x] 顏色非唯一指示器
191
- - [x] 尊重 `prefers-reduced-motion`
192
-
193
- ## 建議下一步
194
-
195
- 1. **性能監控**: 使用 Lighthouse 測試效能與無障礙性評分
196
- 2. **使用者測試**: 收集實際使用者對新 UI 的反饋
197
- 3. **暗色模式**: 目前設計已是暗色,可考慮添加亮色模式選項
198
- 4. **國際化**: 準備多語言支援 (目前為繁體中文)
199
-
200
- ## 參考資源
201
-
202
- - [UI/UX Pro Max Design System](/.claude/skills/ui-ux-pro-max/)
203
- - [Lucide Icons](https://lucide.dev/)
204
- - [Tailwind CSS Documentation](https://tailwindcss.com/)
205
- - [Google Fonts - Poppins](https://fonts.google.com/specimen/Poppins)
206
- - [Google Fonts - Open Sans](https://fonts.google.com/specimen/Open+Sans)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
uv.lock ADDED
The diff for this file is too large to render. See raw diff