mirror of
https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI.git
synced 2026-06-13 06:40:28 +08:00
fix: Add weight whitelist support for torch 2.6 (#110)
This commit is contained in:
@@ -1 +1 @@
|
|||||||
from .config import singleton_variable, Config, CPUConfig
|
from .config import Singleton, Config, CPUConfig
|
||||||
|
|||||||
@@ -22,18 +22,16 @@ version_config_list = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def singleton_variable(func):
|
class Singleton(type):
|
||||||
def wrapper(*args, **kwargs):
|
_instances = {}
|
||||||
if wrapper.instance is None:
|
|
||||||
wrapper.instance = func(*args, **kwargs)
|
|
||||||
return wrapper.instance
|
|
||||||
|
|
||||||
wrapper.instance = None
|
def __call__(cls, *args, **kwargs):
|
||||||
return wrapper
|
if cls not in cls._instances:
|
||||||
|
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
|
||||||
|
return cls._instances[cls]
|
||||||
|
|
||||||
|
|
||||||
@singleton_variable
|
class Config(metaclass=Singleton):
|
||||||
class Config:
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.device = "cuda:0"
|
self.device = "cuda:0"
|
||||||
self.is_half = True
|
self.is_half = True
|
||||||
@@ -129,6 +127,16 @@ class Config:
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def use_insecure_load():
|
||||||
|
try:
|
||||||
|
from fairseq.data.dictionary import Dictionary
|
||||||
|
|
||||||
|
torch.serialization.add_safe_globals([Dictionary])
|
||||||
|
logging.warning("Using insecure weight loading for fairseq dictionary")
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
||||||
def use_fp32_config(self):
|
def use_fp32_config(self):
|
||||||
for config_file in version_config_list:
|
for config_file in version_config_list:
|
||||||
self.json_config[config_file]["train"]["fp16_run"] = False
|
self.json_config[config_file]["train"]["fp16_run"] = False
|
||||||
@@ -210,15 +218,20 @@ class Config:
|
|||||||
else:
|
else:
|
||||||
if self.instead:
|
if self.instead:
|
||||||
logger.info(f"Use {self.instead} instead")
|
logger.info(f"Use {self.instead} instead")
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
"Half-precision floating-point: %s, device: %s"
|
"Half-precision floating-point: %s, device: %s"
|
||||||
% (self.is_half, self.device)
|
% (self.is_half, self.device)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Check if the pytorch is 2.6 or higher
|
||||||
|
if tuple(map(int, torch.__version__.split("+")[0].split("."))) >= (2, 6, 0):
|
||||||
|
self.use_insecure_load()
|
||||||
|
|
||||||
return x_pad, x_query, x_center, x_max
|
return x_pad, x_query, x_center, x_max
|
||||||
|
|
||||||
|
|
||||||
@singleton_variable
|
class CPUConfig(metaclass=Singleton):
|
||||||
class CPUConfig:
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.device = "cpu"
|
self.device = "cpu"
|
||||||
self.is_half = False
|
self.is_half = False
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import json
|
import json
|
||||||
import locale
|
import locale
|
||||||
import os
|
import os
|
||||||
from configs import singleton_variable
|
from configs import Singleton
|
||||||
|
|
||||||
|
|
||||||
def load_language_list(language):
|
def load_language_list(language):
|
||||||
@@ -10,8 +10,7 @@ def load_language_list(language):
|
|||||||
return language_list
|
return language_list
|
||||||
|
|
||||||
|
|
||||||
@singleton_variable
|
class I18nAuto(metaclass=Singleton):
|
||||||
class I18nAuto:
|
|
||||||
def __init__(self, language=None):
|
def __init__(self, language=None):
|
||||||
if language in ["Auto", None]:
|
if language in ["Auto", None]:
|
||||||
language = locale.getdefaultlocale(
|
language = locale.getdefaultlocale(
|
||||||
|
|||||||
@@ -96,6 +96,10 @@ if __name__ == "__main__":
|
|||||||
# exp_dir=r"E:\codes\py39\dataset\mi-test"
|
# exp_dir=r"E:\codes\py39\dataset\mi-test"
|
||||||
# n_p=16
|
# n_p=16
|
||||||
# f = open("%s/log_extract_f0.log"%exp_dir, "w")
|
# f = open("%s/log_extract_f0.log"%exp_dir, "w")
|
||||||
|
|
||||||
|
from configs import Config
|
||||||
|
Config.use_insecure_load()
|
||||||
|
|
||||||
printt(" ".join(sys.argv))
|
printt(" ".join(sys.argv))
|
||||||
featureInput = FeatureInput(is_half, device)
|
featureInput = FeatureInput(is_half, device)
|
||||||
paths = []
|
paths = []
|
||||||
|
|||||||
@@ -23,11 +23,15 @@ else:
|
|||||||
os.environ["CUDA_VISIBLE_DEVICES"] = str(i_gpu)
|
os.environ["CUDA_VISIBLE_DEVICES"] = str(i_gpu)
|
||||||
version = sys.argv[6]
|
version = sys.argv[6]
|
||||||
is_half = sys.argv[7].lower() == "true"
|
is_half = sys.argv[7].lower() == "true"
|
||||||
|
|
||||||
import fairseq
|
import fairseq
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import torch
|
import torch
|
||||||
import torch.nn.functional as F
|
import torch.nn.functional as F
|
||||||
|
|
||||||
|
from configs import Config
|
||||||
|
Config.use_insecure_load()
|
||||||
|
|
||||||
if "privateuseone" not in device:
|
if "privateuseone" not in device:
|
||||||
device = "cpu"
|
device = "cpu"
|
||||||
if torch.cuda.is_available():
|
if torch.cuda.is_available():
|
||||||
|
|||||||
@@ -142,4 +142,6 @@ def preprocess_trainset(inp_root, sr, n_p, exp_dir, per):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
from configs import Config
|
||||||
|
Config.use_insecure_load()
|
||||||
preprocess_trainset(inp_root, sr, n_p, exp_dir, per)
|
preprocess_trainset(inp_root, sr, n_p, exp_dir, per)
|
||||||
|
|||||||
@@ -2,10 +2,12 @@ import numpy as np
|
|||||||
import torch
|
import torch
|
||||||
import hashlib
|
import hashlib
|
||||||
import pathlib
|
import pathlib
|
||||||
|
|
||||||
|
from functools import lru_cache
|
||||||
from scipy.fft import fft
|
from scipy.fft import fft
|
||||||
from pybase16384 import encode_to_string, decode_from_string
|
from pybase16384 import encode_to_string, decode_from_string
|
||||||
|
|
||||||
from configs import CPUConfig, singleton_variable
|
from configs import CPUConfig
|
||||||
from rvc.synthesizer import get_synthesizer
|
from rvc.synthesizer import get_synthesizer
|
||||||
|
|
||||||
from .pipeline import Pipeline
|
from .pipeline import Pipeline
|
||||||
@@ -29,27 +31,27 @@ half_hash_len = 512
|
|||||||
expand_factor = 65536 * 8
|
expand_factor = 65536 * 8
|
||||||
|
|
||||||
|
|
||||||
@singleton_variable
|
@lru_cache(None) # None 表示无限缓存
|
||||||
def original_audio_storage():
|
def original_audio_storage():
|
||||||
return np.load(pathlib.Path(__file__).parent / "lgdsng.npz")
|
return np.load(pathlib.Path(__file__).parent / "lgdsng.npz")
|
||||||
|
|
||||||
|
|
||||||
@singleton_variable
|
@lru_cache(None)
|
||||||
def original_audio():
|
def original_audio():
|
||||||
return original_audio_storage()["a"]
|
return original_audio_storage()["a"]
|
||||||
|
|
||||||
|
|
||||||
@singleton_variable
|
@lru_cache(None)
|
||||||
def original_audio_time_minus():
|
def original_audio_time_minus():
|
||||||
return original_audio_storage()["t"]
|
return original_audio_storage()["t"]
|
||||||
|
|
||||||
|
|
||||||
@singleton_variable
|
@lru_cache(None)
|
||||||
def original_audio_freq_minus():
|
def original_audio_freq_minus():
|
||||||
return original_audio_storage()["f"]
|
return original_audio_storage()["f"]
|
||||||
|
|
||||||
|
|
||||||
@singleton_variable
|
@lru_cache(None)
|
||||||
def original_rmvpe_f0():
|
def original_rmvpe_f0():
|
||||||
x = original_audio_storage()
|
x = original_audio_storage()
|
||||||
return x["pitch"], x["pitchf"]
|
return x["pitch"], x["pitchf"]
|
||||||
|
|||||||
Reference in New Issue
Block a user