PA / app.py
MikePGxAI's picture
Update app.py
11fad67 verified
Raw History Blame Contribute Delete
1.39 kB
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
}