Spaces:
Sleeping
Sleeping
Commit
·
2acc39d
1
Parent(s):
5b49b7d
updated the path to the APP_DIR in the main file
Browse files- app/main.py +20 -18
app/main.py
CHANGED
|
@@ -54,18 +54,19 @@ async def lifespan(app: FastAPI):
|
|
| 54 |
app.state.logger = logger # Make logger available to routes
|
| 55 |
|
| 56 |
# Create necessary directories - use persistent locations
|
| 57 |
-
os.
|
| 58 |
-
os.makedirs("
|
| 59 |
-
os.makedirs("
|
| 60 |
-
os.makedirs("
|
| 61 |
-
os.makedirs("
|
| 62 |
-
os.makedirs("
|
| 63 |
-
os.makedirs("
|
| 64 |
-
os.makedirs("
|
|
|
|
| 65 |
|
| 66 |
# Set tokenizer cache
|
| 67 |
try:
|
| 68 |
-
os.environ["TRANSFORMERS_CACHE"] = "
|
| 69 |
logger.info(f"Set tokenizer cache to: {os.environ['TRANSFORMERS_CACHE']}")
|
| 70 |
except Exception as e:
|
| 71 |
logger.error(f"Error setting tokenizer cache: {e}")
|
|
@@ -109,7 +110,7 @@ async def lifespan(app: FastAPI):
|
|
| 109 |
app.state.device_map = device_map
|
| 110 |
|
| 111 |
# Check if model file exists
|
| 112 |
-
model_path = os.path.join("
|
| 113 |
if not os.path.exists(model_path):
|
| 114 |
# Try to download at runtime if not present
|
| 115 |
logger.info("Model not found. Attempting to download...")
|
|
@@ -125,7 +126,7 @@ async def lifespan(app: FastAPI):
|
|
| 125 |
model_path = hf_hub_download(
|
| 126 |
repo_id="sesame/csm-1b",
|
| 127 |
filename="ckpt.pt",
|
| 128 |
-
local_dir=
|
| 129 |
)
|
| 130 |
download_time = time.time() - download_start
|
| 131 |
logger.info(f"Model downloaded to {model_path} in {download_time:.2f} seconds")
|
|
@@ -180,7 +181,7 @@ async def lifespan(app: FastAPI):
|
|
| 180 |
logger.info("Initializing voice cloning system...")
|
| 181 |
from app.voice_cloning import VoiceCloner, CLONED_VOICES_DIR
|
| 182 |
# Update the cloned voices directory to use the persistent volume
|
| 183 |
-
app.state.cloned_voices_dir = "
|
| 184 |
os.makedirs(app.state.cloned_voices_dir, exist_ok=True)
|
| 185 |
CLONED_VOICES_DIR = app.state.cloned_voices_dir # Update the module constant
|
| 186 |
|
|
@@ -362,7 +363,7 @@ async def lifespan(app: FastAPI):
|
|
| 362 |
# Set up audio cache
|
| 363 |
app.state.audio_cache_enabled = os.environ.get("ENABLE_AUDIO_CACHE", "true").lower() == "true"
|
| 364 |
if app.state.audio_cache_enabled:
|
| 365 |
-
app.state.audio_cache_dir = "
|
| 366 |
logger.info(f"Audio cache enabled, cache dir: {app.state.audio_cache_dir}")
|
| 367 |
|
| 368 |
# Log GPU utilization after model loading
|
|
@@ -497,11 +498,12 @@ app.add_middleware(
|
|
| 497 |
)
|
| 498 |
|
| 499 |
# Create static and other required directories
|
| 500 |
-
os.
|
| 501 |
-
os.makedirs("
|
|
|
|
| 502 |
|
| 503 |
# Mount the static files directory
|
| 504 |
-
app.mount("/static", StaticFiles(directory="
|
| 505 |
|
| 506 |
# Include routers
|
| 507 |
app.include_router(api_router, prefix="/api/v1")
|
|
@@ -588,13 +590,13 @@ async def version():
|
|
| 588 |
@app.get("/voice-cloning", include_in_schema=False)
|
| 589 |
async def voice_cloning_ui():
|
| 590 |
"""Voice cloning UI endpoint."""
|
| 591 |
-
return FileResponse("
|
| 592 |
|
| 593 |
# Streaming demo endpoint
|
| 594 |
@app.get("/streaming-demo", include_in_schema=False)
|
| 595 |
async def streaming_demo():
|
| 596 |
"""Streaming TTS demo endpoint."""
|
| 597 |
-
return FileResponse("
|
| 598 |
|
| 599 |
@app.get("/", include_in_schema=False)
|
| 600 |
async def root():
|
|
|
|
| 54 |
app.state.logger = logger # Make logger available to routes
|
| 55 |
|
| 56 |
# Create necessary directories - use persistent locations
|
| 57 |
+
APP_DIR = os.path.join(os.environ['HOME'], 'app')
|
| 58 |
+
os.makedirs(os.path.join(APP_DIR, "models"), exist_ok=True)
|
| 59 |
+
os.makedirs(os.path.join(APP_DIR, "tokenizers"), exist_ok=True)
|
| 60 |
+
os.makedirs(os.path.join(APP_DIR, "voice_memories"), exist_ok=True)
|
| 61 |
+
os.makedirs(os.path.join(APP_DIR, "voice_references"), exist_ok=True)
|
| 62 |
+
os.makedirs(os.path.join(APP_DIR, "voice_profiles"), exist_ok=True)
|
| 63 |
+
os.makedirs(os.path.join(APP_DIR, "cloned_voices"), exist_ok=True)
|
| 64 |
+
os.makedirs(os.path.join(APP_DIR, "audio_cache"), exist_ok=True)
|
| 65 |
+
os.makedirs(os.path.join(APP_DIR, "static"), exist_ok=True)
|
| 66 |
|
| 67 |
# Set tokenizer cache
|
| 68 |
try:
|
| 69 |
+
os.environ["TRANSFORMERS_CACHE"] = os.path.join(APP_DIR, "tokenizers")
|
| 70 |
logger.info(f"Set tokenizer cache to: {os.environ['TRANSFORMERS_CACHE']}")
|
| 71 |
except Exception as e:
|
| 72 |
logger.error(f"Error setting tokenizer cache: {e}")
|
|
|
|
| 110 |
app.state.device_map = device_map
|
| 111 |
|
| 112 |
# Check if model file exists
|
| 113 |
+
model_path = os.path.join(APP_DIR, "models", "ckpt.pt")
|
| 114 |
if not os.path.exists(model_path):
|
| 115 |
# Try to download at runtime if not present
|
| 116 |
logger.info("Model not found. Attempting to download...")
|
|
|
|
| 126 |
model_path = hf_hub_download(
|
| 127 |
repo_id="sesame/csm-1b",
|
| 128 |
filename="ckpt.pt",
|
| 129 |
+
local_dir=APP_DIR
|
| 130 |
)
|
| 131 |
download_time = time.time() - download_start
|
| 132 |
logger.info(f"Model downloaded to {model_path} in {download_time:.2f} seconds")
|
|
|
|
| 181 |
logger.info("Initializing voice cloning system...")
|
| 182 |
from app.voice_cloning import VoiceCloner, CLONED_VOICES_DIR
|
| 183 |
# Update the cloned voices directory to use the persistent volume
|
| 184 |
+
app.state.cloned_voices_dir = os.path.join(APP_DIR, "cloned_voices") # Store path in app state for access
|
| 185 |
os.makedirs(app.state.cloned_voices_dir, exist_ok=True)
|
| 186 |
CLONED_VOICES_DIR = app.state.cloned_voices_dir # Update the module constant
|
| 187 |
|
|
|
|
| 363 |
# Set up audio cache
|
| 364 |
app.state.audio_cache_enabled = os.environ.get("ENABLE_AUDIO_CACHE", "true").lower() == "true"
|
| 365 |
if app.state.audio_cache_enabled:
|
| 366 |
+
app.state.audio_cache_dir = os.path.join(APP_DIR, "audio_cache")
|
| 367 |
logger.info(f"Audio cache enabled, cache dir: {app.state.audio_cache_dir}")
|
| 368 |
|
| 369 |
# Log GPU utilization after model loading
|
|
|
|
| 498 |
)
|
| 499 |
|
| 500 |
# Create static and other required directories
|
| 501 |
+
APP_DIR = os.path.join(os.environ['HOME'], 'app')
|
| 502 |
+
os.makedirs(os.path.join(APP_DIR, "static"), exist_ok=True)
|
| 503 |
+
os.makedirs(os.path.join(APP_DIR, "cloned_voices"), exist_ok=True)
|
| 504 |
|
| 505 |
# Mount the static files directory
|
| 506 |
+
app.mount("/static", StaticFiles(directory=os.path.join(APP_DIR, "static")), name="static")
|
| 507 |
|
| 508 |
# Include routers
|
| 509 |
app.include_router(api_router, prefix="/api/v1")
|
|
|
|
| 590 |
@app.get("/voice-cloning", include_in_schema=False)
|
| 591 |
async def voice_cloning_ui():
|
| 592 |
"""Voice cloning UI endpoint."""
|
| 593 |
+
return FileResponse(os.path.join(APP_DIR, "static/voice-cloning.html"))
|
| 594 |
|
| 595 |
# Streaming demo endpoint
|
| 596 |
@app.get("/streaming-demo", include_in_schema=False)
|
| 597 |
async def streaming_demo():
|
| 598 |
"""Streaming TTS demo endpoint."""
|
| 599 |
+
return FileResponse(os.path.join(APP_DIR, "static/streaming-demo.html"))
|
| 600 |
|
| 601 |
@app.get("/", include_in_schema=False)
|
| 602 |
async def root():
|