chilge/nemo
0
1import os2import argparse3from tqdm import tqdm4from random import shuffle5import json6config_template = {7 "train": {8 "log_interval": 200,9 "eval_interval": 1000,10 "seed": 1234,11 "epochs": 10000,12 "learning_rate": 2e-4,13 "betas": [0.8, 0.99],14 "eps": 1e-9,15 "batch_size": 12,16 "fp16_run": False,17 "lr_decay": 0.999875,18 "segment_size": 17920,19 "init_lr_ratio": 1,20 "warmup_epochs": 0,21 "c_mel": 45,22 "c_kl": 1.0,23 "use_sr": True,24 "max_speclen": 384,25 "port": "8001"26 },27 "data": {28 "training_files":"filelists/train.txt",29 "validation_files":"filelists/val.txt",30 "max_wav_value": 32768.0,31 "sampling_rate": 32000,32 "filter_length": 1280,33 "hop_length": 320,34 "win_length": 1280,35 "n_mel_channels": 80,36 "mel_fmin": 0.0,37 "mel_fmax": None38 },39 "model": {40 "inter_channels": 192,41 "hidden_channels": 192,42 "filter_channels": 768,43 "n_heads": 2,44 "n_layers": 6,45 "kernel_size": 3,46 "p_dropout": 0.1,47 "resblock": "1",48 "resblock_kernel_sizes": [3,7,11],49 "resblock_dilation_sizes": [[1,3,5], [1,3,5], [1,3,5]],50 "upsample_rates": [10,8,2,2],51 "upsample_initial_channel": 512,52 "upsample_kernel_sizes": [16,16,4,4],53 "n_layers_q": 3,54 "use_spectral_norm": False,55 "gin_channels": 256,56 "ssl_dim": 256,57 "n_speakers": 0,58 },59 "spk":{60 "nen": 0,61 "paimon": 1,62 "yunhao": 263 }64}65 66 67if __name__ == "__main__":68 parser = argparse.ArgumentParser()69 parser.add_argument("--train_list", type=str, default="./filelists/train.txt", help="path to train list")70 parser.add_argument("--val_list", type=str, default="./filelists/val.txt", help="path to val list")71 parser.add_argument("--test_list", type=str, default="./filelists/test.txt", help="path to test list")72 parser.add_argument("--source_dir", type=str, default="./dataset/32k", help="path to source dir")73 args = parser.parse_args()74 75 train = []76 val = []77 test = []78 idx = 079 spk_dict = {}80 spk_id = 081 for speaker in tqdm(os.listdir(args.source_dir)):82 spk_dict[speaker] = spk_id83 spk_id += 184 wavs = [os.path.join(args.source_dir, speaker, i)for i in os.listdir(os.path.join(args.source_dir, speaker))]85 wavs = [i for i in wavs if i.endswith("wav")]86 shuffle(wavs)87 train += wavs[2:-10]88 val += wavs[:2]89 test += wavs[-10:]90 n_speakers = len(spk_dict.keys())*291 shuffle(train)92 shuffle(val)93 shuffle(test)94 95 print("Writing", args.train_list)96 with open(args.train_list, "w") as f:97 for fname in tqdm(train):98 wavpath = fname99 f.write(wavpath + "\n")100 101 print("Writing", args.val_list)102 with open(args.val_list, "w") as f:103 for fname in tqdm(val):104 wavpath = fname105 f.write(wavpath + "\n")106 107 print("Writing", args.test_list)108 with open(args.test_list, "w") as f:109 for fname in tqdm(test):110 wavpath = fname111 f.write(wavpath + "\n")112 113 config_template["model"]["n_speakers"] = n_speakers114 config_template["spk"] = spk_dict115 print("Writing configs/config.json")116 with open("configs/config.json", "w") as f:117 json.dump(config_template, f, indent=2)118 