import os from pathlib import Path import requests RVC_DOWNLOAD_LINK = "https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/" BASE_DIR = Path(__file__).resolve().parent.parent def dl_model(link, model_name, dir_name): with requests.get(f"{link}{model_name}") as r: r.raise_for_status() os.makedirs(os.path.dirname(dir_name / model_name), exist_ok=True) with open(dir_name / model_name, "wb") as f: for chunk in r.iter_content(chunk_size=8192): f.write(chunk) if __name__ == "__main__": print("Downloading hubert_base.pt...") dl_model(RVC_DOWNLOAD_LINK, "hubert_base.pt", BASE_DIR / "assets/hubert") print("Downloading rmvpe.pt...") dl_model(RVC_DOWNLOAD_LINK, "rmvpe.pt", BASE_DIR / "assets/rmvpe") print("Downloading vocals.onnx...") dl_model( RVC_DOWNLOAD_LINK + "uvr5_weights/onnx_dereverb_By_FoxJoy/", "vocals.onnx", BASE_DIR / "assets/uvr5_weights/onnx_dereverb_By_FoxJoy", ) rvc_models_dir = BASE_DIR / "assets/pretrained" print("Downloading pretrained models:") model_names = [ "D32k.pth", "D40k.pth", "D48k.pth", "G32k.pth", "G40k.pth", "G48k.pth", "f0D32k.pth", "f0D40k.pth", "f0D48k.pth", "f0G32k.pth", "f0G40k.pth", "f0G48k.pth", ] for model in model_names: print(f"Downloading {model}...") dl_model(RVC_DOWNLOAD_LINK + "pretrained/", model, rvc_models_dir) rvc_models_dir = BASE_DIR / "assets/pretrained_v2" print("Downloading pretrained models v2:") for model in model_names: print(f"Downloading {model}...") dl_model(RVC_DOWNLOAD_LINK + "pretrained_v2/", model, rvc_models_dir) print("Downloading uvr5_weights:") rvc_models_dir = BASE_DIR / "assets/uvr5_weights" model_names = [ "HP2-%E4%BA%BA%E5%A3%B0vocals%2B%E9%9D%9E%E4%BA%BA%E5%A3%B0instrumentals.pth", "HP2_all_vocals.pth", "HP3_all_vocals.pth", "HP5-%E4%B8%BB%E6%97%8B%E5%BE%8B%E4%BA%BA%E5%A3%B0vocals%2B%E5%85%B6%E4%BB%96instrumentals.pth", "HP5_only_main_vocal.pth", "VR-DeEchoAggressive.pth", "VR-DeEchoDeReverb.pth", "VR-DeEchoNormal.pth", ] for model in model_names: print(f"Downloading {model}...") dl_model(RVC_DOWNLOAD_LINK + "uvr5_weights/", model, rvc_models_dir) print("All models downloaded!")