mirror of
https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI.git
synced 2026-06-10 13:00:36 +08:00
fix(rtrvc): parameter issue
This commit is contained in:
21
gui.py
21
gui.py
@@ -172,6 +172,7 @@ if __name__ == "__main__":
|
|||||||
data["sr_model"] = data["sr_type"] == "sr_model"
|
data["sr_model"] = data["sr_type"] == "sr_model"
|
||||||
data["sr_device"] = data["sr_type"] == "sr_device"
|
data["sr_device"] = data["sr_type"] == "sr_device"
|
||||||
data["pm"] = data["f0method"] == "pm"
|
data["pm"] = data["f0method"] == "pm"
|
||||||
|
data["dio"] = data["f0method"] == "dio"
|
||||||
data["harvest"] = data["f0method"] == "harvest"
|
data["harvest"] = data["f0method"] == "harvest"
|
||||||
data["crepe"] = data["f0method"] == "crepe"
|
data["crepe"] = data["f0method"] == "crepe"
|
||||||
data["rmvpe"] = data["f0method"] == "rmvpe"
|
data["rmvpe"] = data["f0method"] == "rmvpe"
|
||||||
@@ -228,6 +229,7 @@ if __name__ == "__main__":
|
|||||||
data["sr_model"] = data["sr_type"] == "sr_model"
|
data["sr_model"] = data["sr_type"] == "sr_model"
|
||||||
data["sr_device"] = data["sr_type"] == "sr_device"
|
data["sr_device"] = data["sr_type"] == "sr_device"
|
||||||
data["pm"] = data["f0method"] == "pm"
|
data["pm"] = data["f0method"] == "pm"
|
||||||
|
data["dio"] = data["f0method"] == "dio"
|
||||||
data["harvest"] = data["f0method"] == "harvest"
|
data["harvest"] = data["f0method"] == "harvest"
|
||||||
data["crepe"] = data["f0method"] == "crepe"
|
data["crepe"] = data["f0method"] == "crepe"
|
||||||
data["rmvpe"] = data["f0method"] == "rmvpe"
|
data["rmvpe"] = data["f0method"] == "rmvpe"
|
||||||
@@ -405,6 +407,13 @@ if __name__ == "__main__":
|
|||||||
default=data.get("pm", False),
|
default=data.get("pm", False),
|
||||||
enable_events=True,
|
enable_events=True,
|
||||||
),
|
),
|
||||||
|
sg.Radio(
|
||||||
|
"dio",
|
||||||
|
"f0method",
|
||||||
|
key="dio",
|
||||||
|
default=data.get("dio", False),
|
||||||
|
enable_events=True,
|
||||||
|
),
|
||||||
sg.Radio(
|
sg.Radio(
|
||||||
"harvest",
|
"harvest",
|
||||||
"f0method",
|
"f0method",
|
||||||
@@ -614,9 +623,10 @@ if __name__ == "__main__":
|
|||||||
# "use_jit": values["use_jit"],
|
# "use_jit": values["use_jit"],
|
||||||
"use_jit": False,
|
"use_jit": False,
|
||||||
"use_pv": values["use_pv"],
|
"use_pv": values["use_pv"],
|
||||||
"f0method": ["pm", "harvest", "crepe", "rmvpe", "fcpe"][
|
"f0method": ["pm", "dio", "harvest", "crepe", "rmvpe", "fcpe"][
|
||||||
[
|
[
|
||||||
values["pm"],
|
values["pm"],
|
||||||
|
values["dio"],
|
||||||
values["harvest"],
|
values["harvest"],
|
||||||
values["crepe"],
|
values["crepe"],
|
||||||
values["rmvpe"],
|
values["rmvpe"],
|
||||||
@@ -656,7 +666,7 @@ if __name__ == "__main__":
|
|||||||
self.rvc.set_index_rate(values["index_rate"])
|
self.rvc.set_index_rate(values["index_rate"])
|
||||||
elif event == "rms_mix_rate":
|
elif event == "rms_mix_rate":
|
||||||
self.gui_config.rms_mix_rate = values["rms_mix_rate"]
|
self.gui_config.rms_mix_rate = values["rms_mix_rate"]
|
||||||
elif event in ["pm", "harvest", "crepe", "rmvpe", "fcpe"]:
|
elif event in ["pm", "dio", "harvest", "crepe", "rmvpe", "fcpe"]:
|
||||||
self.gui_config.f0method = event
|
self.gui_config.f0method = event
|
||||||
elif event == "I_noise_reduce":
|
elif event == "I_noise_reduce":
|
||||||
self.gui_config.I_noise_reduce = values["I_noise_reduce"]
|
self.gui_config.I_noise_reduce = values["I_noise_reduce"]
|
||||||
@@ -718,9 +728,10 @@ if __name__ == "__main__":
|
|||||||
self.gui_config.rms_mix_rate = values["rms_mix_rate"]
|
self.gui_config.rms_mix_rate = values["rms_mix_rate"]
|
||||||
self.gui_config.index_rate = values["index_rate"]
|
self.gui_config.index_rate = values["index_rate"]
|
||||||
self.gui_config.n_cpu = values["n_cpu"]
|
self.gui_config.n_cpu = values["n_cpu"]
|
||||||
self.gui_config.f0method = ["pm", "harvest", "crepe", "rmvpe", "fcpe"][
|
self.gui_config.f0method = ["pm", "dio", "harvest", "crepe", "rmvpe", "fcpe"][
|
||||||
[
|
[
|
||||||
values["pm"],
|
values["pm"],
|
||||||
|
values["dio"],
|
||||||
values["harvest"],
|
values["harvest"],
|
||||||
values["crepe"],
|
values["crepe"],
|
||||||
values["rmvpe"],
|
values["rmvpe"],
|
||||||
@@ -1003,7 +1014,7 @@ if __name__ == "__main__":
|
|||||||
sola_offset = sola_offset.item()
|
sola_offset = sola_offset.item()
|
||||||
else:
|
else:
|
||||||
sola_offset = torch.argmax(cor_nom[0, 0] / cor_den[0, 0])
|
sola_offset = torch.argmax(cor_nom[0, 0] / cor_den[0, 0])
|
||||||
printt("sola_offset = %d", int(sola_offset))
|
# printt("sola_offset = %d", int(sola_offset))
|
||||||
infer_wav = infer_wav[sola_offset:]
|
infer_wav = infer_wav[sola_offset:]
|
||||||
if "privateuseone" in str(self.config.device) or not self.gui_config.use_pv:
|
if "privateuseone" in str(self.config.device) or not self.gui_config.use_pv:
|
||||||
infer_wav[: self.sola_buffer_frame] *= self.fade_in_window
|
infer_wav[: self.sola_buffer_frame] *= self.fade_in_window
|
||||||
@@ -1030,7 +1041,7 @@ if __name__ == "__main__":
|
|||||||
total_time = time.perf_counter() - start_time
|
total_time = time.perf_counter() - start_time
|
||||||
if flag_vc:
|
if flag_vc:
|
||||||
self.window["infer_time"].update(int(total_time * 1000))
|
self.window["infer_time"].update(int(total_time * 1000))
|
||||||
printt("Infer time: %.2f", total_time)
|
# printt("Infer time: %.2f", total_time)
|
||||||
|
|
||||||
def update_devices(self, hostapi_name=None):
|
def update_devices(self, hostapi_name=None):
|
||||||
"""获取设备列表"""
|
"""获取设备列表"""
|
||||||
|
|||||||
@@ -213,7 +213,6 @@ class RVC:
|
|||||||
pitch, pitchf = self._get_f0(
|
pitch, pitchf = self._get_f0(
|
||||||
input_wav[-f0_extractor_frame:],
|
input_wav[-f0_extractor_frame:],
|
||||||
self.f0_up_key - self.formant_shift,
|
self.f0_up_key - self.formant_shift,
|
||||||
self.n_cpu,
|
|
||||||
3,
|
3,
|
||||||
f0method,
|
f0method,
|
||||||
)
|
)
|
||||||
@@ -275,7 +274,7 @@ class RVC:
|
|||||||
self,
|
self,
|
||||||
x: torch.Tensor,
|
x: torch.Tensor,
|
||||||
f0_up_key: Union[int, float],
|
f0_up_key: Union[int, float],
|
||||||
filter_radius: Union[int, float],
|
filter_radius: Optional[Union[int, float]] = None,
|
||||||
method: Literal["crepe", "rmvpe", "fcpe", "pm", "harvest", "dio"] = "fcpe",
|
method: Literal["crepe", "rmvpe", "fcpe", "pm", "harvest", "dio"] = "fcpe",
|
||||||
):
|
):
|
||||||
if method not in self.f0_methods.keys():
|
if method not in self.f0_methods.keys():
|
||||||
@@ -302,7 +301,7 @@ class RVC:
|
|||||||
f0 = self.pm.compute_f0(x)
|
f0 = self.pm.compute_f0(x)
|
||||||
return self._get_f0_post(f0, f0_up_key)
|
return self._get_f0_post(f0, f0_up_key)
|
||||||
|
|
||||||
def _get_f0_harvest(self, x, f0_up_key, filter_radius):
|
def _get_f0_harvest(self, x, f0_up_key, filter_radius=3):
|
||||||
if not hasattr(self, "harvest"):
|
if not hasattr(self, "harvest"):
|
||||||
self.harvest = Harvest(
|
self.harvest = Harvest(
|
||||||
self.window,
|
self.window,
|
||||||
@@ -310,6 +309,7 @@ class RVC:
|
|||||||
self.f0_max,
|
self.f0_max,
|
||||||
self.sr,
|
self.sr,
|
||||||
)
|
)
|
||||||
|
if filter_radius is None: filter_radius=3
|
||||||
f0 = self.harvest.compute_f0(x, filter_radius=filter_radius)
|
f0 = self.harvest.compute_f0(x, filter_radius=filter_radius)
|
||||||
return self._get_f0_post(f0, f0_up_key)
|
return self._get_f0_post(f0, f0_up_key)
|
||||||
|
|
||||||
@@ -344,8 +344,9 @@ class RVC:
|
|||||||
device=self.device,
|
device=self.device,
|
||||||
use_jit=self.use_jit,
|
use_jit=self.use_jit,
|
||||||
)
|
)
|
||||||
|
if filter_radius is None: filter_radius=0.03
|
||||||
return self._get_f0_post(
|
return self._get_f0_post(
|
||||||
self.rmvpe.compute_f0(x, thred=filter_radius),
|
self.rmvpe.compute_f0(x, filter_radius=filter_radius),
|
||||||
f0_up_key,
|
f0_up_key,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ class SynthesizerTrnMsNSFsid(nn.Module):
|
|||||||
length = int(return_length.item())
|
length = int(return_length.item())
|
||||||
flow_head = torch.clamp(skip_head - 24, min=0)
|
flow_head = torch.clamp(skip_head - 24, min=0)
|
||||||
dec_head = head - int(flow_head.item())
|
dec_head = head - int(flow_head.item())
|
||||||
m_p, logs_p, x_mask = self.enc_p(phone, pitch, phone_lengths, flow_head)
|
m_p, logs_p, x_mask = self.enc_p(phone, pitch, phone_lengths)
|
||||||
z_p = (m_p + torch.exp(logs_p) * torch.randn_like(m_p) * 0.66666) * x_mask
|
z_p = (m_p + torch.exp(logs_p) * torch.randn_like(m_p) * 0.66666) * x_mask
|
||||||
z = self.flow(z_p, x_mask, g=g, reverse=True)
|
z = self.flow(z_p, x_mask, g=g, reverse=True)
|
||||||
z = z[:, :, dec_head : dec_head + length]
|
z = z[:, :, dec_head : dec_head + length]
|
||||||
|
|||||||
Reference in New Issue
Block a user