Output history

This commit is contained in:
林北1941783147 2024-01-24 22:19:04 +08:00
parent d6f2fba666
commit 45fd28cf25
2 changed files with 70 additions and 27 deletions

View File

@ -356,29 +356,60 @@ SoVITS_names,GPT_names = get_weights_names()
#region 输出音频历史记录相关
output_history =[]
history_max_num = 12
history_max_num = 20
def sync_output_history_to_checkbox_audio():
checkbox_result = []
audio_result = []
for item in output_history:
label = item['label']
if len(label)>15:
label=label[:15]+'...'
checkbox_result.append(gr.update(label=label,value=False))
audio_result.append(gr.Audio.update(value=item['value']))
for _ in range(len(audio_result),history_max_num):
checkbox_result.append(gr.Checkbox.update(label="",value=False))
audio_result.append(gr.Audio.update(value = None))
return [*checkbox_result,*audio_result]
def add_to_history(audio,input_text):
result = []
#TODO change to audio type
# if len(textbox_list_value) == history_max_num:
# output_history.pop()
# output_history.insert(0,text)
# for _ in range(history_max_num):
# result.append(gr.Textbox())
# for index,value in enumerate(output_history):
# result[index]._constructor_args[0]['value'] =value
if(audio is None or audio[1] is not None):
if len(output_history) == history_max_num:
output_history.pop()
output_history.insert(0,{'value':audio,'label':input_text})
return result
return [*sync_output_history_to_checkbox_audio()]
def clear_history():
global output_history
output_history = []
checkbox_result = []
audio_result = []
for _ in range(history_max_num):
checkbox_result.append(gr.Checkbox.update(label="",value=False))
audio_result.append(gr.Audio.update(value = None))
return [*checkbox_result,*audio_result]
def shown_audio_num_change(audio_num):
audio_numr = int(audio_num)
result = []
audio_num = int(audio_num)
audio_result = []
checkbox_result = []
for _ in range(audio_num):
result.append(gr.Audio(visible=True))
audio_result.append(gr.Audio.update(visible=True))
checkbox_result.append(gr.update(visible=True))
for _ in range(audio_num,history_max_num):
result.append(gr.Audio(visible=False))
return result
audio_result.append(gr.Audio.update(visible=False))
checkbox_result.append(gr.update(visible=False))
return [*checkbox_result,*audio_result]
def delete_selected_history(*selected_list):
global output_history
print(f"!!!!!!!!{selected_list}")
for i in reversed(range(len(output_history))):
if(selected_list[i]):
output_history.pop(i)
print(f"!!!!{output_history}")
return [*sync_output_history_to_checkbox_audio()]
#endregion
with gr.Blocks(title="GPT-SoVITS WebUI") as app:
@ -415,19 +446,26 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
[output],
)
history_audio = []
history_checkbox = []
with gr.Accordion("生成历史"):
shown_audio_num = gr.Slider(0,12,8,step=1,interactive=True)
with gr.Group():
with gr.Row():
shown_audio_num = gr.Slider(1,20,history_max_num,step=1,interactive=True,label="记录显示数量")
add_history_button = gr.Button("添加当前音频记录",variant="primary")
delete_select_history_button = gr.Button("删除选择的记录")
clear_history_button = gr.Button("清空记录")
index=0
while(index<history_max_num):
index+=5
with gr.Row():
for _ in range(4):
history_audio.append(gr.Audio(label=""))
with gr.Row():
for _ in range(4):
history_audio.append(gr.Audio(label=""))
with gr.Row():
for _ in range(4):
history_audio.append(gr.Audio(label=""))
for _ in range(5):
with gr.Group():
history_checkbox.append(gr.Checkbox(interactive=True,show_label=False,label=""))
history_audio.append(gr.Audio(label=""))
shown_audio_num.change(shown_audio_num_change,[shown_audio_num],[*history_checkbox,*history_audio])
add_history_button.click(add_to_history,[output,text],[*history_checkbox,*history_audio])
delete_select_history_button.click(delete_selected_history,[*history_checkbox],[*history_checkbox,*history_audio])
clear_history_button.click(clear_history,outputs=[*history_checkbox,*history_audio])
gr.Markdown(value=i18n("文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。"))
with gr.Row():
text_inp = gr.Textbox(label=i18n("需要合成的切分前文本"),value="")

5
go-inference.bat Normal file
View File

@ -0,0 +1,5 @@
call %CONDA_PREFIX%\Scripts\activate.bat %CONDA_PREFIX%
call conda activate GPTSoVits
cd /d %~dp0
python .\GPT_SoVITS\inference_webui.py
pause