From 2437d0d0807a165c3d0736ce867f9bdf78ae9ff2 Mon Sep 17 00:00:00 2001 From: Erythrocyte3803 <2544390577@qq.com> Date: Mon, 29 Jan 2024 12:30:55 +0900 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=8C=89=E7=85=A7=E4=BB=BB?= =?UTF-8?q?=E6=84=8F=E6=A0=87=E7=82=B9=E7=AC=A6=E5=8F=B7=E5=88=86=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GPT_SoVITS/inference_webui.py | 36 ++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/GPT_SoVITS/inference_webui.py b/GPT_SoVITS/inference_webui.py index d601d9fc..a3531a69 100644 --- a/GPT_SoVITS/inference_webui.py +++ b/GPT_SoVITS/inference_webui.py @@ -310,6 +310,8 @@ def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language, elif(how_to_cut==i18n("凑50字一切")):text=cut2(text) elif(how_to_cut==i18n("按中文句号。切")):text=cut3(text) elif(how_to_cut==i18n("按英文句号.切")):text=cut4(text) + elif(how_to_cut==i18n("按中文标点分句切")):text=cut5(text) + elif(how_to_cut==i18n("按英文标点分句切")):text=cut6(text) text = text.replace("\n\n","\n").replace("\n\n","\n").replace("\n\n","\n") if(text[-1]not in splits):text+="。"if text_language!="en"else "." texts=text.split("\n") @@ -438,10 +440,27 @@ def cut2(inp): def cut3(inp): inp = inp.strip("\n") return "\n".join(["%s。" % item for item in inp.strip("。").split("。")]) + def cut4(inp): inp = inp.strip("\n") return "\n".join(["%s." % item for item in inp.strip(".").split(".")]) +def cut5(inp): + inp = inp.strip("\n") + punds = r'[、,。?!;:]' + items = re.split(f'({punds})', inp) + items = ["".join(group) for group in zip(items[::2], items[1::2])] + opt = "\n".join(items) + return opt + +def cut6(inp): + inp = inp.strip("\n") + punds = r'[,.;?!]' + items = re.split(f'({punds})', inp) + items = ["".join(group) for group in zip(items[::2], items[1::2])] + opt = "\n".join(items) + return opt + def custom_sort_key(s): # 使用正则表达式提取字符串中的数字部分和非数字部分 parts = re.split('(\d+)', s) @@ -497,7 +516,7 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app: ) how_to_cut = gr.Radio( label=i18n("怎么切"), - choices=[i18n("不切"),i18n("凑四句一切"),i18n("凑50字一切"),i18n("按中文句号。切"),i18n("按英文句号.切"),], + choices=[i18n("不切"),i18n("凑四句一切"),i18n("凑50字一切"),i18n("按中文句号。切"),i18n("按英文句号.切"),i18n("按中文标点分句切"),i18n("按英文标点分句切"),], value=i18n("凑50字一切"), interactive=True, ) @@ -513,15 +532,22 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app: gr.Markdown(value=i18n("文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。")) with gr.Row(): text_inp = gr.Textbox(label=i18n("需要合成的切分前文本"),value="") - button1 = gr.Button(i18n("凑四句一切"), variant="primary") - button2 = gr.Button(i18n("凑50字一切"), variant="primary") - button3 = gr.Button(i18n("按中文句号。切"), variant="primary") - button4 = gr.Button(i18n("按英文句号.切"), variant="primary") + with gr.Row(): + button1 = gr.Button(i18n("凑四句一切"), variant="primary") + button2 = gr.Button(i18n("凑50字一切"), variant="primary") + with gr.Row(): + button3 = gr.Button(i18n("按中文句号。切"), variant="primary") + button4 = gr.Button(i18n("按英文句号.切"), variant="primary") + with gr.Row(): + button5 = gr.Button(i18n("按中文标点分句切"), variant="primary") + button6 = gr.Button(i18n("按英文标点分句切"), variant="primary") text_opt = gr.Textbox(label=i18n("切分后文本"), value="") button1.click(cut1, [text_inp], [text_opt]) button2.click(cut2, [text_inp], [text_opt]) button3.click(cut3, [text_inp], [text_opt]) button4.click(cut4, [text_inp], [text_opt]) + button5.click(cut5, [text_inp], [text_opt]) + button6.click(cut6, [text_inp], [text_opt]) gr.Markdown(value=i18n("后续将支持混合语种编码文本输入。")) app.queue(concurrency_count=511, max_size=1022).launch(