summaryrefslogtreecommitdiff
path: root/tests/test_vad.py
blob: f2e3d65dd26584f062550661adc7cb13c549aba2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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))