mirror of
https://github.com/RVC-Boss/GPT-SoVITS.git
synced 2025-10-07 07:02:57 +08:00
Update inference_webui.py
添加程序入口,让推理方法可复用,修改DPO参数形参默认值与界面一致
This commit is contained in:
parent
04c73c7016
commit
4afa9bf473
@ -365,7 +365,7 @@ def merge_short_text_in_array(texts, threshold):
|
|||||||
result[len(result) - 1] += text
|
result[len(result) - 1] += text
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language, how_to_cut=i18n("不切"), top_k=20, top_p=0.6, temperature=0.6):
|
def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language, how_to_cut=i18n("不切"), top_k=5, top_p=1, temperature=1):
|
||||||
t0 = ttime()
|
t0 = ttime()
|
||||||
prompt_language = dict_language[prompt_language]
|
prompt_language = dict_language[prompt_language]
|
||||||
text_language = dict_language[text_language]
|
text_language = dict_language[text_language]
|
||||||
@ -591,71 +591,76 @@ def get_weights_names():
|
|||||||
|
|
||||||
SoVITS_names, GPT_names = get_weights_names()
|
SoVITS_names, GPT_names = get_weights_names()
|
||||||
|
|
||||||
with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
def main():
|
||||||
gr.Markdown(
|
|
||||||
value=i18n("本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.")
|
|
||||||
)
|
|
||||||
with gr.Group():
|
|
||||||
gr.Markdown(value=i18n("模型切换"))
|
|
||||||
with gr.Row():
|
|
||||||
GPT_dropdown = gr.Dropdown(label=i18n("GPT模型列表"), choices=sorted(GPT_names, key=custom_sort_key), value=gpt_path, interactive=True)
|
|
||||||
SoVITS_dropdown = gr.Dropdown(label=i18n("SoVITS模型列表"), choices=sorted(SoVITS_names, key=custom_sort_key), value=sovits_path, interactive=True)
|
|
||||||
refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary")
|
|
||||||
refresh_button.click(fn=change_choices, inputs=[], outputs=[SoVITS_dropdown, GPT_dropdown])
|
|
||||||
SoVITS_dropdown.change(change_sovits_weights, [SoVITS_dropdown], [])
|
|
||||||
GPT_dropdown.change(change_gpt_weights, [GPT_dropdown], [])
|
|
||||||
gr.Markdown(value=i18n("*请上传并填写参考信息"))
|
|
||||||
with gr.Row():
|
|
||||||
inp_ref = gr.Audio(label=i18n("请上传3~10秒内参考音频,超过会报错!"), type="filepath")
|
|
||||||
prompt_text = gr.Textbox(label=i18n("参考音频的文本"), value="")
|
|
||||||
prompt_language = gr.Dropdown(
|
|
||||||
label=i18n("参考音频的语种"), choices=[i18n("中文"), i18n("英文"), i18n("日文"), i18n("中英混合"), i18n("日英混合"), i18n("多语种混合")], value=i18n("中文")
|
|
||||||
)
|
|
||||||
gr.Markdown(value=i18n("*请填写需要合成的目标文本。中英混合选中文,日英混合选日文,中日混合暂不支持,非目标语言文本自动遗弃。"))
|
|
||||||
with gr.Row():
|
|
||||||
text = gr.Textbox(label=i18n("需要合成的文本"), value="")
|
|
||||||
text_language = gr.Dropdown(
|
|
||||||
label=i18n("需要合成的语种"), choices=[i18n("中文"), i18n("英文"), i18n("日文"), i18n("中英混合"), i18n("日英混合"), i18n("多语种混合")], value=i18n("中文")
|
|
||||||
)
|
|
||||||
how_to_cut = gr.Radio(
|
|
||||||
label=i18n("怎么切"),
|
|
||||||
choices=[i18n("不切"), i18n("凑四句一切"), i18n("凑50字一切"), i18n("按中文句号。切"), i18n("按英文句号.切"), i18n("按标点符号切"), ],
|
|
||||||
value=i18n("凑四句一切"),
|
|
||||||
interactive=True,
|
|
||||||
)
|
|
||||||
with gr.Row():
|
|
||||||
top_k = gr.Slider(minimum=1,maximum=100,step=1,label=i18n("top_k"),value=5,interactive=True)
|
|
||||||
top_p = gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("top_p"),value=1,interactive=True)
|
|
||||||
temperature = gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("temperature"),value=1,interactive=True)
|
|
||||||
inference_button = gr.Button(i18n("合成语音"), variant="primary")
|
|
||||||
output = gr.Audio(label=i18n("输出的语音"))
|
|
||||||
|
|
||||||
inference_button.click(
|
with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||||
get_tts_wav,
|
gr.Markdown(
|
||||||
[inp_ref, prompt_text, prompt_language, text, text_language, how_to_cut,top_k,top_p,temperature],
|
value=i18n("本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.")
|
||||||
[output],
|
|
||||||
)
|
)
|
||||||
|
with gr.Group():
|
||||||
gr.Markdown(value=i18n("文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。"))
|
gr.Markdown(value=i18n("模型切换"))
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
text_inp = gr.Textbox(label=i18n("需要合成的切分前文本"), value="")
|
GPT_dropdown = gr.Dropdown(label=i18n("GPT模型列表"), choices=sorted(GPT_names, key=custom_sort_key), value=gpt_path, interactive=True)
|
||||||
button1 = gr.Button(i18n("凑四句一切"), variant="primary")
|
SoVITS_dropdown = gr.Dropdown(label=i18n("SoVITS模型列表"), choices=sorted(SoVITS_names, key=custom_sort_key), value=sovits_path, interactive=True)
|
||||||
button2 = gr.Button(i18n("凑50字一切"), variant="primary")
|
refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary")
|
||||||
button3 = gr.Button(i18n("按中文句号。切"), variant="primary")
|
refresh_button.click(fn=change_choices, inputs=[], outputs=[SoVITS_dropdown, GPT_dropdown])
|
||||||
button4 = gr.Button(i18n("按英文句号.切"), variant="primary")
|
SoVITS_dropdown.change(change_sovits_weights, [SoVITS_dropdown], [])
|
||||||
button5 = gr.Button(i18n("按标点符号切"), variant="primary")
|
GPT_dropdown.change(change_gpt_weights, [GPT_dropdown], [])
|
||||||
text_opt = gr.Textbox(label=i18n("切分后文本"), value="")
|
gr.Markdown(value=i18n("*请上传并填写参考信息"))
|
||||||
button1.click(cut1, [text_inp], [text_opt])
|
with gr.Row():
|
||||||
button2.click(cut2, [text_inp], [text_opt])
|
inp_ref = gr.Audio(label=i18n("请上传3~10秒内参考音频,超过会报错!"), type="filepath")
|
||||||
button3.click(cut3, [text_inp], [text_opt])
|
prompt_text = gr.Textbox(label=i18n("参考音频的文本"), value="")
|
||||||
button4.click(cut4, [text_inp], [text_opt])
|
prompt_language = gr.Dropdown(
|
||||||
button5.click(cut5, [text_inp], [text_opt])
|
label=i18n("参考音频的语种"), choices=[i18n("中文"), i18n("英文"), i18n("日文"), i18n("中英混合"), i18n("日英混合"), i18n("多语种混合")], value=i18n("中文")
|
||||||
gr.Markdown(value=i18n("后续将支持混合语种编码文本输入。"))
|
)
|
||||||
|
gr.Markdown(value=i18n("*请填写需要合成的目标文本。中英混合选中文,日英混合选日文,中日混合暂不支持,非目标语言文本自动遗弃。"))
|
||||||
app.queue(concurrency_count=511, max_size=1022).launch(
|
with gr.Row():
|
||||||
server_name="0.0.0.0",
|
text = gr.Textbox(label=i18n("需要合成的文本"), value="")
|
||||||
inbrowser=True,
|
text_language = gr.Dropdown(
|
||||||
share=is_share,
|
label=i18n("需要合成的语种"), choices=[i18n("中文"), i18n("英文"), i18n("日文"), i18n("中英混合"), i18n("日英混合"), i18n("多语种混合")], value=i18n("中文")
|
||||||
server_port=infer_ttswebui,
|
)
|
||||||
quiet=True,
|
how_to_cut = gr.Radio(
|
||||||
)
|
label=i18n("怎么切"),
|
||||||
|
choices=[i18n("不切"), i18n("凑四句一切"), i18n("凑50字一切"), i18n("按中文句号。切"), i18n("按英文句号.切"), i18n("按标点符号切"), ],
|
||||||
|
value=i18n("凑四句一切"),
|
||||||
|
interactive=True,
|
||||||
|
)
|
||||||
|
with gr.Row():
|
||||||
|
top_k = gr.Slider(minimum=1,maximum=100,step=1,label=i18n("top_k"),value=5,interactive=True)
|
||||||
|
top_p = gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("top_p"),value=1,interactive=True)
|
||||||
|
temperature = gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("temperature"),value=1,interactive=True)
|
||||||
|
inference_button = gr.Button(i18n("合成语音"), variant="primary")
|
||||||
|
output = gr.Audio(label=i18n("输出的语音"))
|
||||||
|
|
||||||
|
inference_button.click(
|
||||||
|
get_tts_wav,
|
||||||
|
[inp_ref, prompt_text, prompt_language, text, text_language, how_to_cut,top_k,top_p,temperature],
|
||||||
|
[output],
|
||||||
|
)
|
||||||
|
|
||||||
|
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")
|
||||||
|
button5 = 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])
|
||||||
|
gr.Markdown(value=i18n("后续将支持混合语种编码文本输入。"))
|
||||||
|
|
||||||
|
app.queue(concurrency_count=511, max_size=1022).launch(
|
||||||
|
server_name="0.0.0.0",
|
||||||
|
inbrowser=True,
|
||||||
|
share=is_share,
|
||||||
|
server_port=infer_ttswebui,
|
||||||
|
quiet=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user