fixes silence detected but never reported by silero

This commit is contained in:
Quentin Fuxa
2025-11-23 11:20:00 +01:00
parent 6206fff118
commit a175d1a327
8 changed files with 12 additions and 10 deletions

View File

@@ -61,10 +61,10 @@ packages = [
"whisperlivekit.whisper.normalizers",
"whisperlivekit.web",
"whisperlivekit.local_agreement",
"whisperlivekit.vad_models"
"whisperlivekit.silero_vad_models"
]
[tool.setuptools.package-data]
whisperlivekit = ["web/*.html", "web/*.css", "web/*.js", "web/src/*.svg"]
"whisperlivekit.whisper.assets" = ["*.tiktoken", "*.npz"]
"whisperlivekit.vad_models" = ["*.jit", "*.onnx"]
"whisperlivekit.silero_vad_models" = ["*.jit", "*.onnx"]

View File

@@ -603,16 +603,16 @@ class AudioProcessor:
res = self.vac(pcm_array)
if res is not None:
silence_detected = res.get("end", 0) > res.get("start", 0)
if silence_detected and not self.current_silence:
if "start" in res and self.current_silence:
await self._end_silence()
if "end" in res and not self.current_silence:
pre_silence_chunk = self._slice_before_silence(
pcm_array, chunk_sample_start, res.get("end")
)
if pre_silence_chunk is not None and pre_silence_chunk.size > 0:
await self._enqueue_active_audio(pre_silence_chunk)
await self._begin_silence()
elif self.current_silence:
await self._end_silence()
if not self.current_silence:
await self._enqueue_active_audio(pcm_array)

View File

@@ -123,7 +123,7 @@ def load_silero_vad(model_path: str = None, onnx: bool = False, opset_version: i
raise Exception(f'Available ONNX opset_version: {available_ops}')
if model_path is None:
current_dir = Path(__file__).parent
data_dir = current_dir / 'vad_models'
data_dir = current_dir / 'silero_vad_models'
if onnx:
if opset_version == 16:
@@ -138,7 +138,7 @@ def load_silero_vad(model_path: str = None, onnx: bool = False, opset_version: i
if not model_path.exists():
raise FileNotFoundError(
f"Model file not found: {model_path}\n"
f"Please ensure the whisperlivekit/vad_models/ directory contains the model files."
f"Please ensure the whisperlivekit/silero_vad_models/ directory contains the model files."
)
else:
model_path = Path(model_path)
@@ -276,8 +276,10 @@ class FixedVADIterator(VADIterator):
elif r is not None:
if "end" in r:
ret["end"] = r["end"]
if "start" in r and "end" in ret:
del ret["end"]
if "start" in r:
ret["start"] = r["start"]
if "end" in ret:
del ret["end"]
return ret if ret != {} else None