Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, UploadFile, File | |
| from pywhispercpp.model import Model | |
| import uvicorn | |
| import tempfile | |
| import os | |
| from time import time | |
| app = FastAPI(title="pyWhisperCPP API") | |
| # Load model ONCE at startup | |
| #MODEL_PATH = "ggml-tiny.en.bin" | |
| #model = Model(MODEL_PATH) | |
| #model = Model('base.en') | |
| model = Model("base.en-q5_1") | |
| def root(): | |
| return {"status": "Whisper.cpp API is running!"} | |
| async def transcribe(file: UploadFile = File(...)): | |
| # Save uploaded audio | |
| with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp: | |
| temp.write(await file.read()) | |
| temp.flush() | |
| audio_path = temp.name | |
| start = time() | |
| segments = model.transcribe(audio_path) | |
| text = " ".join([seg.text for seg in segments]) | |
| elapsed = round(time() - start, 3) | |
| os.remove(audio_path) | |
| return { | |
| "text": text, | |
| "processing_time_seconds": elapsed | |
| } | |
| if __name__ == "__main__": | |
| uvicorn.run(app, host="0.0.0.0", port=7860) | |