diff --git a/webui.py b/webui.py index c71538f..742b7c2 100644 --- a/webui.py +++ b/webui.py @@ -24,6 +24,7 @@ from text import cleaned_text_to_sequence, get_bert from text.cleaner import clean_text import gradio as gr import webbrowser +import numpy as np net_g = None @@ -103,22 +104,17 @@ def infer(text, sdp_ratio, noise_scale, noise_scale_w, length_scale, sid, langua return audio -def tts_fn( - text, speaker, sdp_ratio, noise_scale, noise_scale_w, length_scale, language -): +def tts_fn(text, speaker, sdp_ratio, noise_scale, noise_scale_w, length_scale): + slices = text.split("|") + audio_list = [] with torch.no_grad(): - audio = infer( - text, - sdp_ratio=sdp_ratio, - noise_scale=noise_scale, - noise_scale_w=noise_scale_w, - length_scale=length_scale, - sid=speaker, - language=language, - ) - torch.cuda.empty_cache() - return "Success", (hps.data.sampling_rate, audio) - + for slice in slices: + audio = infer(slice, sdp_ratio=sdp_ratio, noise_scale=noise_scale, noise_scale_w=noise_scale_w, length_scale=length_scale, sid=speaker) + audio_list.append(audio) + silence = np.zeros(hps.data.sampling_rate) # 生成1秒的静音 + audio_list.append(silence) # 将静音添加到列表中 + audio_concat = np.concatenate(audio_list) + return "Success", (hps.data.sampling_rate, audio_concat) if __name__ == "__main__": parser = argparse.ArgumentParser()