Merge 9a80963ae35de0624c6179cc065166671dbf6af2 into b20cda5e49ec7b136fa1d04f8b0917fb4054f0fb

This commit is contained in:
刘悦 2024-02-06 23:12:00 -05:00 committed by GitHub
commit 4c258d2e91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -136,6 +136,43 @@ if is_half == True:
else: else:
ssl_model = ssl_model.to(device) ssl_model = ssl_model.to(device)
# 初始化引导音频列表
def init_wav_list(sovits_path):
wav_path = "./output/slicer_opt"
match = re.search(r'([a-zA-Z]+)_e\d+_s\d+\.pth',sovits_path)
if match:
result = match.group(1)
wav_path = f"./logs/{result}/5-wav32k/"
res = ["请选择参考音频"]
# 遍历目录
for file_path in os.listdir(wav_path):
# 检查当前file_path是否为文件
if os.path.isfile(os.path.join(wav_path, file_path)):
# 将文件名添加到列表中
res.append(file_path)
print(res)
return res
reference_wavs = init_wav_list(sovits_path)
# 切换参考音频
def change_wav(audio_name):
wav_path = f"./output/slicer_opt/{audio_name}"
match = re.search(r'([a-zA-Z]+)_e\d+_s\d+\.pth',sovits_path)
if match:
result = match.group(1)
wav_path = f"./logs/{result}/5-wav32k/{audio_name}"
return wav_path
def change_sovits_weights(sovits_path): def change_sovits_weights(sovits_path):
global vq_model, hps global vq_model, hps
@ -159,6 +196,7 @@ def change_sovits_weights(sovits_path):
print(vq_model.load_state_dict(dict_s2["weight"], strict=False)) print(vq_model.load_state_dict(dict_s2["weight"], strict=False))
with open("./sweight.txt", "w", encoding="utf-8") as f: with open("./sweight.txt", "w", encoding="utf-8") as f:
f.write(sovits_path) f.write(sovits_path)
return init_wav_list(sovits_path)
change_sovits_weights(sovits_path) change_sovits_weights(sovits_path)
@ -575,9 +613,10 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
with gr.Row(): with gr.Row():
GPT_dropdown = gr.Dropdown(label=i18n("GPT模型列表"), choices=sorted(GPT_names, key=custom_sort_key), value=gpt_path, interactive=True) 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) SoVITS_dropdown = gr.Dropdown(label=i18n("SoVITS模型列表"), choices=sorted(SoVITS_names, key=custom_sort_key), value=sovits_path, interactive=True)
wavs_dropdown = gr.Dropdown(label=i18n("参考音频列表"), choices=reference_wavs,value="请选择参考音频",interactive=True)
refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary") refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary")
refresh_button.click(fn=change_choices, inputs=[], outputs=[SoVITS_dropdown, GPT_dropdown]) refresh_button.click(fn=change_choices, inputs=[], outputs=[SoVITS_dropdown, GPT_dropdown])
SoVITS_dropdown.change(change_sovits_weights, [SoVITS_dropdown], []) SoVITS_dropdown.change(change_sovits_weights, [SoVITS_dropdown], [wavs_dropdown])
GPT_dropdown.change(change_gpt_weights, [GPT_dropdown], []) GPT_dropdown.change(change_gpt_weights, [GPT_dropdown], [])
gr.Markdown(value=i18n("*请上传并填写参考信息")) gr.Markdown(value=i18n("*请上传并填写参考信息"))
with gr.Row(): with gr.Row():
@ -586,6 +625,7 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
prompt_language = gr.Dropdown( prompt_language = gr.Dropdown(
label=i18n("参考音频的语种"), choices=[i18n("中文"), i18n("英文"), i18n("日文"), i18n("中英混合"), i18n("日英混合"), i18n("多语种混合")], value=i18n("中文") label=i18n("参考音频的语种"), choices=[i18n("中文"), i18n("英文"), i18n("日文"), i18n("中英混合"), i18n("日英混合"), i18n("多语种混合")], value=i18n("中文")
) )
wavs_dropdown.change(change_wav,[wavs_dropdown],[inp_ref])
gr.Markdown(value=i18n("*请填写需要合成的目标文本。中英混合选中文,日英混合选日文,中日混合暂不支持,非目标语言文本自动遗弃。")) gr.Markdown(value=i18n("*请填写需要合成的目标文本。中英混合选中文,日英混合选日文,中日混合暂不支持,非目标语言文本自动遗弃。"))
with gr.Row(): with gr.Row():
text = gr.Textbox(label=i18n("需要合成的文本"), value="") text = gr.Textbox(label=i18n("需要合成的文本"), value="")