from fastapi import FastAPI, UploadFile, File from faster_whisper import WhisperModel import tempfile import os app = FastAPI() model = WhisperModel( "small", device="cuda", compute_type="float16" ) @app.post("/transcribe") async def transcribe(file: UploadFile = File(...)): with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp: tmp.write(await file.read()) tmp_path = tmp.name segments, info = model.transcribe( tmp_path, language="fr", vad_filter=True ) os.remove(tmp_path) text = " ".join([seg.text for seg in segments]) return { "text": text, "language": info.language }