"""Silero VAD (v5 via onnxruntime, pysilero-vad) on 512-sample frames."""

from __future__ import annotations

import numpy as np
from pysilero_vad import SileroVoiceActivityDetector


class VAD:
    def __init__(self) -> None:
        self._vad = SileroVoiceActivityDetector()

    def prob(self, frame: np.ndarray) -> float:
        """frame: 512 float32 samples @ 16 kHz -> speech probability."""
        pcm16 = (np.clip(frame, -1.0, 1.0) * 32767).astype(np.int16)
        return float(self._vad(pcm16.tobytes()))

    def reset(self) -> None:
        self._vad.reset()
