my_fastapi / fastapi_app.py
Kavin1701's picture
Upload 3 files
5541632 verified
raw
history blame
1.5 kB
from fastapi import FastAPI, File, UploadFile, HTTPException
from fastapi.responses import JSONResponse, RedirectResponse
from tempfile import NamedTemporaryFile
from typing import List
from transformers import pipeline
# Specify the model name
model_name = "openai/whisper-small"
whisper_asr = pipeline(
"automatic-speech-recognition",
model = model_name,
chunk_length_s = 30,
device = "cpu"
)
app = FastAPI()
@app.post("/whisper/")
async def handler(files: List[UploadFile] = File(...)):
if not files:
raise HTTPException(status_code=400, detail="No files were provided")
# For each file, let's store the results in a list of dictionaries.
results = []
for file in files:
# Create a temporary file.
with NamedTemporaryFile(delete=True) as temp:
# Write the user's uploaded file to the temporary file.
with open(temp.name, "wb") as temp_file:
temp_file.write(file.file.read())
# Let's get the transcript of the temporary file.
result = whisper_asr(temp.name, return_timestamps=False)
# Now we can store the result object for this file.
results.append({
'filename': file.filename,
'transcript': result['text'],
})
return JSONResponse(content={'results': results})
@app.get("/", response_class=RedirectResponse)
async def redirect_to_docs():
return "/docs"