import numpy as np import pytest from importlib import resources import mic_clipper.vad as vad_module from mic_clipper.vad import FRAME_SAMPLES, SileroVad def test_bundled_silero_vad_accepts_512_samples_and_returns_probability(): vad = SileroVad() probability = vad.probability(np.zeros(FRAME_SAMPLES, dtype=np.float32)) assert 0.0 <= probability <= 1.0 def test_silero_weight_is_packaged_with_the_application(): model_path = resources.files("mic_clipper.assets").joinpath("silero_vad_v6.onnx") assert model_path.is_file() def test_missing_packaged_weight_does_not_fall_back_to_an_external_package( monkeypatch, tmp_path ): monkeypatch.setattr(vad_module.resources, "files", lambda _package: tmp_path) with pytest.raises(RuntimeError, match="packaged Silero VAD model is missing"): SileroVad._default_model_path() def test_bundled_silero_vad_rejects_non_512_sample_frames(): vad = SileroVad() with pytest.raises(ValueError, match="512"): vad.probability(np.zeros(FRAME_SAMPLES - 1, dtype=np.float32))