Commit be1cbdb0 authored by Jan Kiene's avatar Jan Kiene
Browse files

use testvectors from codec in test

parent dabf07f2
Loading
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -48,6 +48,11 @@ stages:
  - make -j
  - cd $dir

.get-codec-testvectors: &get-codec-testvectors
  - to_dir=$(pwd)/tests/data/testv
  - mkdir -p $to_dir
  - from_dir=$CODEC_DIR/scripts/testv
  - cp $from_dir/*.wav $to_dir/

# ------------------------------------
# check pre-conditions are met
@@ -82,6 +87,7 @@ experiments:
  script:
    - *print-common-info
    - *get-codec-binaries
    - *get-codec-testvectors
    - python3 -m pytest tests/test_experiments.py::test_generate_test_items -n auto | tee log.txt
  artifacts:
    paths:
+14 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ from pathlib import PurePath
""" Set up paths """
TESTS_DIR = PurePath(__file__).parent
TEST_VECTOR_DIR = TESTS_DIR.joinpath("data")
CODEC_TEST_VECTOR_DIR = TEST_VECTOR_DIR.joinpath("testv")
EXPERIMENTS_DIR = "../experiments/selection"

ISM_METADATA_DIR = TEST_VECTOR_DIR.joinpath("ism_metadata")
@@ -84,6 +85,19 @@ NCHAN_TO_FILE = {
    16: TEST_VECTOR_DIR.joinpath("spectral").joinpath("spectral_test_16ch_48kHz.wav"),
}

NCHAN_TO_TESTV = {
    1: CODEC_TEST_VECTOR_DIR.joinpath("stv48c.wav"),
    2: CODEC_TEST_VECTOR_DIR.joinpath("stvST48c.wav"),
    3: CODEC_TEST_VECTOR_DIR.joinpath("stv3ISM48s.wav"),
    4: CODEC_TEST_VECTOR_DIR.joinpath("stv4ISM48n.wav"),
    6: CODEC_TEST_VECTOR_DIR.joinpath("stv51MC48c.wav"),
    8: CODEC_TEST_VECTOR_DIR.joinpath("stv71MC48.wav"),
    9: CODEC_TEST_VECTOR_DIR.joinpath("stv2OA48c.wav"),
    10: CODEC_TEST_VECTOR_DIR.joinpath("stv514MC48c.wav"),
    12: CODEC_TEST_VECTOR_DIR.joinpath("stv714MC48c.wav"),
    16: CODEC_TEST_VECTOR_DIR.joinpath("stv3OA48c.wav"),
}

FORMAT_TO_FILE = {
    "MONO": NCHAN_TO_FILE[1],
    "STEREO": NCHAN_TO_FILE[2],
+20 −22
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ from tests.constants import (
    INPUT_EXPERIMENT_NAMES,
    LAB_IDS_FOR_EXPERIMENTS,
    NCHAN_TO_FILE,
    NCHAN_TO_TESTV, 
)

HERE = Path(__file__).parent.absolute()
@@ -54,6 +55,9 @@ sys.path.append(HERE.parent)
from generate_test import Arguments, create_experiment_setup  # NOQA


N_INPUT_SIGNALS = 2


def setup_input_files_for_config(config):
    input_path = Path(config.input_path).resolve().absolute()
    input_fmt = config.input["fmt"]
@@ -66,29 +70,23 @@ def setup_input_files_for_config(config):
    if not input_path.exists():
        raise ValueError("Input path from experiments config does not exist")

    # get dummy input files:
    spectral_dummy = NCHAN_TO_FILE[num_channels]
    pink_noise_dummy = Path(
        str(spectral_dummy).replace("spectral/spectral_test", "pinknoise/pink_noise")
    )
    dummy_input_files = [spectral_dummy, pink_noise_dummy]
    # get testvector for format and create to one-second items from it
    files_copied = list()
    testv_file = NCHAN_TO_TESTV[num_channels]
    testv_signal, fs = read(testv_file)
    assert fs == 48000
    for i in range(N_INPUT_SIGNALS):
        f_out = input_path.joinpath(testv_file.name).with_suffix(f".{i}.wav").resolve().absolute()
        write(f_out, testv_signal[i * 48000 : (i + 1) * 48000, :])
        files_copied.append(f_out.name)

        # get dummy metadata files
        dummy_md_files = FORMAT_TO_METADATA_FILES.get(input_fmt, list())

    # copy input files
    files_copied = list()
    for f in dummy_input_files:
        f_out = input_path.joinpath(f.name).resolve().absolute()
        # need at least 2s of input files for gen-patt to be happy (can not keep the tolerance for 50 frames only)
        concat([str(f)] * 2, str(f_out))
        for i, md_f in enumerate(dummy_md_files):
            suffix = f"{i}.csv"
        for j, md_f in enumerate(dummy_md_files):
            suffix = f"{j}.csv"
            md_f_out = ".".join([str(f_out), suffix])
            shutil.copy(md_f, md_f_out)

        files_copied.append(f_out.name)

    # create background noise files with white noise
    if "background_noise" in config.preprocessing_2:
        # always set the same seed to have reproducible test noises
@@ -143,7 +141,7 @@ def test_generate_test_items(exp_lab_pair):
        config.preprocessing_2["concatenation_order"] = sorted(input_filenames)
        config.to_file(cfg)

    generate_test(args)
    # generate_test(args)

    if not all_lengths_equal(config):
        raise RuntimeError("Unequal lengths between input and output files detected")
    # if not all_lengths_equal(config):
    #     raise RuntimeError("Unequal lengths between input and output files detected")