def __init__(self, conf_path=None): # Load default settings if conf_path is not None: self.from_json(load_yaml(conf_path)) # pylint: disable=E1101 else: conf_path = os.path.join(SETTING_DIR, self.default_setting_file) self.from_json(load_yaml(conf_path)) # pylint: disable=E1101
def _get_label_files(cls, dataset_path, wav_paths): # Get only vocal ground-truth files labels = [] for wav_path in wav_paths: filename, _ = os.path.splitext(os.path.basename(wav_path)) filename = filename.replace(cls.wav_postfix, "") meta_file = filename + cls.meta_file_postfix meta_file = os.path.join(os.path.dirname(wav_path), meta_file) meta = load_yaml(meta_file) if meta["instrumental"] == "yes": # Ignore instrumental songs that have no vocals. continue for tid, track in meta["stems"].items(): if "singer" not in track["instrument"]: # Ignore instruments continue label_name = filename + cls.label_postfix.format(track_num=tid[1:]) + cls.label_ext label = os.path.join(dataset_path, cls.pitch_annotation_folder, label_name) if not os.path.exists(label): # Not the main melody vocal pass else: labels.append(label) break return labels
def test_yaml_io(tmp_path): data = { "int": 1, "list": [1, 2, 3], "dict": { "a": "haha", "b": "iii" }, "rrrr": "RRRRRRRRRRRRRRRRRR!", "nested": { "one": [3, 4, 5, 6.1, 9], "two": { "aa": { "onon": 0.04, "ofof": 0.16 }, "bb": "world" } } } f_name = tmp_path.joinpath("test.yaml") io.write_yaml(data, f_name) loaded = io.load_yaml(f_name) assert data == loaded