|
import os
|
|
import sys
|
|
import csv
|
|
import json
|
|
import codecs
|
|
import logging
|
|
import urllib.request
|
|
import logging.handlers
|
|
|
|
sys.path.append(os.getcwd())
|
|
|
|
from main.configs.config import Config
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logger.propagate = False
|
|
|
|
config = Config()
|
|
python = sys.executable
|
|
translations = config.translations
|
|
configs_json = os.path.join("main", "configs", "config.json")
|
|
configs = json.load(open(configs_json, "r"))
|
|
|
|
if not logger.hasHandlers():
|
|
console_handler = logging.StreamHandler()
|
|
console_formatter = logging.Formatter(fmt="\n%(asctime)s.%(msecs)03d | %(levelname)s | %(module)s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S")
|
|
console_handler.setFormatter(console_formatter)
|
|
console_handler.setLevel(logging.DEBUG if config.debug_mode else logging.INFO)
|
|
file_handler = logging.handlers.RotatingFileHandler(os.path.join(configs["logs_path"], "app.log"), maxBytes=5*1024*1024, backupCount=3, encoding='utf-8')
|
|
file_formatter = logging.Formatter(fmt="\n%(asctime)s.%(msecs)03d | %(levelname)s | %(module)s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S")
|
|
file_handler.setFormatter(file_formatter)
|
|
file_handler.setLevel(logging.DEBUG)
|
|
logger.addHandler(console_handler)
|
|
logger.addHandler(file_handler)
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
if config.device in ["cpu", "mps", "ocl:0"] and configs.get("fp16", False):
|
|
logger.warning(translations["fp16_not_support"])
|
|
configs["fp16"] = config.is_half = False
|
|
|
|
with open(configs_json, "w") as f:
|
|
json.dump(configs, f, indent=4)
|
|
|
|
models = {}
|
|
model_options = {}
|
|
|
|
method_f0 = ["mangio-crepe-full", "crepe-full", "fcpe", "rmvpe", "harvest", "pyin", "hybrid"]
|
|
method_f0_full = ["pm-ac", "pm-cc", "pm-shs", "dio", "mangio-crepe-tiny", "mangio-crepe-small", "mangio-crepe-medium", "mangio-crepe-large", "mangio-crepe-full", "crepe-tiny", "crepe-small", "crepe-medium", "crepe-large", "crepe-full", "fcpe", "fcpe-legacy", "rmvpe", "rmvpe-legacy", "harvest", "yin", "pyin", "swipe", "piptrack", "fcn", "hybrid"]
|
|
|
|
embedders_mode = ["fairseq", "onnx", "transformers", "spin"]
|
|
embedders_model = ["contentvec_base", "hubert_base", "vietnamese_hubert_base", "japanese_hubert_base", "korean_hubert_base", "chinese_hubert_base", "portuguese_hubert_base", "custom"]
|
|
|
|
paths_for_files = sorted([os.path.abspath(os.path.join(root, f)) for root, _, files in os.walk(configs["audios_path"]) for f in files if os.path.splitext(f)[1].lower() in (".wav", ".mp3", ".flac", ".ogg", ".opus", ".m4a", ".mp4", ".aac", ".alac", ".wma", ".aiff", ".webm", ".ac3")])
|
|
|
|
model_name = sorted(list(model for model in os.listdir(configs["weights_path"]) if model.endswith((".pth", ".onnx")) and not model.startswith("G_") and not model.startswith("D_")))
|
|
index_path = sorted([os.path.join(root, name) for root, _, files in os.walk(configs["logs_path"], topdown=False) for name in files if name.endswith(".index") and "trained" not in name])
|
|
|
|
pretrainedD = [model for model in os.listdir(configs["pretrained_custom_path"]) if model.endswith(".pth") and "D" in model]
|
|
pretrainedG = [model for model in os.listdir(configs["pretrained_custom_path"]) if model.endswith(".pth") and "G" in model]
|
|
|
|
presets_file = sorted(list(f for f in os.listdir(configs["presets_path"]) if f.endswith(".conversion.json")))
|
|
audio_effect_presets_file = sorted(list(f for f in os.listdir(configs["presets_path"]) if f.endswith(".effect.json")))
|
|
f0_file = sorted([os.path.abspath(os.path.join(root, f)) for root, _, files in os.walk(configs["f0_path"]) for f in files if f.endswith(".txt")])
|
|
|
|
language = configs.get("language", "vi-VN")
|
|
theme = configs.get("theme", "NoCrypt/miku")
|
|
|
|
edgetts = configs.get("edge_tts", ["vi-VN-HoaiMyNeural", "vi-VN-NamMinhNeural"])
|
|
google_tts_voice = configs.get("google_tts_voice", ["vi", "en"])
|
|
|
|
mdx_model = configs.get("mdx_model", "MDXNET_Main")
|
|
uvr_model = configs.get("demucs_model", "HD_MMI") + mdx_model
|
|
|
|
font = configs.get("font", "https://fonts.googleapis.com/css2?family=Courgette&display=swap")
|
|
sample_rate_choice = [8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 96000]
|
|
csv_path = configs["csv_path"]
|
|
|
|
if "--allow_all_disk" in sys.argv and sys.platform == "win32":
|
|
try:
|
|
import win32api
|
|
except:
|
|
os.system(f"{python} -m pip install pywin32")
|
|
import win32api
|
|
|
|
allow_disk = win32api.GetLogicalDriveStrings().split('\x00')[:-1]
|
|
else: allow_disk = []
|
|
|
|
try:
|
|
if os.path.exists(csv_path): reader = list(csv.DictReader(open(csv_path, newline='', encoding='utf-8')))
|
|
else:
|
|
reader = list(csv.DictReader([line.decode('utf-8') for line in urllib.request.urlopen(codecs.decode("uggcf://qbpf.tbbtyr.pbz/fcernqfurrgf/q/1gNHnDeRULtEfz1Yieaw14USUQjWJy0Oq9k0DrCrjApb/rkcbeg?sbezng=pfi&tvq=1977693859", "rot13")).readlines()]))
|
|
writer = csv.DictWriter(open(csv_path, mode='w', newline='', encoding='utf-8'), fieldnames=reader[0].keys())
|
|
writer.writeheader()
|
|
writer.writerows(reader)
|
|
|
|
for row in reader:
|
|
filename = row['Filename']
|
|
url = None
|
|
|
|
for value in row.values():
|
|
if isinstance(value, str) and "huggingface" in value:
|
|
url = value
|
|
break
|
|
|
|
if url: models[filename] = url
|
|
except:
|
|
pass |