import os import json import pathlib from random import shuffle from rvc.configs.config import Config config = Config() current_directory = os.getcwd() def generate_config(rvc_version, sampling_rate, model_path): if rvc_version == "v1" or sampling_rate == "40000": config_path = f"v1/{sampling_rate}.json" else: config_path = f"v2/{sampling_rate}.json" config_save_path = os.path.join(model_path, "config.json") if not pathlib.Path(config_save_path).exists(): with open(config_save_path, "w", encoding="utf-8") as f: json.dump( config.json_config[config_path], f, ensure_ascii=False, indent=4, sort_keys=True, ) f.write("\n") def generate_filelist(f0_method, model_path, rvc_version, sampling_rate): gt_wavs_dir = f"{model_path}/0_gt_wavs" feature_dir = ( f"{model_path}/3_feature256" if rvc_version == "v1" else f"{model_path}/3_feature768" ) if f0_method: f0_dir = f"{model_path}/2a_f0" f0nsf_dir = f"{model_path}/2b-f0nsf" names = ( set([name.split(".")[0] for name in os.listdir(gt_wavs_dir)]) & set([name.split(".")[0] for name in os.listdir(feature_dir)]) & set([name.split(".")[0] for name in os.listdir(f0_dir)]) & set([name.split(".")[0] for name in os.listdir(f0nsf_dir)]) ) else: names = set([name.split(".")[0] for name in os.listdir(gt_wavs_dir)]) & set( [name.split(".")[0] for name in os.listdir(feature_dir)] ) options = [] for name in names: if f0_method: options.append( f"{gt_wavs_dir}/{name}.wav|{feature_dir}/{name}.npy|{f0_dir}/{name}.wav.npy|{f0nsf_dir}/{name}.wav.npy|0" ) else: options.append(f"{gt_wavs_dir}/{name}.wav|{feature_dir}/{name}.npy|0") fea_dim = 256 if rvc_version == "v1" else 768 if f0_method: for _ in range(2): options.append( f"{current_directory}/logs/mute/0_gt_wavs/mute{sampling_rate}.wav|{current_directory}/logs/mute/3_feature{fea_dim}/mute.npy|{current_directory}/logs/mute/2a_f0/mute.wav.npy|{current_directory}/logs/mute/2b-f0nsf/mute.wav.npy|0" ) else: for _ in range(2): options.append( f"{current_directory}/logs/mute/0_gt_wavs/mute{sampling_rate}.wav|{current_directory}/logs/mute/3_feature{fea_dim}/mute.npy|0" ) shuffle(options) with open(f"{model_path}/filelist.txt", "w") as f: f.write("\n".join(options))