Spaces:
Runtime error
Runtime error
import openai | |
from fastapi import FastAPI, HTTPException | |
from fastapi.middleware.cors import CORSMiddleware | |
from pydantic import BaseModel | |
import pydantic | |
from fastapi import FastAPI, HTTPException, Depends, Request, Response | |
from fastapi.security import OAuth2PasswordBearer | |
from tinydb import TinyDB | |
from tinydb import Query | |
from datetime import datetime | |
from utils import generate_token | |
import whisper | |
import numpy as np | |
from typing import List | |
model = whisper.load_model("medium") | |
# model = whisper.load_model("base") | |
query = Query() | |
db = TinyDB(".token.json") | |
app = FastAPI() | |
origins = ["*"] | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=origins, | |
allow_credentials=True, | |
allow_methods=["*"], | |
allow_headers=["*"], | |
) | |
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") | |
REF_KEY = "F0eeQ419wvoCSPH7KBmsd9OiVkF0W0DxK1XE9T3BlbkFJ0" | |
model_name = "" | |
def verify_token(token: str = Depends(oauth2_scheme)): | |
expiry = -1 | |
res = db.get(query.token == token) | |
if res: | |
expiry = (datetime.strptime(res["expiry_date"], '%Y-%m-%d') - datetime.strptime(res["created_at"], '%Y-%m-%d')).days | |
if expiry < 0: | |
return {"message": "Token is not Valid"} | |
return token | |
class AudioInput(BaseModel): | |
data: List | |
class RefToken(BaseModel): | |
expiry_date: str | |
ref_key: str | |
async def base_url(): | |
try: | |
return { | |
"Please Check the documentation here": "https://huggingface.co/spaces/Subhraj07/transcription-api/blob/main/README.md", | |
"Swagger UI" : "https://subhraj07-transcription-api.hf.space/docs" | |
} | |
except Exception as e: | |
raise HTTPException(status_code=500, detail="An error occurred while processing the request." + str(e)) | |
async def create(data: RefToken): | |
token = "Reference Key is incorrect" | |
try: | |
if data.ref_key == REF_KEY: | |
token = generate_token(data.expiry_date, db) | |
return {"TOKEN": token} | |
except Exception as e: | |
raise HTTPException(status_code=500, detail="An error occurred while processing the request." + str(e)) | |
async def list(token: str = Depends(verify_token)): | |
try: | |
data = db.all() | |
return {"data": data} | |
except Exception as e: | |
raise HTTPException(status_code=500, detail="An error occurred while processing the request." + str(e)) | |
async def chat(audio_input: AudioInput, token: str = Depends(verify_token)): | |
try: | |
transcription = model.transcribe(np.asarray(audio_input)) | |
return { | |
"transcript": transcription["text"] | |
} | |
except Exception as e: | |
raise HTTPException(status_code=500, detail="An error occurred while processing the request." + str(e)) | |