From 160dfbdd2c88622c88c51b1b16afca59710492e5 Mon Sep 17 00:00:00 2001 From: jmaple12 <93472187+jmaple12@users.noreply.github.com> Date: Thu, 14 Mar 2024 18:14:42 +0800 Subject: [PATCH 1/2] Update text_segmentation_method.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 第85行,修改cut1函数,如果文本的句数为11句,则原函数会把句子切分为 4/7而不是4/4/3。模型处理长句子容易出现漏字现象。 第137行函数cut5中的punds的取值做出修改:删除重复的";",新增":;" --- GPT_SoVITS/TTS_infer_pack/text_segmentation_method.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/GPT_SoVITS/TTS_infer_pack/text_segmentation_method.py b/GPT_SoVITS/TTS_infer_pack/text_segmentation_method.py index 2a182b2..eb25610 100644 --- a/GPT_SoVITS/TTS_infer_pack/text_segmentation_method.py +++ b/GPT_SoVITS/TTS_infer_pack/text_segmentation_method.py @@ -82,7 +82,8 @@ def cut1(inp): inp = inp.strip("\n") inps = split(inp) split_idx = list(range(0, len(inps), 4)) - split_idx[-1] = None + # split_idx[-1] = None + split_idx.append(None) if len(split_idx) > 1: opts = [] for idx in range(len(split_idx) - 1): @@ -135,7 +136,8 @@ def cut5(inp): # if not re.search(r'[^\w\s]', inp[-1]): # inp += '。' inp = inp.strip("\n") - punds = r'[,.;?!、,。?!;:…]' + # punds = r'[,.;?!、,。?!;:…]' + punds = r'[,.;?!、,。?!;::…]' items = re.split(f'({punds})', inp) mergeitems = ["".join(group) for group in zip(items[::2], items[1::2])] # 在句子不存在符号或句尾无符号的时候保证文本完整 @@ -149,4 +151,4 @@ def cut5(inp): if __name__ == '__main__': method = get_method("cut5") print(method("你好,我是小明。你好,我是小红。你好,我是小刚。你好,我是小张。")) - \ No newline at end of file + From a44d4a8b915ff824e72969689b3b6e3286e75f22 Mon Sep 17 00:00:00 2001 From: Bobby Date: Tue, 19 Mar 2024 09:36:29 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E5=9C=A8=E6=8E=A8=E7=90=86=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E4=B8=8B=E6=96=B9=E5=A2=9E=E5=8A=A0=E6=8E=A8=E7=90=86?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GPT_SoVITS/TTS_infer_pack/TTS.py | 10 +++++++--- GPT_SoVITS/inference_webui.py | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/GPT_SoVITS/TTS_infer_pack/TTS.py b/GPT_SoVITS/TTS_infer_pack/TTS.py index 566e998..2aede2b 100644 --- a/GPT_SoVITS/TTS_infer_pack/TTS.py +++ b/GPT_SoVITS/TTS_infer_pack/TTS.py @@ -615,7 +615,7 @@ class TTS: fragment_interval = inputs.get("fragment_interval", 0.3) seed = inputs.get("seed", -1) seed = -1 if seed in ["", None] else seed - set_seed(seed) + actual_seed = set_seed(seed) if return_fragment: # split_bucket = False @@ -824,13 +824,17 @@ class TTS: if not return_fragment: print("%.3f\t%.3f\t%.3f\t%.3f" % (t1 - t0, t2 - t1, t_34, t_45)) - yield self.audio_postprocess(audio, + yield [ + self.audio_postprocess(audio, self.configs.sampling_rate, batch_index_list, speed_factor, split_bucket, fragment_interval - ) + ), + f"text: {text} text_lang: {text_lang} prompt_text: {prompt_text} prompt_lang: {prompt_lang} top_k: {top_k} top_p: {top_p} temperature: {temperature} batch_size: {batch_size} batch_threshold: {batch_threshold} split_bucket: {split_bucket} return_fragment: {return_fragment} speed_factor: {speed_factor} fragment_interval: {fragment_interval} seed: {actual_seed}" + ] + except Exception as e: traceback.print_exc() # 必须返回一个空音频, 否则会导致显存不释放。 diff --git a/GPT_SoVITS/inference_webui.py b/GPT_SoVITS/inference_webui.py index 505b665..3355e91 100644 --- a/GPT_SoVITS/inference_webui.py +++ b/GPT_SoVITS/inference_webui.py @@ -211,6 +211,8 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app: with gr.Row(): inference_button = gr.Button(i18n("合成语音"), variant="primary") stop_infer = gr.Button(i18n("终止合成"), variant="primary") + with gr.Row(): + inference_details = gr.Markdown() inference_button.click( @@ -224,7 +226,7 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app: split_bucket,fragment_interval, seed ], - [output], + [output, inference_details], ) stop_infer.click(tts_pipline.stop, [], [])