Spaces:
Runtime error
Runtime error
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() | |
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}) | |
async def redirect_to_docs(): | |
return "/docs" |