Spaces:
Running
Running
| # Standard Library Imports | |
| import asyncio | |
| from pathlib import Path | |
| # Third-Party Library Imports | |
| import gradio as gr | |
| from fastapi import FastAPI | |
| from fastapi.staticfiles import StaticFiles | |
| # Local Application Imports | |
| from src.common import Config, logger | |
| from src.database import init_db | |
| from src.frontend import Frontend | |
| from src.middleware import MetaTagInjectionMiddleware | |
| async def main(): | |
| """ | |
| Asynchronous main function to initialize the application. | |
| """ | |
| logger.info("Launching TTS Arena Gradio app...") | |
| config = Config.get() | |
| db_session_maker = init_db(config) | |
| frontend = Frontend(config, db_session_maker) | |
| demo = await frontend.build_gradio_interface() | |
| app = FastAPI() | |
| app.add_middleware(MetaTagInjectionMiddleware) | |
| public_dir = Path("public") | |
| app.mount("/static", StaticFiles(directory=public_dir), name="static") | |
| gr.mount_gradio_app( | |
| app=app, | |
| blocks=demo, | |
| path="/", | |
| allowed_paths=["static"] | |
| ) | |
| import uvicorn | |
| config = uvicorn.Config(app, host="0.0.0.0", port=7860, log_level="info") | |
| server = uvicorn.Server(config) | |
| await server.serve() | |
| if __name__ == "__main__": | |
| asyncio.run(main()) | |