|
import os |
|
import shutil |
|
from random import shuffle |
|
|
|
from rvc.configs.config import Config |
|
|
|
config = Config() |
|
current_directory = os.getcwd() |
|
|
|
|
|
def generate_config(rvc_version: str, sample_rate: int, model_path: str): |
|
config_path = os.path.join("rvc", "configs", rvc_version, f"{sample_rate}.json") |
|
config_save_path = os.path.join(model_path, "config.json") |
|
if not os.path.exists(config_save_path): |
|
shutil.copyfile(config_path, config_save_path) |
|
|
|
|
|
def generate_filelist( |
|
pitch_guidance: bool, model_path: str, rvc_version: str, sample_rate: int |
|
): |
|
gt_wavs_dir = f"{model_path}/sliced_audios" |
|
feature_dir = ( |
|
f"{model_path}/v1_extracted" |
|
if rvc_version == "v1" |
|
else f"{model_path}/v2_extracted" |
|
) |
|
if pitch_guidance == True: |
|
f0_dir = f"{model_path}/f0" |
|
f0nsf_dir = f"{model_path}/f0_voiced" |
|
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)]) |
|
) |
|
elif pitch_guidance == False: |
|
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 pitch_guidance == 1: |
|
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") |
|
if pitch_guidance == 1: |
|
for _ in range(2): |
|
options.append( |
|
f"{current_directory}/logs/mute/sliced_audios/mute{sample_rate}.wav|{current_directory}/logs/mute/{rvc_version}_extracted/mute.npy|{current_directory}/logs/mute/f0/mute.wav.npy|{current_directory}/logs/mute/f0_voiced/mute.wav.npy|0" |
|
) |
|
else: |
|
for _ in range(2): |
|
options.append( |
|
f"{current_directory}/logs/mute/sliced_audios/mute{sample_rate}.wav|{current_directory}/logs/mute/{rvc_version}_extracted/mute.npy|0" |
|
) |
|
shuffle(options) |
|
with open(f"{model_path}/filelist.txt", "w") as f: |
|
f.write("\n".join(options)) |
|
|