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)) | |