from pathlib import Path import sys import numpy as np import pytest import soundfile as sf # Support running the suite before the project is installed. sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src")) from voiceforge.config import resolve from voiceforge.setup import ensure_ffmpeg @pytest.fixture def progress(): return lambda *_: None @pytest.fixture def wav(tmp_path): def write(samples=None, *, rate=48000, name="input.wav"): if samples is None: time = np.arange(rate * 3) / rate samples = 0.15 * np.sin(2 * np.pi * 440 * time) path = tmp_path / name sf.write(path, np.asarray(samples), rate, format="WAV", subtype="FLOAT") return path return write @pytest.fixture def bypass(): return resolve(profile="cleanup-only", overrides={"denoiser": "none", "highpass": False}) @pytest.fixture def ffmpeg(): try: return ensure_ffmpeg() except RuntimeError as error: pytest.skip(str(error))