Kaynağa Gözat

[1.1] Fix buffer

Penta 9 ay önce
ebeveyn
işleme
f5b2419002
1 değiştirilmiş dosya ile 10 ekleme ve 7 silme
  1. 10 7
      app.py

+ 10 - 7
app.py

@@ -14,6 +14,9 @@ def env_bool(name: str, default: bool = False) -> bool:
 
 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())
+MIN_AUDIO_SEC = float(os.getenv("MIN_AUDIO_SEC", "2.0"))
+MAX_AUDIO_SEC = float(os.getenv("MAX_AUDIO_SEC", "10.0"))
 
 logging.basicConfig(
     level=getattr(logging, LOG_LEVEL, logging.INFO),
@@ -33,11 +36,7 @@ app = FastAPI()
 # =========================
 # Whisper model (shared)
 # =========================
-model = WhisperModel(
-    "small",
-    device="cuda",
-    compute_type="float32"  # GTX 1050 Ti compatible
-)
+model = WhisperModel(MODEL_SIZE, device="cuda", compute_type="float32")
 
 # =========================
 # REST API (Swagger / tests)
@@ -68,8 +67,6 @@ async def transcribe(file: UploadFile = File(...)):
 # =========================
 
 SAMPLE_RATE = 16000
-MIN_AUDIO_SEC = 0.5
-MAX_AUDIO_SEC = 10.0
 
 @app.websocket("/ws/transcribe")
 async def ws_transcribe(ws: WebSocket):
@@ -88,6 +85,12 @@ async def ws_transcribe(ws: WebSocket):
 
             # PCM int16 → float32
             pcm = np.frombuffer(data, dtype=np.int16).astype(np.float32) / 32768.0
+
+            # silence pur → on reset le buffer
+            if np.abs(pcm).mean() < 0.001:
+                audio_buffer.clear()
+                continue
+
             audio_buffer.append(pcm)
 
             audio_len = sum(len(chunk) for chunk in audio_buffer) / SAMPLE_RATE