from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.middleware.cors import CORSMiddleware from pathlib import Path from app.routers import speakers, dialog # Import the routers from app import config app = FastAPI( title="Chatterbox TTS API", description="API for generating TTS dialogs using Chatterbox TTS.", version="0.1.0", ) # CORS Middleware configuration origins = [ "http://localhost:8001", "http://127.0.0.1:8001", # Add other origins if needed, e.g., your deployed frontend URL ] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], # Allows all methods allow_headers=["*"], # Allows all headers ) # Include routers app.include_router(speakers.router, prefix="/api/speakers", tags=["Speakers"]) app.include_router(dialog.router, prefix="/api/dialog", tags=["Dialog Generation"]) @app.get("/") async def read_root(): return {"message": "Welcome to the Chatterbox TTS API!"} # Ensure the directory for serving generated audio exists config.DIALOG_GENERATED_DIR.mkdir(parents=True, exist_ok=True) # Mount StaticFiles to serve generated dialogs app.mount("/generated_audio", StaticFiles(directory=config.DIALOG_GENERATED_DIR), name="generated_audio") # Further endpoints for speakers, dialog generation, etc., will be added here.