From 7cb00eac17866bed1c59f206bb1701f2ce9f1dcf Mon Sep 17 00:00:00 2001 From: Karasukaigan <80465610+Karasukaigan@users.noreply.github.com> Date: Sun, 4 May 2025 18:28:43 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E9=85=8D=E7=BD=AE=EF=BC=8C=E5=90=AF=E7=94=A8?= =?UTF-8?q?=E5=90=8E=E4=BB=85=E5=85=81=E8=AE=B8=E6=9C=AC=E6=9C=BA=E8=AE=BF?= =?UTF-8?q?=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在`config.py`新增`local_mode`本地模式开关,默认关闭,启用后服务仅限本机访问(127.0.0.1或localhost),可以提升开发调试时的安全性。 --- config.py | 3 +++ webui.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/config.py b/config.py index 5f90c5cd..fe0bf4d1 100644 --- a/config.py +++ b/config.py @@ -30,6 +30,9 @@ webui_port_subfix = 9871 api_port = 9880 +# 设置为True可启用本地模式,该模式只允许本机访问,避免出现潜在安全问题。默认为False。 +local_mode = False + if infer_device == "cuda": gpu_name = torch.cuda.get_device_name(0) if ( diff --git a/webui.py b/webui.py index cddbb029..edaeafe8 100644 --- a/webui.py +++ b/webui.py @@ -74,6 +74,7 @@ from config import ( webui_port_main, webui_port_subfix, webui_port_uvr5, + local_mode, ) from tools import my_utils from tools.i18n.i18n import I18nAuto, scan_language_list @@ -1955,7 +1956,7 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app: gr.Markdown(value=i18n("施工中,请静候佳音")) app.queue().launch( # concurrency_count=511, max_size=1022 - server_name="0.0.0.0", + server_name="127.0.0.1" if local_mode else "0.0.0.0", inbrowser=True, share=is_share, server_port=webui_port_main, From e58426d23b177d712dce141ed108221cca6f1d0a Mon Sep 17 00:00:00 2001 From: Karasukaigan <80465610+Karasukaigan@users.noreply.github.com> Date: Sun, 4 May 2025 19:05:11 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E9=85=8D=E7=BD=AE=EF=BC=8C=E5=90=AF=E7=94=A8?= =?UTF-8?q?=E5=90=8E=E4=BB=85=E5=85=81=E8=AE=B8=E6=9C=AC=E6=9C=BA=E8=AE=BF?= =?UTF-8?q?=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在`config.py`新增`local_mode`本地模式开关,默认关闭,启用后服务仅限本机访问(127.0.0.1或localhost),可以提升开发调试时的安全性。 --- GPT_SoVITS/inference_webui.py | 4 +++- tools/subfix_webui.py | 3 ++- tools/uvr5/webui.py | 3 ++- webui.py | 5 +++++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/GPT_SoVITS/inference_webui.py b/GPT_SoVITS/inference_webui.py index 4bee27cd..ae3b4036 100644 --- a/GPT_SoVITS/inference_webui.py +++ b/GPT_SoVITS/inference_webui.py @@ -91,6 +91,8 @@ infer_ttswebui = os.environ.get("infer_ttswebui", 9872) infer_ttswebui = int(infer_ttswebui) is_share = os.environ.get("is_share", "False") is_share = eval(is_share) +local_mode = os.environ.get("local_mode", "False") +local_mode = eval(local_mode) if "_CUDA_VISIBLE_DEVICES" in os.environ: os.environ["CUDA_VISIBLE_DEVICES"] = os.environ["_CUDA_VISIBLE_DEVICES"] is_half = eval(os.environ.get("is_half", "True")) and torch.cuda.is_available() @@ -1273,7 +1275,7 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app: if __name__ == "__main__": app.queue().launch( # concurrency_count=511, max_size=1022 - server_name="0.0.0.0", + server_name="127.0.0.1" if local_mode else "0.0.0.0", inbrowser=True, share=is_share, server_port=infer_ttswebui, diff --git a/tools/subfix_webui.py b/tools/subfix_webui.py index eae1c980..faaf0238 100644 --- a/tools/subfix_webui.py +++ b/tools/subfix_webui.py @@ -298,6 +298,7 @@ if __name__ == "__main__": parser.add_argument("--json_key_text", default="text", help="the text key name in json, Default: text") parser.add_argument("--json_key_path", default="wav_path", help="the path key name in json, Default: wav_path") parser.add_argument("--g_batch", default=10, help="max number g_batch wav to display, Default: 10") + parser.add_argument("--local_mode", action="store_true", help="enable local mode (bind to 127.0.0.1)") args = parser.parse_args() @@ -407,7 +408,7 @@ if __name__ == "__main__": ) demo.launch( - server_name="0.0.0.0", + server_name="127.0.0.1" if args.local_mode else "0.0.0.0", inbrowser=True, # quiet=True, share=eval(args.is_share), diff --git a/tools/uvr5/webui.py b/tools/uvr5/webui.py index a3d7fe46..66b0d267 100644 --- a/tools/uvr5/webui.py +++ b/tools/uvr5/webui.py @@ -32,6 +32,7 @@ device = sys.argv[1] is_half = eval(sys.argv[2]) webui_port_uvr5 = int(sys.argv[3]) is_share = eval(sys.argv[4]) +local_mode = sys.argv[5].lower() == 'true' if len(sys.argv) > 5 else False def html_left(text, label="p"): @@ -220,7 +221,7 @@ with gr.Blocks(title="UVR5 WebUI") as app: api_name="uvr_convert", ) app.queue().launch( # concurrency_count=511, max_size=1022 - server_name="0.0.0.0", + server_name="127.0.0.1" if local_mode else "0.0.0.0", inbrowser=True, share=is_share, server_port=webui_port_uvr5, diff --git a/webui.py b/webui.py index edaeafe8..6b9a8951 100644 --- a/webui.py +++ b/webui.py @@ -389,6 +389,8 @@ def change_label(path_list): webui_port_subfix, is_share, ) + if local_mode: + cmd += " --local_mode" yield ( process_info(process_name_subfix, "opened"), {"__type__": "update", "visible": False}, @@ -413,6 +415,8 @@ def change_uvr5(): global p_uvr5 if p_uvr5 is None: cmd = '"%s" tools/uvr5/webui.py "%s" %s %s %s' % (python_exec, infer_device, is_half, webui_port_uvr5, is_share) + if local_mode: + cmd += " True" yield ( process_info(process_name_uvr5, "opened"), {"__type__": "update", "visible": False}, @@ -451,6 +455,7 @@ def change_tts_inference(bert_path, cnhubert_base_path, gpu_number, gpt_path, so os.environ["is_half"] = str(is_half) os.environ["infer_ttswebui"] = str(webui_port_infer_tts) os.environ["is_share"] = str(is_share) + os.environ["local_mode"] = str(local_mode) yield ( process_info(process_name_tts, "opened"), {"__type__": "update", "visible": False}, From 9ebae35a7d03aefd55e8e5509bc66c910fc4a19a Mon Sep 17 00:00:00 2001 From: Karasukaigan <80465610+Karasukaigan@users.noreply.github.com> Date: Wed, 7 May 2025 21:30:04 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20#2354?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复了因tts_infer.yaml中缺少version字段,导致version永远被设置为“v2”的问题。 --- GPT_SoVITS/TTS_infer_pack/TTS.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/GPT_SoVITS/TTS_infer_pack/TTS.py b/GPT_SoVITS/TTS_infer_pack/TTS.py index d20daee3..8caf1e16 100644 --- a/GPT_SoVITS/TTS_infer_pack/TTS.py +++ b/GPT_SoVITS/TTS_infer_pack/TTS.py @@ -287,8 +287,9 @@ class TTS_Config: configs: dict = self._load_configs(self.configs_path) assert isinstance(configs, dict) - version = configs.get("version", "v2").lower() - assert version in ["v1", "v2", "v3", "v4"] + version = "v2" + if "custom" in configs and configs["custom"]["version"].lower() in ["v1", "v2", "v3", "v4"]: + version = configs["custom"]["version"].lower() self.default_configs[version] = configs.get(version, self.default_configs[version]) self.configs: dict = configs.get("custom", deepcopy(self.default_configs[version]))