noblebarkrr's picture
Upload folder using huggingface_hub
9470309 verified
import argparse
from pathlib import Path
from i18n import _i18n
BASE_DIR = Path(__file__).resolve().parent
from audio import output_formats
def tobool(val: str | bool | int):
if isinstance(val, int):
return True if val >= 1 else False
elif isinstance(val, str):
if val in ["y", "yes", "Yes", "true", "True", "1"]:
return True
else:
return False
elif isinstance(val, bool):
return val
class NestedAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
# Разбиваем dest по точке, например 'database.host'
group, dest = self.dest.split('.', 1)
# Получаем или создаем вложенный Namespace
groupspace = getattr(namespace, group, argparse.Namespace())
# Устанавливаем значение во вложенный объект
setattr(groupspace, dest, values)
# Сохраняем вложенный объект в основной
setattr(namespace, group, groupspace)
class NestedStoreTrue(argparse.Action):
def __init__(self, option_strings, dest, default=False, help=None, **kwargs):
# 1. Сразу при создании парсера готовим структуру во вложенном Namespace
super().__init__(option_strings=option_strings, dest=dest, nargs=0, default=default, help=help, **kwargs)
def __call__(self, parser, namespace, values, option_string=None):
# 2. Если флаг передан, меняем False на True
group, attr = self.dest.split('.', 1)
groupspace = getattr(namespace, group, argparse.Namespace())
setattr(groupspace, attr, True)
setattr(namespace, group, groupspace)
def parse_separator_args(add_params_args: dict = {}):
parser = argparse.ArgumentParser(
description=_i18n("arg_main_description"),
epilog=_i18n("arg_main_epilog")
)
subparsers = parser.add_subparsers(
title=_i18n("arg_subcommands_title"),
dest="mode",
description=_i18n("arg_subcommands_description"),
help=_i18n("arg_subcommands_help")
)
# separate
separate_parser = subparsers.add_parser(
"separate",
help=_i18n("arg_separate_help"),
description=_i18n("arg_separate_description"),
epilog=_i18n("arg_separate_epilog")
)
# custom_separate
custom_separate_parser = subparsers.add_parser(
"custom_separate",
help=_i18n("arg_custom_separate_help"),
description=_i18n("arg_custom_separate_description"),
epilog=_i18n("arg_custom_separate_epilog")
)
# info
info_parser = subparsers.add_parser(
"info",
help=_i18n("arg_info_help"),
description=_i18n("arg_info_description"),
epilog=_i18n("arg_info_epilog")
)
# auto_ensemble
auto_ensemble_parser = subparsers.add_parser(
"auto_ensemble",
help=_i18n("arg_auto_ensemble_help"),
description=_i18n("arg_auto_ensemble_description"),
epilog=_i18n("arg_auto_ensemble_epilog")
)
# manual_ensemble
manual_ensemble_parser = subparsers.add_parser(
"manual_ensemble",
help=_i18n("arg_manual_ensemble_help"),
description=_i18n("arg_manual_ensemble_description"),
epilog=_i18n("arg_manual_ensemble_epilog")
)
# subtract
subtract_parser = subparsers.add_parser(
"subtract",
help=_i18n("arg_subtract_help"),
description=_i18n("arg_subtract_description"),
epilog=_i18n("arg_subtract_epilog")
)
# separate
separate_parser.add_argument(
"-i", "--i", "-input", "--input", "--input_files", "--input-files",
nargs="+", dest="input",
help=_i18n("arg_input_help")
)
separate_parser.add_argument(
"-o", "-out", "-output", "--output", "--output_dir", "--output-dir",
type=str, default=".", dest="output_dir",
help=_i18n("arg_output_dir_help")
)
separate_parser.add_argument(
"-of", "-output_fmt", "--output_format", "--output-format",
type=str, choices=output_formats, default=output_formats[0], dest="output_format",
help=_i18n("arg_output_format_help", formats=", ".join(output_formats), default=output_formats[0])
)
separate_parser.add_argument(
"-tm", "-tmplt", "--template", type=str, default="NAME_STEM_MODEL", dest="template",
help=_i18n("arg_template_help", keys=_i18n("template_keys_separate"), example="NAME_STEM_MODEL")
)
separate_parser.add_argument(
"-mn", "-model", "--model_name", "--model-name",
type=str, default="bs_6stem", dest="model_name",
help=_i18n("arg_model_name_help")
)
separate_parser.add_argument(
"-inst", "-ext_inst", "-ext-inst", "--extract_instrumental", "--extract-instrumental",
action="store_true", dest="extract_instrumental",
help=_i18n("arg_extract_instrumental_help")
)
separate_parser.add_argument(
"-ispec", "-spec_invert", "-spec-invert", "--use_spec_invert", "--use-spec-invert",
action="store_true", dest="use_spec_invert",
help=_i18n("arg_use_spec_invert_help")
)
separate_parser.add_argument(
"-st", "--st", "-stems", "--stems", "--selected_stems", "--selected-stems",
nargs="*", metavar="STEM", dest="selected_stems",
help=_i18n("arg_selected_stems_help")
)
for param_name, param_value in add_params_args.items():
param_type = param_value.get("type")
default = param_value.get("default")
separate_parser.add_argument(
f"--{param_name}",
action=NestedStoreTrue if param_type == "bool" else NestedAction,
type=None if param_type == "bool" else (int if param_type == "int" else (float if param_type == "float" else str)),
default=default,
dest=f"add_params.{param_name}",
help=_i18n("arg_add_param_help")
)
# custom_separate
custom_separate_parser.add_argument(
"-i", "--i", "-input", "--input", "--input_files", "--input-files",
nargs="+", dest="input",
help=_i18n("arg_input_help")
)
custom_separate_parser.add_argument(
"-o", "-out", "-output", "--output", "--output_dir", "--output-dir",
type=str, default=".", dest="output_dir",
help=_i18n("arg_output_dir_help")
)
custom_separate_parser.add_argument(
"-of", "-output_fmt", "--output_format", "--output-format",
type=str, choices=output_formats, default=output_formats[0], dest="output_format",
help=_i18n("arg_output_format_help", formats=", ".join(output_formats), default=output_formats[0])
)
custom_separate_parser.add_argument(
"-tm", "-tmplt", "--template", type=str, default="NAME_STEM_MODEL", dest="template",
help=_i18n("arg_template_help", keys=_i18n("template_keys_separate"), example="NAME_STEM_MODEL")
)
custom_separate_parser.add_argument(
"-mt", "-mtype", "--model_type", "--model-type",
type=str, default="bs_roformer", dest="model_type",
help=_i18n("arg_model_type_help")
)
custom_separate_parser.add_argument(
"-ckpt", "--ckpt", "-checkpoint", "--checkpoint", "--checkpoint_path", "--checkpoint-path",
type=str, required=True, dest="checkpoint_path",
help=_i18n("arg_checkpoint_path_help")
)
custom_separate_parser.add_argument(
"-conf", "--conf", "-config", "--config", "--config_path", "--config-path",
type=str, required=True, dest="config_path",
help=_i18n("arg_config_path_help")
)
custom_separate_parser.add_argument(
"-inst", "-ext_inst", "-ext-inst", "--extract_instrumental", "--extract-instrumental",
action="store_true", dest="extract_instrumental",
help=_i18n("arg_extract_instrumental_help")
)
custom_separate_parser.add_argument(
"-ispec", "-spec_invert", "-spec-invert", "--use_spec_invert", "--use-spec-invert",
action="store_true", dest="use_spec_invert",
help=_i18n("arg_use_spec_invert_help")
)
custom_separate_parser.add_argument(
"-st", "--st", "-stems", "--stems", "--selected_stems", "--selected-stems",
nargs="*", metavar="STEM", dest="selected_stems",
help=_i18n("arg_selected_stems_help")
)
for param_name, param_value in add_params_args.items():
param_type = param_value.get("type")
default = param_value.get("default")
custom_separate_parser.add_argument(
f"--{param_name}",
action=NestedStoreTrue if param_type == "bool" else NestedAction,
type=None if param_type == "bool" else (int if param_type == "int" else (float if param_type == "float" else str)),
default=default,
dest=f"add_params.{param_name}",
help=_i18n("arg_add_param_help")
)
# auto_ensemble
auto_ensemble_parser.add_argument(
"-i", "--i", "-input", "--input", "--input_file", "--input-file",
type=str, required=True, dest="input",
help=_i18n("arg_input_single_help")
)
auto_ensemble_parser.add_argument(
"-o", "-out", "-output", "--output", "--output_dir", "--output-dir",
type=str, default=".", dest="output_dir",
help=_i18n("arg_output_dir_help")
)
auto_ensemble_parser.add_argument(
"-of", "-output_fmt", "--output_format", "--output-format",
type=str, choices=output_formats, default=output_formats[0], dest="output_format",
help=_i18n("arg_output_format_help", formats=", ".join(output_formats), default=output_formats[0])
)
auto_ensemble_parser.add_argument(
"-tm", "-tmplt", "--template", type=str, default="NAME_TYPE_COUNT", dest="template",
help=_i18n("arg_template_help", keys=_i18n("template_keys_auto_ensemble"), example="NAME_COUNT_TYPE")
)
auto_ensemble_parser.add_argument(
"-t", "-type", "-etype", "--ensemble_type", "--ensemble-type",
type=str, default="avg_fft", dest="ensemble_type",
help=_i18n("arg_ensemble_type_help")
)
auto_ensemble_parser.add_argument(
"-ispec", "-spec_invert", "-spec-invert", "--use_spec_invert", "--use-spec-invert",
action="store_true", dest="use_spec_invert",
help=_i18n("arg_use_spec_invert_help")
)
auto_ensemble_parser.add_argument(
"-save_stems", "-save-stems", "-save_primary_stems", "--save-primary-stems",
action="store_true", dest="save_primary_stems",
help=_i18n("arg_save_primary_stems_help")
)
auto_ensemble_flow_group = auto_ensemble_parser.add_mutually_exclusive_group(required=True)
auto_ensemble_flow_group.add_argument(
"-flow", "--flow", nargs="+", metavar="MODEL:PRIMARY_STEM:INVERT:WEIGHTS",
dest="flow",
help=_i18n("arg_flow_help")
)
auto_ensemble_flow_group.add_argument(
"-json", "-preset", "-preset_json", "-preset-json", "--preset_json", "--preset-json",
type=str, dest="preset",
help=_i18n("arg_preset_json_help")
)
# manual_ensemble
manual_ensemble_parser.add_argument(
"-i", "--i", "-input", "--input", "--input_files", "--input-files",
nargs="+", dest="input",
help=_i18n("arg_input_help")
)
manual_ensemble_parser.add_argument(
"-o", "-out", "-output", "--output", "--output_dir", "--output-dir",
type=str, default=".", dest="output_dir",
help=_i18n("arg_output_dir_help")
)
manual_ensemble_parser.add_argument(
"-of", "-output_fmt", "--output_format", "--output-format",
type=str, choices=output_formats, default=output_formats[0], dest="output_format",
help=_i18n("arg_output_format_help", formats=", ".join(output_formats), default=output_formats[0])
)
manual_ensemble_parser.add_argument(
"-tm", "-tmplt", "--template", type=str, default="NAME_TYPE", dest="template",
help=_i18n("arg_template_help", keys=_i18n("template_keys_manual_ensemble"), example="NAME_TYPE")
)
manual_ensemble_parser.add_argument(
"-t", "-type", "-etype", "--ensemble_type", "--ensemble-type",
type=str, default="avg_fft", dest="ensemble_type",
help=_i18n("arg_ensemble_type_help")
)
manual_ensemble_parser.add_argument(
"-w", "-weights", "--weights", type=float, nargs="*", dest="weights",
help=_i18n("arg_weights_help")
)
# subtract
subtract_parser.add_argument(
"-i1", "--i1", "-input1", "--input1", "--input_file1", "--input-file1",
type=str, required=True, dest="input_1",
help=_i18n("arg_input1_help")
)
subtract_parser.add_argument(
"-i2", "--i2", "-input2", "--input2", "--input_file2", "--input-file2",
type=str, required=True, dest="input_2",
help=_i18n("arg_input2_help")
)
subtract_parser.add_argument(
"-o", "-out", "-output", "--output", "--output_dir", "--output-dir",
type=str, default=".", dest="output_dir",
help=_i18n("arg_output_dir_help")
)
subtract_parser.add_argument(
"-of", "-output_fmt", "--output_format", "--output-format",
type=str, choices=output_formats, default=output_formats[0], dest="output_format",
help=_i18n("arg_output_format_help", formats=", ".join(output_formats), default=output_formats[0])
)
subtract_parser.add_argument(
"-tm", "-tmplt", "--template", type=str, default="NAME_TYPE", dest="template",
help=_i18n("arg_template_help", keys=_i18n("template_keys_subtract"), example="NAME_TYPE")
)
subtract_parser.add_argument(
"-ispec", "-spec_invert", "-spec-invert", "--use_spec_invert", "--use-spec-invert",
action="store_true", dest="use_spec_invert",
help=_i18n("arg_use_spec_invert_help")
)
# info
info_parser.add_argument(
"-u", "-update", "--update", action="store_true", dest="update",
help=_i18n("arg_update_help")
)
info_parser.add_argument(
"-clear", "-clear_cache", "-clear-cache", "--clear_cache", "--clear-cache",
action="store_true", dest="clear_cache",
help=_i18n("arg_clear_cache_help")
)
info_parser.add_argument(
"-mn", "-model", "--model_name", "--model-name",
type=str, default="bs_6stem", dest="model_name",
help=_i18n("arg_model_name_help")
)
info_parser.add_argument(
"-dw", "-download", "--download", action="store_true", dest="download",
help=_i18n("arg_download_help")
)
info_parser.add_argument(
"-l", "-limit", "--limit", type=int, default=None, dest="limit",
help=_i18n("arg_limit_help")
)
info_parser.add_argument(
"-s", "-stem", "--stem", type=str, default=None, dest="stem",
help=_i18n("arg_stem_filter_help")
)
info_parser.add_argument(
"-oi", "-installed", "--only_installed", "--only-installed",
action="store_true", dest="only_installed",
help=_i18n("arg_only_installed_help")
)
return parser.parse_args()
def parse_vbach_args():
parser = argparse.ArgumentParser(
description=_i18n("vbach_main_description"),
epilog=_i18n("vbach_main_epilog")
)
subparsers = parser.add_subparsers(
title=_i18n("arg_subcommands_title"),
dest="mode",
description=_i18n("arg_subcommands_description"),
help=_i18n("arg_subcommands_help")
)
# infer
infer_parser = subparsers.add_parser(
"infer",
help=_i18n("vbach_infer_help"),
description=_i18n("vbach_infer_description"),
epilog=_i18n("vbach_infer_epilog")
)
# infer_custom_f0
infer_custom_f0_parser = subparsers.add_parser(
"infer_custom_f0",
help=_i18n("vbach_infer_custom_f0_help"),
description=_i18n("vbach_infer_custom_f0_description"),
epilog=_i18n("vbach_infer_custom_f0_epilog")
)
# download_hubert
download_hubert_parser = subparsers.add_parser(
"download_hubert",
help=_i18n("vbach_download_hubert_help"),
description=_i18n("vbach_download_hubert_description"),
epilog=_i18n("vbach_download_hubert_epilog")
)
# infer
infer_parser.add_argument(
"-i", "--i", "-input", "--input", "--input_files", "--input-files",
nargs="+", dest="input",
help=_i18n("arg_input_help")
)
infer_parser.add_argument(
"-o", "-out", "-output", "--output", "--output_dir", "--output-dir",
type=str, default=".", dest="output_dir",
help=_i18n("arg_output_dir_help")
)
infer_parser.add_argument(
"-m", "-model", "--model_path", "--model-path",
type=str, required=True, dest="checkpoint_path",
help=_i18n("vbach_model_path_help")
)
infer_parser.add_argument(
"-idx", "-index", "--index_path", "--index-path",
type=str, default="", dest="index_path",
help=_i18n("vbach_index_path_help")
)
infer_parser.add_argument(
"-p", "-pitch", "--pitch", type=int, default=0, dest="pitch",
help=_i18n("vbach_pitch_help")
)
infer_parser.add_argument(
"-f0m", "-f0_method", "--f0_method", "--f0-method",
type=str, default="rmvpe+", dest="f0_method",
help=_i18n("vbach_f0_method_help")
)
infer_parser.add_argument(
"-idxr", "-index_rate", "--index_rate", "--index-rate",
type=float, default=0.75, dest="index_rate",
help=_i18n("vbach_index_rate_help")
)
infer_parser.add_argument(
"-ve", "-volume_envelope", "--volume_envelope", "--volume-envelope",
type=float, default=0.25, dest="volume_envelope",
help=_i18n("vbach_volume_envelope_help")
)
infer_parser.add_argument(
"-pr", "-protect", "--protect", type=float, default=0.33, dest="protect",
help=_i18n("vbach_protect_help")
)
infer_parser.add_argument(
"-hl", "-hop_length", "--hop_length", "--hop-length",
type=int, default=128, dest="hop_length",
help=_i18n("vbach_hop_length_help")
)
infer_parser.add_argument(
"-emb", "-embedder", "--embedder_model", "--embedder-model",
type=str, default="hubert_base", dest="embedder",
help=_i18n("vbach_embedder_help")
)
infer_parser.add_argument(
"-tf", "-use_transformers", "--use_transformers", "--use-transformers",
action="store_true", dest="use_transformers",
help=_i18n("vbach_use_transformers_help")
)
infer_parser.add_argument(
"-of", "-output_fmt", "--output_format", "--output-format",
type=str, choices=output_formats, default=output_formats[0], dest="output_format",
help=_i18n("arg_output_format_help", formats=", ".join(output_formats), default=output_formats[0])
)
infer_parser.add_argument(
"-stm", "-stereo_mode", "--stereo_mode", "--stereo-mode",
type=str, choices=("mono", "left/right", "sim/dif"), default="mono", dest="stereo_mode",
help=_i18n("vbach_stereo_mode_help")
)
infer_parser.add_argument(
"-f0min", "--f0_min", "--f0-min", type=int, default=50, dest="f0_min",
help=_i18n("vbach_f0_min_help")
)
infer_parser.add_argument(
"-f0max", "--f0_max", "--f0-max", type=int, default=1100, dest="f0_max",
help=_i18n("vbach_f0_max_help")
)
infer_parser.add_argument(
"-chd", "-chunk_duration", "--chunk_duration", "--chunk-duration",
type=int, default=7, dest="chunk_duration",
help=_i18n("vbach_chunk_duration_help")
)
infer_parser.add_argument(
"-tm", "-tmplt", "--template", type=str, default="NAME_F0METHOD_PITCH", dest="template",
help=_i18n("arg_template_help", keys=_i18n("template_keys_vbach"), example="NAME_F0METHOD_PITCH")
)
# infer_custom_f0
infer_custom_f0_parser.add_argument(
"-i", "--i", "-input", "--input", type=str, required=True, dest="input",
help=_i18n("arg_input_single_help")
)
infer_custom_f0_parser.add_argument(
"-o", "-out", "-output", "--output", "--output_dir", "--output-dir",
type=str, default=".", dest="output_dir",
help=_i18n("arg_output_dir_help")
)
infer_custom_f0_parser.add_argument(
"-m", "-model", "--model_path", "--model-path",
type=str, required=True, dest="checkpoint_path",
help=_i18n("vbach_model_path_help")
)
infer_custom_f0_parser.add_argument(
"-idx", "-index", "--index_path", "--index-path",
type=str, default="", dest="index_path",
help=_i18n("vbach_index_path_help")
)
infer_custom_f0_parser.add_argument(
"-p", "-pitch", "--pitch", type=int, default=0, dest="pitch",
help=_i18n("vbach_pitch_help")
)
infer_custom_f0_parser.add_argument(
"-f0f", "-f0_file", "--f0_file", "--f0-file",
type=str, dest="f0_file",
help=_i18n("vbach_f0_file_help")
)
infer_custom_f0_parser.add_argument(
"-idxr", "-index_rate", "--index_rate", "--index-rate",
type=float, default=0.75, dest="index_rate",
help=_i18n("vbach_index_rate_help")
)
infer_custom_f0_parser.add_argument(
"-ve", "-volume_envelope", "--volume_envelope", "--volume-envelope",
type=float, default=0.25, dest="volume_envelope",
help=_i18n("vbach_volume_envelope_help")
)
infer_custom_f0_parser.add_argument(
"-pr", "-protect", "--protect", type=float, default=0.33, dest="protect",
help=_i18n("vbach_protect_help")
)
infer_custom_f0_parser.add_argument(
"-emb", "-embedder", "--embedder_model", "--embedder-model",
type=str, default="hubert_base", dest="embedder",
help=_i18n("vbach_embedder_help")
)
infer_custom_f0_parser.add_argument(
"-tf", "-use_transformers", "--use_transformers", "--use-transformers",
action="store_true", dest="use_transformers",
help=_i18n("vbach_use_transformers_help")
)
infer_custom_f0_parser.add_argument(
"-of", "-output_fmt", "--output_format", "--output-format",
type=str, choices=output_formats, default=output_formats[0], dest="output_format",
help=_i18n("arg_output_format_help", formats=", ".join(output_formats), default=output_formats[0])
)
infer_custom_f0_parser.add_argument(
"-stm", "-stereo_mode", "--stereo_mode", "--stereo-mode",
type=str, choices=("mono", "left/right", "sim/dif"), default="mono", dest="stereo_mode",
help=_i18n("vbach_stereo_mode_help")
)
infer_custom_f0_parser.add_argument(
"-f0min", "--f0_min", "--f0-min", type=int, default=50, dest="f0_min",
help=_i18n("vbach_f0_min_help")
)
infer_custom_f0_parser.add_argument(
"-f0max", "--f0_max", "--f0-max", type=int, default=1100, dest="f0_max",
help=_i18n("vbach_f0_max_help")
)
infer_custom_f0_parser.add_argument(
"-chd", "-chunk_duration", "--chunk_duration", "--chunk-duration",
type=int, default=7, dest="chunk_duration",
help=_i18n("vbach_chunk_duration_help")
)
infer_custom_f0_parser.add_argument(
"-tm", "-tmplt", "--template", type=str, default="NAME_F0METHOD_PITCH", dest="template",
help=_i18n("arg_template_help", keys=_i18n("template_keys_vbach"), example="NAME_F0METHOD_PITCH")
)
# download_hubert
download_hubert_parser.add_argument(
"-emb", "-embedder", "--embedder_model", "--embedder-model",
type=str, default="hubert_base", dest="embedder",
help=_i18n("vbach_embedder_help")
)
download_hubert_parser.add_argument(
"-tf", "-use_transformers", "--use_transformers", "--use-transformers",
action="store_true", dest="use_transformers",
help=_i18n("vbach_use_transformers_help")
)
return parser.parse_args()
def parse_f0_extract():
parser = argparse.ArgumentParser(
description=_i18n("f0_extract_description"),
epilog=_i18n("f0_extract_epilog")
)
parser.add_argument(
"-i", "--i", "-input", "--input",
type=str, required=True, dest="input",
help=_i18n("arg_input_single_help")
)
parser.add_argument(
"-f0m", "-f0_method", "--f0_method", "--f0-method",
type=str, default="rmvpe+", dest="f0_method",
help=_i18n("vbach_f0_method_help")
)
parser.add_argument(
"-f0min", "--f0_min", "--f0-min",
type=int, default=50, dest="f0_min",
help=_i18n("vbach_f0_min_help")
)
parser.add_argument(
"-f0max", "--f0_max", "--f0-max",
type=int, default=1100, dest="f0_max",
help=_i18n("vbach_f0_max_help")
)
parser.add_argument(
"-o", "-out", "-output", "--output", "--output_path", "--output-path",
type=str, default=None, dest="output_path",
help=_i18n("f0_extract_output_help")
)
return parser.parse_args()
def parse_app_args():
parser = argparse.ArgumentParser(
description=_i18n("app_description"),
epilog=_i18n("app_epilog")
)
parser.add_argument(
"-s", "-share", "--share", "--public", "--gradio_share", "--gradio-share",
action="store_true", dest="share",
help=_i18n("app_share_help")
)
parser.add_argument(
"-p", "-port", "--port", "--server_port", "--server-port",
type=int, default=None, dest="port",
help=_i18n("app_port_help")
)
parser.add_argument(
"-f", "-full", "--full", "--no_hf_mode", "--no-hf-mode",
action="store_true", dest="full",
help=_i18n("app_full_help")
)
return parser.parse_args()