Spaces:
Running
Running
#!/usr/bin/env python3 | |
""" | |
AI Avatar Chat - HF Spaces Optimized Version | |
With robust import handling and graceful fallbacks | |
""" | |
import os | |
# STORAGE OPTIMIZATION: Check if running on HF Spaces and disable model downloads | |
IS_HF_SPACE = any([ | |
os.getenv("SPACE_ID"), | |
os.getenv("SPACE_AUTHOR_NAME"), | |
os.getenv("SPACES_BUILDKIT_VERSION"), | |
"/home/user/app" in os.getcwd() | |
]) | |
if IS_HF_SPACE: | |
# Force TTS-only mode to prevent storage limit exceeded | |
os.environ["DISABLE_MODEL_DOWNLOAD"] = "1" | |
os.environ["TTS_ONLY_MODE"] = "1" | |
os.environ["HF_SPACE_STORAGE_OPTIMIZED"] = "1" | |
print("?? STORAGE OPTIMIZATION: Detected HF Space environment") | |
print("??? TTS-only mode ENABLED (video generation disabled for storage limits)") | |
print("?? Model auto-download DISABLED to prevent storage exceeded error") | |
# Core imports (required) | |
import torch | |
import tempfile | |
import gradio as gr | |
from fastapi import FastAPI, HTTPException | |
from fastapi.staticfiles import StaticFiles | |
from fastapi.middleware.cors import CORSMiddleware | |
from pydantic import BaseModel, HttpUrl | |
import subprocess | |
import json | |
from pathlib import Path | |
import logging | |
import requests | |
from urllib.parse import urlparse | |
from PIL import Image | |
import io | |
from typing import Optional | |
import asyncio | |
import time | |
# Optional imports with graceful fallbacks | |
try: | |
import aiohttp | |
AIOHTTP_AVAILABLE = True | |
except ImportError: | |
print("Warning: aiohttp not available") | |
AIOHTTP_AVAILABLE = False | |
try: | |
from dotenv import load_dotenv | |
load_dotenv() | |
DOTENV_AVAILABLE = True | |
except ImportError: | |
print("Warning: python-dotenv not available, skipping .env file loading") | |
DOTENV_AVAILABLE = False | |
def load_dotenv(): | |
pass | |
try: | |
from hf_spaces_fix import setup_hf_spaces_environment, HFSpacesCompatible | |
setup_hf_spaces_environment() | |
HF_FIX_AVAILABLE = True | |
except ImportError: | |
print("Warning: HF Spaces fix not available") | |
HF_FIX_AVAILABLE = False | |
# STREAMING MODEL SUPPORT for HF Spaces | |
try: | |
from streaming_video_engine import streaming_engine | |
STREAMING_ENABLED = True | |
print("?? Streaming video engine loaded successfully") | |
except ImportError: | |
STREAMING_ENABLED = False | |
print("?? Streaming engine not available, using TTS-only mode") | |
print("? Core imports loaded successfully") | |
print(f"?? Optional features: aiohttp={AIOHTTP_AVAILABLE}, dotenv={DOTENV_AVAILABLE}, hf_fix={HF_FIX_AVAILABLE}, streaming={STREAMING_ENABLED}") | |