File size: 2,679 Bytes
85d3b29 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
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))
|