Spaces:
Sleeping
Sleeping
| # 🚀 คู่มือการ Deploy F5-TTS Thai WebUI | |
| ## วิธีการ Deploy ไป Hugging Face Spaces | |
| ### ขั้นตอนที่ 1: เตรียม Account และ Repository | |
| 1. **สร้าง Hugging Face Account** (ถ้ายังไม่มี) | |
| - ไปที่ https://huggingface.co/join | |
| - สร้าง account ฟรี | |
| 2. **สร้าง Space ใหม่** | |
| - ไปที่ https://huggingface.co/new-space | |
| - ตั้งชื่อ Space (เช่น `f5-tts-thai`) | |
| - เลือก SDK: **Gradio** | |
| - เลือก Hardware: **CPU basic** (ฟรี) หรือ **GPU** (ต้องเสียเงิน) | |
| ### ขั้นตอนที่ 2: Upload โค้ด | |
| **วิธีที่ 1: ใช้ Git (แนะนำ)** | |
| ```bash | |
| # Clone repository ที่สร้างจาก HF Spaces | |
| git clone https://huggingface.co/spaces/YOUR_USERNAME/f5-tts-thai | |
| cd f5-tts-thai | |
| # คัดลอกไฟล์จากโปรเจ็กต์ของคุณ | |
| cp -r /path/to/F5-TTS-THAI/src . | |
| cp /path/to/F5-TTS-THAI/app.py . | |
| cp /path/to/F5-TTS-THAI/requirements.txt . | |
| # สร้าง README.md จาก README_DEPLOYMENT.md | |
| cp /path/to/F5-TTS-THAI/README_DEPLOYMENT.md README.md | |
| # Commit และ push | |
| git add . | |
| git commit -m "Initial deployment" | |
| git push | |
| ``` | |
| **วิธีที่ 2: อัปโหลดผ่าน Web Interface** | |
| 1. ไปที่ Space ที่คุณสร้าง | |
| 2. คลิก "Files and versions" | |
| 3. อัปโหลดไฟล์ทีละไฟล์: | |
| - `app.py` | |
| - `requirements.txt` | |
| - `README.md` (จาก README_DEPLOYMENT.md) | |
| - โฟลเดอร์ `src/` ทั้งหมด | |
| ### ขั้นตอนที่ 3: ตรวจสอบการ Deploy | |
| 1. **รอการ Build** | |
| - Hugging Face จะ build app อัตโนมัติ | |
| - ดู logs ได้ที่ "Logs" tab | |
| 2. **ทดสอบ App** | |
| - เมื่อ build สำเร็จ จะแสดง URL ของ app | |
| - ทดสอบ functionality ต่างๆ | |
| ### ขั้นตอนที่ 4: Configuration ขั้นสูง | |
| **เปิดใช้งาน GPU (ต้องเสียเงิน)** | |
| ```yaml | |
| # ใน README.md header | |
| --- | |
| title: F5-TTS Thai | |
| emoji: 🎤 | |
| colorFrom: blue | |
| colorTo: purple | |
| sdk: gradio | |
| sdk_version: 4.44.0 | |
| app_file: app.py | |
| pinned: false | |
| license: mit | |
| python_version: 3.10 | |
| hardware: gpu-t4-small # เปลี่ยนจาก cpu-basic | |
| --- | |
| ``` | |
| **ปรับแต่ง Environment Variables** | |
| ใน Space settings เพิ่ม variables: | |
| - `CUDA_VISIBLE_DEVICES=0` (สำหรับ GPU) | |
| - `TRANSFORMERS_CACHE=/tmp` (เพื่อประหยัด storage) | |
| ## วิธีการ Deploy ไป Gradio.app | |
| ### ขั้นตอนที่ 1: สร้าง Account | |
| 1. ไปที่ https://gradio.app | |
| 2. สร้าง account และ login | |
| ### ขั้นตอนที่ 2: Deploy | |
| ```bash | |
| # ติดตั้ง gradio | |
| pip install gradio | |
| # Upload app | |
| python app.py --share | |
| ``` | |
| ## การ Optimize สำหรับ Production | |
| ### 1. ลดขนาด Model | |
| ```python | |
| # ใน config.py เปลี่ยนเป็น | |
| DEFAULT_MODEL_BASE = "hf://VIZINTZOR/F5-TTS-THAI/model_650000_FP16.pt" # ใช้ FP16 | |
| ``` | |
| ### 2. เพิ่ม Caching | |
| ```python | |
| # ใน model_manager.py | |
| @lru_cache(maxsize=1) | |
| def get_cached_model(): | |
| return load_model(...) | |
| ``` | |
| ### 3. ปรับแต่ง Memory Usage | |
| ```python | |
| # ใน app.py | |
| import torch | |
| torch.set_num_threads(2) # ลด CPU threads | |
| ``` | |
| ### 4. เพิ่ม Error Handling | |
| ```python | |
| # ใน app.py | |
| import gc | |
| import torch | |
| def cleanup_memory(): | |
| gc.collect() | |
| if torch.cuda.is_available(): | |
| torch.cuda.empty_cache() | |
| ``` | |
| ## Troubleshooting | |
| ### ปัญหา: Out of Memory | |
| **แก้ไข:** | |
| ```python | |
| # ใช้โมเดล FP16 | |
| # ลด NFE steps | |
| # เพิ่ม memory cleanup | |
| ``` | |
| ### ปัญหา: Slow Loading | |
| **แก้ไข:** | |
| ```python | |
| # Pre-load models | |
| # ใช้ model caching | |
| # ปรับ CPU/GPU settings | |
| ``` | |
| ### ปัญหา: Import Errors | |
| **แก้ไข:** | |
| ```python | |
| # ตรวจสอบ requirements.txt | |
| # เพิ่ม try-except สำหรับ imports | |
| # ใช้ fallback interface | |
| ``` | |
| ## การ Monitor และ Maintain | |
| ### 1. ดู Logs | |
| ```bash | |
| # ดู logs ของ HF Spaces | |
| # Monitor memory usage | |
| # ตรวจสอบ error rates | |
| ``` | |
| ### 2. Update App | |
| ```bash | |
| # git pull latest changes | |
| # test locally first | |
| # deploy gradually | |
| ``` | |
| ### 3. Scale Up/Down | |
| ```bash | |
| # เปลี่ยน hardware specs | |
| # ปรับ concurrent users | |
| # optimize model loading | |
| ``` | |
| ## Security Considerations | |
| ### 1. Input Validation | |
| ```python | |
| def validate_audio_input(audio_file): | |
| # ตรวจสอบขนาดไฟล์ | |
| # ตรวจสอบรูปแบบไฟล์ | |
| # จำกัดความยาวเสียง | |
| ``` | |
| ### 2. Rate Limiting | |
| ```python | |
| import time | |
| from functools import wraps | |
| def rate_limit(calls_per_minute=10): | |
| # implement rate limiting | |
| ``` | |
| ### 3. Content Filtering | |
| ```python | |
| def filter_inappropriate_content(text): | |
| # กรองเนื้อหาที่ไม่เหมาะสม | |
| # ตรวจสอบ spam | |
| ``` | |
| ## Cost Optimization | |
| ### Free Tier (CPU) | |
| - **ข้อจำกัด**: ช้า, memory จำกัด | |
| - **เหมาะสำหรับ**: demo, testing | |
| ### GPU Tier (T4/A10G) | |
| - **ราคา**: ~$0.60-3.00/ชั่วโมง | |
| - **เหมาะสำหรับ**: production, fast inference | |
| ### Tips ประหยัดค่าใช้จ่าย | |
| 1. ใช้ CPU สำหรับ development | |
| 2. เปิด GPU เฉพาะเวลาที่ต้องการ | |
| 3. ใช้ auto-shutdown | |
| 4. Monitor usage regularly | |
| ## สรุป | |
| การ deploy F5-TTS Thai WebUI ไป cloud platforms ทำได้ง่ายและมีหลายทางเลือก: | |
| ✅ **Hugging Face Spaces**: ง่าย, มี free tier | |
| ✅ **Gradio.app**: รวดเร็ว, เหมาะสำหรับ quick demos | |
| ✅ **Cloud Platforms**: AWS, GCP, Azure สำหรับ enterprise | |
| เลือกตามความต้องการและงบประมาณของคุณ! 🚀 |