fixes silence detected but never reported by silero
This commit is contained in:
parent
6206fff118
commit
a175d1a327
8 changed files with 12 additions and 10 deletions
|
|
@ -61,10 +61,10 @@ packages = [
|
||||||
"whisperlivekit.whisper.normalizers",
|
"whisperlivekit.whisper.normalizers",
|
||||||
"whisperlivekit.web",
|
"whisperlivekit.web",
|
||||||
"whisperlivekit.local_agreement",
|
"whisperlivekit.local_agreement",
|
||||||
"whisperlivekit.vad_models"
|
"whisperlivekit.silero_vad_models"
|
||||||
]
|
]
|
||||||
|
|
||||||
[tool.setuptools.package-data]
|
[tool.setuptools.package-data]
|
||||||
whisperlivekit = ["web/*.html", "web/*.css", "web/*.js", "web/src/*.svg"]
|
whisperlivekit = ["web/*.html", "web/*.css", "web/*.js", "web/src/*.svg"]
|
||||||
"whisperlivekit.whisper.assets" = ["*.tiktoken", "*.npz"]
|
"whisperlivekit.whisper.assets" = ["*.tiktoken", "*.npz"]
|
||||||
"whisperlivekit.vad_models" = ["*.jit", "*.onnx"]
|
"whisperlivekit.silero_vad_models" = ["*.jit", "*.onnx"]
|
||||||
|
|
|
||||||
|
|
@ -603,16 +603,16 @@ class AudioProcessor:
|
||||||
res = self.vac(pcm_array)
|
res = self.vac(pcm_array)
|
||||||
|
|
||||||
if res is not None:
|
if res is not None:
|
||||||
silence_detected = res.get("end", 0) > res.get("start", 0)
|
if "start" in res and self.current_silence:
|
||||||
if silence_detected and not self.current_silence:
|
await self._end_silence()
|
||||||
|
|
||||||
|
if "end" in res and not self.current_silence:
|
||||||
pre_silence_chunk = self._slice_before_silence(
|
pre_silence_chunk = self._slice_before_silence(
|
||||||
pcm_array, chunk_sample_start, res.get("end")
|
pcm_array, chunk_sample_start, res.get("end")
|
||||||
)
|
)
|
||||||
if pre_silence_chunk is not None and pre_silence_chunk.size > 0:
|
if pre_silence_chunk is not None and pre_silence_chunk.size > 0:
|
||||||
await self._enqueue_active_audio(pre_silence_chunk)
|
await self._enqueue_active_audio(pre_silence_chunk)
|
||||||
await self._begin_silence()
|
await self._begin_silence()
|
||||||
elif self.current_silence:
|
|
||||||
await self._end_silence()
|
|
||||||
|
|
||||||
if not self.current_silence:
|
if not self.current_silence:
|
||||||
await self._enqueue_active_audio(pcm_array)
|
await self._enqueue_active_audio(pcm_array)
|
||||||
|
|
|
||||||
|
|
@ -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}')
|
raise Exception(f'Available ONNX opset_version: {available_ops}')
|
||||||
if model_path is None:
|
if model_path is None:
|
||||||
current_dir = Path(__file__).parent
|
current_dir = Path(__file__).parent
|
||||||
data_dir = current_dir / 'vad_models'
|
data_dir = current_dir / 'silero_vad_models'
|
||||||
|
|
||||||
if onnx:
|
if onnx:
|
||||||
if opset_version == 16:
|
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():
|
if not model_path.exists():
|
||||||
raise FileNotFoundError(
|
raise FileNotFoundError(
|
||||||
f"Model file not found: {model_path}\n"
|
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:
|
else:
|
||||||
model_path = Path(model_path)
|
model_path = Path(model_path)
|
||||||
|
|
@ -276,8 +276,10 @@ class FixedVADIterator(VADIterator):
|
||||||
elif r is not None:
|
elif r is not None:
|
||||||
if "end" in r:
|
if "end" in r:
|
||||||
ret["end"] = r["end"]
|
ret["end"] = r["end"]
|
||||||
if "start" in r and "end" in ret:
|
if "start" in r:
|
||||||
del ret["end"]
|
ret["start"] = r["start"]
|
||||||
|
if "end" in ret:
|
||||||
|
del ret["end"]
|
||||||
return ret if ret != {} else None
|
return ret if ret != {} else None
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue