mirror of
https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI.git
synced 2024-12-29 19:15:04 +08:00
Format code (#188)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
parent
9976df7045
commit
9068d5283e
52
config.py
52
config.py
@ -64,25 +64,43 @@ if not torch.cuda.is_available():
|
|||||||
device = "cpu"
|
device = "cpu"
|
||||||
is_half = False
|
is_half = False
|
||||||
|
|
||||||
gpu_mem=None
|
gpu_mem = None
|
||||||
if device not in ["cpu", "mps"]:
|
if device not in ["cpu", "mps"]:
|
||||||
i_device=int(device.split(":")[-1])
|
i_device = int(device.split(":")[-1])
|
||||||
gpu_name = torch.cuda.get_device_name(i_device)
|
gpu_name = torch.cuda.get_device_name(i_device)
|
||||||
if "16" in gpu_name or "P40"in gpu_name.upper() or "1070"in gpu_name or "1080"in gpu_name:
|
if (
|
||||||
|
"16" in gpu_name
|
||||||
|
or "P40" in gpu_name.upper()
|
||||||
|
or "1070" in gpu_name
|
||||||
|
or "1080" in gpu_name
|
||||||
|
):
|
||||||
print("16系显卡强制单精度")
|
print("16系显卡强制单精度")
|
||||||
is_half = False
|
is_half = False
|
||||||
with open("configs/32k.json","r")as f:strr=f.read().replace("true","false")
|
with open("configs/32k.json", "r") as f:
|
||||||
with open("configs/32k.json","w")as f:f.write(strr)
|
strr = f.read().replace("true", "false")
|
||||||
with open("configs/40k.json","r")as f:strr=f.read().replace("true","false")
|
with open("configs/32k.json", "w") as f:
|
||||||
with open("configs/40k.json","w")as f:f.write(strr)
|
f.write(strr)
|
||||||
with open("configs/48k.json","r")as f:strr=f.read().replace("true","false")
|
with open("configs/40k.json", "r") as f:
|
||||||
with open("configs/48k.json","w")as f:f.write(strr)
|
strr = f.read().replace("true", "false")
|
||||||
with open("trainset_preprocess_pipeline_print.py","r")as f:strr=f.read().replace("3.7","3.0")
|
with open("configs/40k.json", "w") as f:
|
||||||
with open("trainset_preprocess_pipeline_print.py","w")as f:f.write(strr)
|
f.write(strr)
|
||||||
gpu_mem=int(torch.cuda.get_device_properties(i_device).total_memory/1024/1024/1024+0.4)
|
with open("configs/48k.json", "r") as f:
|
||||||
if(gpu_mem<=4):
|
strr = f.read().replace("true", "false")
|
||||||
with open("trainset_preprocess_pipeline_print.py","r")as f:strr=f.read().replace("3.7","3.0")
|
with open("configs/48k.json", "w") as f:
|
||||||
with open("trainset_preprocess_pipeline_print.py","w")as f:f.write(strr)
|
f.write(strr)
|
||||||
|
with open("trainset_preprocess_pipeline_print.py", "r") as f:
|
||||||
|
strr = f.read().replace("3.7", "3.0")
|
||||||
|
with open("trainset_preprocess_pipeline_print.py", "w") as f:
|
||||||
|
f.write(strr)
|
||||||
|
gpu_mem = int(
|
||||||
|
torch.cuda.get_device_properties(i_device).total_memory / 1024 / 1024 / 1024
|
||||||
|
+ 0.4
|
||||||
|
)
|
||||||
|
if gpu_mem <= 4:
|
||||||
|
with open("trainset_preprocess_pipeline_print.py", "r") as f:
|
||||||
|
strr = f.read().replace("3.7", "3.0")
|
||||||
|
with open("trainset_preprocess_pipeline_print.py", "w") as f:
|
||||||
|
f.write(strr)
|
||||||
from multiprocessing import cpu_count
|
from multiprocessing import cpu_count
|
||||||
|
|
||||||
if n_cpu == 0:
|
if n_cpu == 0:
|
||||||
@ -99,8 +117,8 @@ else:
|
|||||||
x_query = 6
|
x_query = 6
|
||||||
x_center = 38
|
x_center = 38
|
||||||
x_max = 41
|
x_max = 41
|
||||||
if(gpu_mem!=None and gpu_mem<=4):
|
if gpu_mem != None and gpu_mem <= 4:
|
||||||
x_pad = 1
|
x_pad = 1
|
||||||
x_query = 5
|
x_query = 5
|
||||||
x_center = 30
|
x_center = 30
|
||||||
x_max = 32
|
x_max = 32
|
||||||
|
8
gui.py
8
gui.py
@ -375,9 +375,7 @@ class GUI:
|
|||||||
self.crossfade_frame = int(self.config.crossfade_time * self.config.samplerate)
|
self.crossfade_frame = int(self.config.crossfade_time * self.config.samplerate)
|
||||||
self.sola_search_frame = int(0.012 * self.config.samplerate)
|
self.sola_search_frame = int(0.012 * self.config.samplerate)
|
||||||
self.delay_frame = int(0.01 * self.config.samplerate) # 往前预留0.02s
|
self.delay_frame = int(0.01 * self.config.samplerate) # 往前预留0.02s
|
||||||
self.extra_frame = int(
|
self.extra_frame = int(self.config.extra_time * self.config.samplerate)
|
||||||
self.config.extra_time * self.config.samplerate
|
|
||||||
)
|
|
||||||
self.rvc = None
|
self.rvc = None
|
||||||
self.rvc = RVC(
|
self.rvc = RVC(
|
||||||
self.config.pitch,
|
self.config.pitch,
|
||||||
@ -408,7 +406,9 @@ class GUI:
|
|||||||
orig_freq=self.config.samplerate, new_freq=16000, dtype=torch.float32
|
orig_freq=self.config.samplerate, new_freq=16000, dtype=torch.float32
|
||||||
)
|
)
|
||||||
self.resampler2 = tat.Resample(
|
self.resampler2 = tat.Resample(
|
||||||
orig_freq=self.rvc.tgt_sr, new_freq=self.config.samplerate, dtype=torch.float32
|
orig_freq=self.rvc.tgt_sr,
|
||||||
|
new_freq=self.config.samplerate,
|
||||||
|
dtype=torch.float32,
|
||||||
)
|
)
|
||||||
thread_vc = threading.Thread(target=self.soundinput)
|
thread_vc = threading.Thread(target=self.soundinput)
|
||||||
thread_vc.start()
|
thread_vc.start()
|
||||||
|
76
infer-web.py
76
infer-web.py
@ -1,11 +1,12 @@
|
|||||||
from multiprocessing import cpu_count
|
from multiprocessing import cpu_count
|
||||||
import threading,pdb,librosa
|
import threading, pdb, librosa
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from subprocess import Popen
|
from subprocess import Popen
|
||||||
from time import sleep
|
from time import sleep
|
||||||
import torch, os, traceback, sys, warnings, shutil, numpy as np
|
import torch, os, traceback, sys, warnings, shutil, numpy as np
|
||||||
import faiss
|
import faiss
|
||||||
from random import shuffle
|
from random import shuffle
|
||||||
|
|
||||||
now_dir = os.getcwd()
|
now_dir = os.getcwd()
|
||||||
sys.path.append(now_dir)
|
sys.path.append(now_dir)
|
||||||
tmp = os.path.join(now_dir, "TEMP")
|
tmp = os.path.join(now_dir, "TEMP")
|
||||||
@ -24,7 +25,7 @@ i18n = I18nAuto()
|
|||||||
ncpu = cpu_count()
|
ncpu = cpu_count()
|
||||||
ngpu = torch.cuda.device_count()
|
ngpu = torch.cuda.device_count()
|
||||||
gpu_infos = []
|
gpu_infos = []
|
||||||
mem=[]
|
mem = []
|
||||||
if (not torch.cuda.is_available()) or ngpu == 0:
|
if (not torch.cuda.is_available()) or ngpu == 0:
|
||||||
if_gpu_ok = False
|
if_gpu_ok = False
|
||||||
else:
|
else:
|
||||||
@ -50,13 +51,21 @@ else:
|
|||||||
): # A10#A100#V100#A40#P40#M40#K80#A4500
|
): # A10#A100#V100#A40#P40#M40#K80#A4500
|
||||||
if_gpu_ok = True # 至少有一张能用的N卡
|
if_gpu_ok = True # 至少有一张能用的N卡
|
||||||
gpu_infos.append("%s\t%s" % (i, gpu_name))
|
gpu_infos.append("%s\t%s" % (i, gpu_name))
|
||||||
mem.append(int(torch.cuda.get_device_properties(i).total_memory/1024/1024/1024+0.4))
|
mem.append(
|
||||||
|
int(
|
||||||
|
torch.cuda.get_device_properties(i).total_memory
|
||||||
|
/ 1024
|
||||||
|
/ 1024
|
||||||
|
/ 1024
|
||||||
|
+ 0.4
|
||||||
|
)
|
||||||
|
)
|
||||||
if if_gpu_ok == True and len(gpu_infos) > 0:
|
if if_gpu_ok == True and len(gpu_infos) > 0:
|
||||||
gpu_info ="\n".join(gpu_infos)
|
gpu_info = "\n".join(gpu_infos)
|
||||||
default_batch_size=min(mem)//2
|
default_batch_size = min(mem) // 2
|
||||||
else:
|
else:
|
||||||
gpu_info = "很遗憾您这没有能用的显卡来支持您训练"
|
gpu_info = "很遗憾您这没有能用的显卡来支持您训练"
|
||||||
default_batch_size=1
|
default_batch_size = 1
|
||||||
gpus = "-".join([i[0] for i in gpu_infos])
|
gpus = "-".join([i[0] for i in gpu_infos])
|
||||||
from infer_pack.models import SynthesizerTrnMs256NSFsid, SynthesizerTrnMs256NSFsid_nono
|
from infer_pack.models import SynthesizerTrnMs256NSFsid, SynthesizerTrnMs256NSFsid_nono
|
||||||
from scipy.io import wavfile
|
from scipy.io import wavfile
|
||||||
@ -236,7 +245,7 @@ def vc_multi(
|
|||||||
yield traceback.format_exc()
|
yield traceback.format_exc()
|
||||||
|
|
||||||
|
|
||||||
def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins,agg):
|
def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins, agg):
|
||||||
infos = []
|
infos = []
|
||||||
try:
|
try:
|
||||||
inp_root = inp_root.strip(" ").strip('"').strip("\n").strip('"').strip(" ")
|
inp_root = inp_root.strip(" ").strip('"').strip("\n").strip('"').strip(" ")
|
||||||
@ -258,23 +267,30 @@ def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins,agg):
|
|||||||
paths = [path.name for path in paths]
|
paths = [path.name for path in paths]
|
||||||
for path in paths:
|
for path in paths:
|
||||||
inp_path = os.path.join(inp_root, path)
|
inp_path = os.path.join(inp_root, path)
|
||||||
need_reformat=1
|
need_reformat = 1
|
||||||
done=0
|
done = 0
|
||||||
try:
|
try:
|
||||||
info = ffmpeg.probe(inp_path, cmd="ffprobe")
|
info = ffmpeg.probe(inp_path, cmd="ffprobe")
|
||||||
if(info["streams"][0]["channels"]==2 and info["streams"][0]["sample_rate"]=="44100"):
|
if (
|
||||||
need_reformat=0
|
info["streams"][0]["channels"] == 2
|
||||||
|
and info["streams"][0]["sample_rate"] == "44100"
|
||||||
|
):
|
||||||
|
need_reformat = 0
|
||||||
pre_fun._path_audio_(inp_path, save_root_ins, save_root_vocal)
|
pre_fun._path_audio_(inp_path, save_root_ins, save_root_vocal)
|
||||||
done=1
|
done = 1
|
||||||
except:
|
except:
|
||||||
need_reformat = 1
|
need_reformat = 1
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
if(need_reformat==1):
|
if need_reformat == 1:
|
||||||
tmp_path="%s/%s.reformatted.wav"%(tmp,os.path.basename(inp_path))
|
tmp_path = "%s/%s.reformatted.wav" % (tmp, os.path.basename(inp_path))
|
||||||
os.system("ffmpeg -i %s -vn -acodec pcm_s16le -ac 2 -ar 44100 %s -y"%(inp_path,tmp_path))
|
os.system(
|
||||||
inp_path=tmp_path
|
"ffmpeg -i %s -vn -acodec pcm_s16le -ac 2 -ar 44100 %s -y"
|
||||||
|
% (inp_path, tmp_path)
|
||||||
|
)
|
||||||
|
inp_path = tmp_path
|
||||||
try:
|
try:
|
||||||
if(done==0):pre_fun._path_audio_(inp_path, save_root_ins, save_root_vocal)
|
if done == 0:
|
||||||
|
pre_fun._path_audio_(inp_path, save_root_ins, save_root_vocal)
|
||||||
infos.append("%s->Success" % (os.path.basename(inp_path)))
|
infos.append("%s->Success" % (os.path.basename(inp_path)))
|
||||||
yield "\n".join(infos)
|
yield "\n".join(infos)
|
||||||
except:
|
except:
|
||||||
@ -660,11 +676,11 @@ def train_index(exp_dir1):
|
|||||||
big_npy = np.concatenate(npys, 0)
|
big_npy = np.concatenate(npys, 0)
|
||||||
# np.save("%s/total_fea.npy" % exp_dir, big_npy)
|
# np.save("%s/total_fea.npy" % exp_dir, big_npy)
|
||||||
# n_ivf = big_npy.shape[0] // 39
|
# n_ivf = big_npy.shape[0] // 39
|
||||||
n_ivf = min(int(16 * np.sqrt(big_npy.shape[0])),big_npy.shape[0]// 39)
|
n_ivf = min(int(16 * np.sqrt(big_npy.shape[0])), big_npy.shape[0] // 39)
|
||||||
infos=[]
|
infos = []
|
||||||
infos.append("%s,%s"%(big_npy.shape,n_ivf))
|
infos.append("%s,%s" % (big_npy.shape, n_ivf))
|
||||||
yield "\n".join(infos)
|
yield "\n".join(infos)
|
||||||
index = faiss.index_factory(256, "IVF%s,Flat"%n_ivf)
|
index = faiss.index_factory(256, "IVF%s,Flat" % n_ivf)
|
||||||
# index = faiss.index_factory(256, "IVF%s,PQ128x4fs,RFlat"%n_ivf)
|
# index = faiss.index_factory(256, "IVF%s,PQ128x4fs,RFlat"%n_ivf)
|
||||||
infos.append("training")
|
infos.append("training")
|
||||||
yield "\n".join(infos)
|
yield "\n".join(infos)
|
||||||
@ -672,13 +688,19 @@ def train_index(exp_dir1):
|
|||||||
# index_ivf.nprobe = int(np.power(n_ivf,0.3))
|
# index_ivf.nprobe = int(np.power(n_ivf,0.3))
|
||||||
index_ivf.nprobe = 1
|
index_ivf.nprobe = 1
|
||||||
index.train(big_npy)
|
index.train(big_npy)
|
||||||
faiss.write_index(index, '%s/trained_IVF%s_Flat_nprobe_%s.index'%(exp_dir,n_ivf,index_ivf.nprobe))
|
faiss.write_index(
|
||||||
|
index,
|
||||||
|
"%s/trained_IVF%s_Flat_nprobe_%s.index" % (exp_dir, n_ivf, index_ivf.nprobe),
|
||||||
|
)
|
||||||
# faiss.write_index(index, '%s/trained_IVF%s_Flat_FastScan.index'%(exp_dir,n_ivf))
|
# faiss.write_index(index, '%s/trained_IVF%s_Flat_FastScan.index'%(exp_dir,n_ivf))
|
||||||
infos.append("adding")
|
infos.append("adding")
|
||||||
yield "\n".join(infos)
|
yield "\n".join(infos)
|
||||||
index.add(big_npy)
|
index.add(big_npy)
|
||||||
faiss.write_index(index, '%s/added_IVF%s_Flat_nprobe_%s.index'%(exp_dir,n_ivf,index_ivf.nprobe))
|
faiss.write_index(
|
||||||
infos.append("成功构建索引,added_IVF%s_Flat_nprobe_%s.index"%(n_ivf,index_ivf.nprobe))
|
index,
|
||||||
|
"%s/added_IVF%s_Flat_nprobe_%s.index" % (exp_dir, n_ivf, index_ivf.nprobe),
|
||||||
|
)
|
||||||
|
infos.append("成功构建索引,added_IVF%s_Flat_nprobe_%s.index" % (n_ivf, index_ivf.nprobe))
|
||||||
# faiss.write_index(index, '%s/added_IVF%s_Flat_FastScan.index'%(exp_dir,n_ivf))
|
# faiss.write_index(index, '%s/added_IVF%s_Flat_FastScan.index'%(exp_dir,n_ivf))
|
||||||
# infos.append("成功构建索引,added_IVF%s_Flat_FastScan.index"%(n_ivf))
|
# infos.append("成功构建索引,added_IVF%s_Flat_FastScan.index"%(n_ivf))
|
||||||
yield "\n".join(infos)
|
yield "\n".join(infos)
|
||||||
@ -876,7 +898,7 @@ def train1key(
|
|||||||
big_npy = np.concatenate(npys, 0)
|
big_npy = np.concatenate(npys, 0)
|
||||||
# np.save("%s/total_fea.npy" % exp_dir, big_npy)
|
# np.save("%s/total_fea.npy" % exp_dir, big_npy)
|
||||||
# n_ivf = big_npy.shape[0] // 39
|
# n_ivf = big_npy.shape[0] // 39
|
||||||
n_ivf = min(int(16 * np.sqrt(big_npy.shape[0])),big_npy.shape[0]// 39)
|
n_ivf = min(int(16 * np.sqrt(big_npy.shape[0])), big_npy.shape[0] // 39)
|
||||||
yield get_info_str("%s,%s" % (big_npy.shape, n_ivf))
|
yield get_info_str("%s,%s" % (big_npy.shape, n_ivf))
|
||||||
index = faiss.index_factory(256, "IVF%s,Flat" % n_ivf)
|
index = faiss.index_factory(256, "IVF%s,Flat" % n_ivf)
|
||||||
yield get_info_str("training index")
|
yield get_info_str("training index")
|
||||||
@ -1171,7 +1193,7 @@ with gr.Blocks() as app:
|
|||||||
label="人声提取激进程度",
|
label="人声提取激进程度",
|
||||||
value=10,
|
value=10,
|
||||||
interactive=True,
|
interactive=True,
|
||||||
visible=False#先不开放调整
|
visible=False, # 先不开放调整
|
||||||
)
|
)
|
||||||
opt_vocal_root = gr.Textbox(
|
opt_vocal_root = gr.Textbox(
|
||||||
label=i18n("指定输出人声文件夹"), value="opt"
|
label=i18n("指定输出人声文件夹"), value="opt"
|
||||||
@ -1187,7 +1209,7 @@ with gr.Blocks() as app:
|
|||||||
opt_vocal_root,
|
opt_vocal_root,
|
||||||
wav_inputs,
|
wav_inputs,
|
||||||
opt_ins_root,
|
opt_ins_root,
|
||||||
agg
|
agg,
|
||||||
],
|
],
|
||||||
[vc_output4],
|
[vc_output4],
|
||||||
)
|
)
|
||||||
|
@ -13,7 +13,7 @@ from scipy.io import wavfile
|
|||||||
|
|
||||||
|
|
||||||
class _audio_pre_:
|
class _audio_pre_:
|
||||||
def __init__(self, agg,model_path, device, is_half):
|
def __init__(self, agg, model_path, device, is_half):
|
||||||
self.model_path = model_path
|
self.model_path = model_path
|
||||||
self.device = device
|
self.device = device
|
||||||
self.data = {
|
self.data = {
|
||||||
@ -139,7 +139,9 @@ class _audio_pre_:
|
|||||||
wav_instrument = spec_utils.cmb_spectrogram_to_wave(y_spec_m, self.mp)
|
wav_instrument = spec_utils.cmb_spectrogram_to_wave(y_spec_m, self.mp)
|
||||||
print("%s instruments done" % name)
|
print("%s instruments done" % name)
|
||||||
wavfile.write(
|
wavfile.write(
|
||||||
os.path.join(ins_root, "instrument_{}_{}.wav".format(name,self.data["agg"])),
|
os.path.join(
|
||||||
|
ins_root, "instrument_{}_{}.wav".format(name, self.data["agg"])
|
||||||
|
),
|
||||||
self.mp.param["sr"],
|
self.mp.param["sr"],
|
||||||
(np.array(wav_instrument) * 32768).astype("int16"),
|
(np.array(wav_instrument) * 32768).astype("int16"),
|
||||||
) #
|
) #
|
||||||
@ -155,7 +157,9 @@ class _audio_pre_:
|
|||||||
wav_vocals = spec_utils.cmb_spectrogram_to_wave(v_spec_m, self.mp)
|
wav_vocals = spec_utils.cmb_spectrogram_to_wave(v_spec_m, self.mp)
|
||||||
print("%s vocals done" % name)
|
print("%s vocals done" % name)
|
||||||
wavfile.write(
|
wavfile.write(
|
||||||
os.path.join(vocal_root, "vocal_{}_{}.wav".format(name,self.data["agg"])),
|
os.path.join(
|
||||||
|
vocal_root, "vocal_{}_{}.wav".format(name, self.data["agg"])
|
||||||
|
),
|
||||||
self.mp.param["sr"],
|
self.mp.param["sr"],
|
||||||
(np.array(wav_vocals) * 32768).astype("int16"),
|
(np.array(wav_vocals) * 32768).astype("int16"),
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user