Quellcode durchsuchen

[3.0.0] Rollback conversion

Penta vor 5 Monaten
Ursprung
Commit
5778497929
1 geänderte Dateien mit 11 neuen und 12 gelöschten Zeilen
  1. 11 12
      chatbot.py

+ 11 - 12
chatbot.py

@@ -191,22 +191,21 @@ class STTSink(Sink):
 conversation_history = []
 conversation_history = []
 
 
 def discord_pcm_to_whisper_int16(pcm_bytes: bytes) -> bytes:
 def discord_pcm_to_whisper_int16(pcm_bytes: bytes) -> bytes:
-    audio = np.frombuffer(pcm_bytes, dtype=np.int16).astype(np.float32)
+    # PCM 48 kHz int16 -> numpy
+    audio_48k = np.frombuffer(pcm_bytes, dtype=np.int16)
+    if audio_48k.size == 0:
+        return b""
 
 
-    # normalisation RMS
-    rms = np.sqrt(np.mean(audio**2) + 1e-8)
-    audio = audio / max(rms, 5000)
+    # int16 -> float32 pour resample
+    audio_float32 = audio_48k.astype(np.float32) / 32768.0
 
 
-    # passe-bas léger avant downsample
-    audio = audio / 32768.0
+    # resample 48kHz -> 16kHz
+    audio_16k = resample_poly(audio_float32, up=1, down=3)
 
 
-    # resample 48k → 16k
-    audio_16k = resample_poly(audio, up=1, down=3, window=('kaiser', 5.0))
+    # float32 -> int16 (CE QUE WHISPER ATTEND)
+    audio_16k_int16 = np.clip(audio_16k * 32768.0, -32768, 32767).astype(np.int16)
 
 
-    # clip sécurité
-    audio_16k = np.clip(audio_16k, -1.0, 1.0)
-
-    return (audio_16k * 32767).astype(np.int16).tobytes()
+    return audio_16k_int16.tobytes()
 
 
 def filter_message(message):
 def filter_message(message):
     """Filtre le contenu d'un retour de modèle de language, comme pour enlever les pensées dans le cas par exemple de DeepSeek"""
     """Filtre le contenu d'un retour de modèle de language, comme pour enlever les pensées dans le cas par exemple de DeepSeek"""