Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| Prepare F5-TTS Thai WebUI for deployment | |
| สคริปต์สำหรับเตรียมการ deploy แอป F5-TTS Thai | |
| """ | |
| import os | |
| import shutil | |
| import sys | |
| import zipfile | |
| from pathlib import Path | |
| def create_deployment_package(): | |
| """สร้าง package สำหรับ deployment""" | |
| print("🚀 กำลังเตรียม F5-TTS Thai WebUI สำหรับ deployment...") | |
| # สร้างโฟลเดอร์ deployment | |
| deploy_dir = Path("deployment") | |
| if deploy_dir.exists(): | |
| shutil.rmtree(deploy_dir) | |
| deploy_dir.mkdir() | |
| print("📁 สร้างโฟลเดอร์ deployment...") | |
| # รายการไฟล์ที่ต้องการ | |
| required_files = [ | |
| "app.py", | |
| "requirements.txt", | |
| "README_DEPLOYMENT.md", | |
| ".gitignore" | |
| ] | |
| # รายการโฟลเดอร์ที่ต้องการ | |
| required_dirs = [ | |
| "src/f5_tts" | |
| ] | |
| # คัดลอกไฟล์ | |
| print("📄 คัดลอกไฟล์...") | |
| for file in required_files: | |
| if os.path.exists(file): | |
| shutil.copy2(file, deploy_dir) | |
| print(f"✅ {file}") | |
| else: | |
| print(f"⚠️ ไม่พบไฟล์ {file}") | |
| # คัดลอกโฟลเดอร์ | |
| print("📂 คัดลอกโฟลเดอร์...") | |
| for dir_path in required_dirs: | |
| if os.path.exists(dir_path): | |
| dest_path = deploy_dir / dir_path | |
| dest_path.parent.mkdir(parents=True, exist_ok=True) | |
| shutil.copytree(dir_path, dest_path) | |
| print(f"✅ {dir_path}") | |
| else: | |
| print(f"⚠️ ไม่พบโฟลเดอร์ {dir_path}") | |
| # เปลี่ยนชื่อ README | |
| readme_source = deploy_dir / "README_DEPLOYMENT.md" | |
| readme_dest = deploy_dir / "README.md" | |
| if readme_source.exists(): | |
| readme_source.rename(readme_dest) | |
| print("✅ เปลี่ยนชื่อ README_DEPLOYMENT.md เป็น README.md") | |
| # สร้างไฟล์ zip | |
| print("📦 สร้างไฟล์ zip...") | |
| zip_path = "f5-tts-thai-deployment.zip" | |
| with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf: | |
| for root, dirs, files in os.walk(deploy_dir): | |
| for file in files: | |
| file_path = os.path.join(root, file) | |
| arc_path = os.path.relpath(file_path, deploy_dir) | |
| zipf.write(file_path, arc_path) | |
| print(f"✅ สร้าง {zip_path} เรียบร้อย") | |
| return deploy_dir, zip_path | |
| def validate_deployment(): | |
| """ตรวจสอบไฟล์ที่จำเป็นสำหรับ deployment""" | |
| print("\n🔍 ตรวจสอบไฟล์ที่จำเป็น...") | |
| required_files = { | |
| "app.py": "Entry point สำหรับ Gradio", | |
| "requirements.txt": "Dependencies list", | |
| "src/f5_tts/config.py": "Configuration file", | |
| "src/f5_tts/model_manager.py": "Model management", | |
| "src/f5_tts/tts_processor.py": "TTS processing", | |
| "src/f5_tts/multi_speech_processor.py": "Multi-speech processing", | |
| "src/f5_tts/ui_components.py": "UI components" | |
| } | |
| all_good = True | |
| for file_path, description in required_files.items(): | |
| if os.path.exists(file_path): | |
| print(f"✅ {file_path} - {description}") | |
| else: | |
| print(f"❌ {file_path} - {description} (ไม่พบไฟล์)") | |
| all_good = False | |
| # ตรวจสอบ dependencies ใน requirements.txt | |
| print("\n🔍 ตรวจสอบ dependencies...") | |
| if os.path.exists("requirements.txt"): | |
| with open("requirements.txt", "r") as f: | |
| deps = f.read().strip().split("\n") | |
| print(f"📦 พบ {len(deps)} dependencies:") | |
| for dep in deps[:5]: # แสดง 5 อันแรก | |
| print(f" - {dep}") | |
| if len(deps) > 5: | |
| print(f" ... และอีก {len(deps) - 5} รายการ") | |
| return all_good | |
| def generate_deploy_commands(): | |
| """สร้างคำสั่งสำหรับ deploy""" | |
| commands = { | |
| "Hugging Face Spaces": [ | |
| "# 1. สร้าง Space ใหม่ที่ https://huggingface.co/new-space", | |
| "# 2. Clone repository", | |
| "git clone https://huggingface.co/spaces/YOUR_USERNAME/SPACE_NAME", | |
| "cd SPACE_NAME", | |
| "", | |
| "# 3. คัดลอกไฟล์จาก deployment folder", | |
| "cp -r ../deployment/* .", | |
| "", | |
| "# 4. Commit และ push", | |
| "git add .", | |
| "git commit -m 'Deploy F5-TTS Thai WebUI'", | |
| "git push" | |
| ], | |
| "Local Testing": [ | |
| "# ทดสอบ local ก่อน deploy", | |
| "cd deployment", | |
| "pip install -r requirements.txt", | |
| "python app.py" | |
| ] | |
| } | |
| print("\n📋 คำสั่งสำหรับ deployment:") | |
| for platform, cmds in commands.items(): | |
| print(f"\n## {platform}") | |
| for cmd in cmds: | |
| print(cmd) | |
| def main(): | |
| """Main function""" | |
| print("=" * 60) | |
| print(" F5-TTS Thai WebUI - Deployment Preparation") | |
| print("=" * 60) | |
| # ตรวจสอบไฟล์ | |
| if not validate_deployment(): | |
| print("\n❌ พบปัญหาในการตรวจสอบไฟล์") | |
| print("กรุณาแก้ไขปัญหาก่อนทำการ deploy") | |
| return False | |
| print("\n✅ ตรวจสอบไฟล์เรียบร้อย") | |
| # สร้าง deployment package | |
| deploy_dir, zip_path = create_deployment_package() | |
| # แสดงคำสั่ง deploy | |
| generate_deploy_commands() | |
| print(f"\n🎉 เตรียม deployment เรียบร้อย!") | |
| print(f"📁 ไฟล์อยู่ที่: {deploy_dir}") | |
| print(f"📦 ไฟล์ zip: {zip_path}") | |
| print("\n📝 ขั้นตอนต่อไป:") | |
| print("1. ไปที่ https://huggingface.co/new-space") | |
| print("2. สร้าง Space ใหม่ (เลือก SDK: Gradio)") | |
| print("3. อัปโหลดไฟล์จากโฟลเดอร์ deployment/") | |
| print("4. รอการ build และทดสอบ") | |
| return True | |
| if __name__ == "__main__": | |
| success = main() | |
| sys.exit(0 if success else 1) |