瀏覽代碼

Configurer le beam size via WHISPER_BEAM_SIZE

Andy Esnard 5 小時之前
父節點
當前提交
1eb92c915e
共有 1 個文件被更改,包括 7 次插入 和 3 次删除
  1. 7 3
      app.py

+ 7 - 3
app.py

@@ -18,6 +18,9 @@ LOG_LEVEL = os.getenv("WHISPER_LOG_LEVEL", "INFO").upper()
 VAD_ENABLED = env_bool("WHISPER_VAD", True)
 MODEL_SIZE = str(os.getenv("MODEL_SIZE", "small").lower())
 COMPUTE_TYPE = os.getenv("WHISPER_COMPUTE_TYPE", "float32").strip().lower()
+BEAM_SIZE = int(os.getenv("WHISPER_BEAM_SIZE", "1"))
+if BEAM_SIZE < 1:
+    raise ValueError("WHISPER_BEAM_SIZE doit être supérieur ou égal à 1")
 MIN_AUDIO_SEC = float(os.getenv("MIN_AUDIO_SEC", "2.0"))
 MAX_AUDIO_SEC = float(os.getenv("MAX_AUDIO_SEC", "10.0"))
 
@@ -34,6 +37,7 @@ logger.setLevel(getattr(logging, LOG_LEVEL, logging.INFO))
 logger.info(f"Log level = {LOG_LEVEL}")
 logger.info(f"VAD enabled = {VAD_ENABLED}")
 logger.info("Model = %s, compute type = %s", MODEL_SIZE, COMPUTE_TYPE)
+logger.info("Beam size = %d", BEAM_SIZE)
 
 app = FastAPI()
 
@@ -42,7 +46,7 @@ app = FastAPI()
 # =========================
 model = WhisperModel(MODEL_SIZE, device="cuda", compute_type=COMPUTE_TYPE)
 # Vérifier les kernels CUDA avant de déclarer le service prêt.
-list(model.transcribe(np.zeros(16000, dtype=np.float32), language="fr", beam_size=1)[0])
+list(model.transcribe(np.zeros(16000, dtype=np.float32), language="fr", beam_size=BEAM_SIZE)[0])
 model_lock = Lock()
 
 def transcribe_audio(audio):
@@ -50,13 +54,13 @@ def transcribe_audio(audio):
     with model_lock:
         segments, info = model.transcribe(
             audio, language="fr", vad_filter=VAD_ENABLED,
-            beam_size=1, condition_on_previous_text=False,
+            beam_size=BEAM_SIZE, condition_on_previous_text=False,
         )
         return " ".join(seg.text for seg in segments).strip(), info.language
 
 @app.get("/healthz")
 def healthz():
-    return {"status": "ready", "model": MODEL_SIZE, "compute_type": COMPUTE_TYPE}
+    return {"status": "ready", "model": MODEL_SIZE, "compute_type": COMPUTE_TYPE, "beam_size": BEAM_SIZE}
 
 # =========================
 # REST API (Swagger / tests)