MCPcopy Create free account
hub / github.com/MoonInTheRiver/DiffSinger / SingingBinarizer

Class SingingBinarizer

data_gen/singing/binarize.py:33–177  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31
32
33class SingingBinarizer(BaseBinarizer):
34 def __init__(self, processed_data_dir=None):
35 if processed_data_dir is None:
36 processed_data_dir = hparams['processed_data_dir']
37 self.processed_data_dirs = processed_data_dir.split(",")
38 self.binarization_args = hparams['binarization_args']
39 self.pre_align_args = hparams['pre_align_args']
40 self.item2txt = {}
41 self.item2ph = {}
42 self.item2wavfn = {}
43 self.item2f0fn = {}
44 self.item2tgfn = {}
45 self.item2spk = {}
46
47 def load_meta_data(self):
48 for ds_id, processed_data_dir in enumerate(self.processed_data_dirs):
49 wav_suffix = '_wf0.wav'
50 txt_suffix = '.txt'
51 ph_suffix = '_ph.txt'
52 tg_suffix = '.TextGrid'
53 all_wav_pieces = glob.glob(f'{processed_data_dir}/*/*{wav_suffix}')
54
55 for piece_path in all_wav_pieces:
56 item_name = raw_item_name = piece_path[len(processed_data_dir)+1:].replace('/', '-')[:-len(wav_suffix)]
57 if len(self.processed_data_dirs) > 1:
58 item_name = f'ds{ds_id}_{item_name}'
59 self.item2txt[item_name] = open(f'{piece_path.replace(wav_suffix, txt_suffix)}').readline()
60 self.item2ph[item_name] = open(f'{piece_path.replace(wav_suffix, ph_suffix)}').readline()
61 self.item2wavfn[item_name] = piece_path
62
63 self.item2spk[item_name] = 'SPK1'
64 if len(self.processed_data_dirs) > 1:
65 self.item2spk[item_name] = f"ds{ds_id}_{self.item2spk[item_name]}"
66 self.item2tgfn[item_name] = piece_path.replace(wav_suffix, tg_suffix)
67
68 self.item_names = sorted(list(self.item2txt.keys()))
69 if self.binarization_args['shuffle']:
70 random.seed(1234)
71 random.shuffle(self.item_names)
72 self._train_item_names, self._test_item_names = split_train_test_set(self.item_names)
73
74 @property
75 def train_item_names(self):
76 return self._train_item_names
77
78 @property
79 def valid_item_names(self):
80 return self._test_item_names
81
82 @property
83 def test_item_names(self):
84 return self._test_item_names
85
86 def process(self):
87 self.load_meta_data()
88 os.makedirs(hparams['binary_data_dir'], exist_ok=True)
89 self.spk_map = self.build_spk_map()
90 print("| spk_map: ", self.spk_map)

Callers 1

binarize.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected