You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
847 B
Python
33 lines
847 B
Python
from fastapi import FastAPI, File, UploadFile
|
|
from fastapi.responses import RedirectResponse
|
|
|
|
from . import __version__
|
|
from .audio import load_audio
|
|
from .inference import transcribe
|
|
|
|
# TODO use pydantic config
|
|
SAMPLE_RATE = 16000
|
|
|
|
|
|
app = FastAPI(
|
|
title="Local Whisper",
|
|
description="Making OpenAPI's Open Whisper available via ReST API locally.",
|
|
version=__version__,
|
|
swagger_ui_parameters={"defaultModelsExpandDepth": -1},
|
|
license_info={
|
|
"name": "MIT License",
|
|
},
|
|
)
|
|
|
|
|
|
@app.get("/", response_class=RedirectResponse, include_in_schema=False)
|
|
async def index():
|
|
return "/docs"
|
|
|
|
|
|
@app.post("/audio/transcriptions")
|
|
async def asr(file: UploadFile = File(...)):
|
|
if file.content_type.startswith("audio/"):
|
|
transcription = transcribe(load_audio(file.file))
|
|
return {"text": transcription["text"]}
|