app.py 694 B

123456789101112131415161718192021222324252627282930313233
  1. from fastapi import FastAPI, UploadFile, File
  2. from faster_whisper import WhisperModel
  3. import tempfile
  4. import os
  5. app = FastAPI()
  6. model = WhisperModel(
  7. "small",
  8. device="cuda",
  9. compute_type="float16"
  10. )
  11. @app.post("/transcribe")
  12. async def transcribe(file: UploadFile = File(...)):
  13. with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp:
  14. tmp.write(await file.read())
  15. tmp_path = tmp.name
  16. segments, info = model.transcribe(
  17. tmp_path,
  18. language="fr",
  19. vad_filter=True
  20. )
  21. os.remove(tmp_path)
  22. text = " ".join([seg.text for seg in segments])
  23. return {
  24. "text": text,
  25. "language": info.language
  26. }