Ravishankarsharma's picture
Update app.py
e8d2326 verified
raw
history blame
1.42 kB
import os
import time
import json
import tempfile
import threading
from typing import Optional
from datetime import datetime, timezone
import httpx
import whisper
import nltk
from nltk.tokenize import sent_tokenize
from fastapi import FastAPI, UploadFile, File, Form, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from transformers import pipeline
# ---------------- Fix Whisper cache issue ----------------
os.environ["XDG_CACHE_HOME"] = "/tmp/.cache"
# ---------------- Config ----------------
UPLOAD_DIR = "uploads"
os.makedirs(UPLOAD_DIR, exist_ok=True)
# Initialize FastAPI
app = FastAPI()
# Allow CORS for all origins
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Load Whisper model (small for speed)
model = whisper.load_model("small")
@app.post("/transcribe/")
async def transcribe_audio(file: UploadFile = File(...)):
try:
# Save uploaded file temporarily
file_path = os.path.join(UPLOAD_DIR, file.filename)
with open(file_path, "wb") as f:
f.write(await file.read())
# Transcribe with Whisper
result = model.transcribe(file_path)
# Return text output
return {"filename": file.filename, "transcription": result["text"]}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))