import os import tempfile from fastapi import FastAPI, UploadFile, File, Header, HTTPException from fastapi.middleware.cors import CORSMiddleware from openai import OpenAI APP_SHARED_SECRET = os.environ.get("APP_SHARED_SECRET", "") app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"], ) client = OpenAI(api_key=os.environ["OPENAI_API_KEY"]) def require_secret(x_app_secret: str | None) -> None: if APP_SHARED_SECRET and x_app_secret != APP_SHARED_SECRET: raise HTTPException(status_code=401, detail="Unauthorized") @app.post("/v1/session") async def session(x_app_secret: str | None = Header(default=None)): require_secret(x_app_secret) return { "token": "hf-dev", "expiresAt": None, "requestId": None } @app.post("/v1/stt") async def stt( audio: UploadFile = File(...), metadata: str | None = None, x_app_secret: str | None = Header(default=None) ): require_secret(x_app_secret) with tempfile.NamedTemporaryFile(suffix=".m4a") as tmp: tmp.write(await audio.read()) tmp.flush() result = client.audio.transcriptions.create( file=open(tmp.name, "rb"), model="whisper-1" ) return { "transcript": result.text, "language": "en", "requestId": None }