mrfakename's picture
Upload folder using huggingface_hub
9f5c8f7 verified
"""
Gradio UI Results Section Module
Contains results display section component definitions
"""
import gradio as gr
from acestep.gradio_ui.i18n import t
def create_results_section(dit_handler) -> dict:
"""Create results display section"""
with gr.Accordion(t("results.title"), open=True):
# Hidden state to store LM-generated metadata
lm_metadata_state = gr.State(value=None)
# Hidden state to track if caption/metadata is from formatted source (LM/transcription)
is_format_caption_state = gr.State(value=False)
# Batch management states
current_batch_index = gr.State(value=0) # Currently displayed batch index
total_batches = gr.State(value=1) # Total number of batches generated
batch_queue = gr.State(value={}) # Dictionary storing all batch data
generation_params_state = gr.State(value={}) # Store generation parameters for next batches
is_generating_background = gr.State(value=False) # Background generation flag
# All audio components in one row with dynamic visibility
with gr.Row():
with gr.Column(visible=True) as audio_col_1:
generated_audio_1 = gr.Audio(
label=t("results.generated_music", n=1),
type="filepath",
interactive=False,
buttons=[]
)
with gr.Row(equal_height=True):
send_to_src_btn_1 = gr.Button(
t("results.send_to_src_btn"),
variant="secondary",
size="sm",
scale=1
)
save_btn_1 = gr.Button(
t("results.save_btn"),
variant="primary",
size="sm",
scale=1
)
score_btn_1 = gr.Button(
t("results.score_btn"),
variant="secondary",
size="sm",
scale=1
)
lrc_btn_1 = gr.Button(
t("results.lrc_btn"),
variant="secondary",
size="sm",
scale=1
)
with gr.Accordion(t("results.details_accordion"), open=False, visible=True) as details_accordion_1:
codes_display_1 = gr.Textbox(
label=t("results.codes_label", n=1),
interactive=False,
buttons=["copy"],
lines=4,
max_lines=4,
visible=True
)
score_display_1 = gr.Textbox(
label=t("results.quality_score_label", n=1),
interactive=False,
buttons=["copy"],
lines=6,
max_lines=6,
visible=True
)
lrc_display_1 = gr.Textbox(
label=t("results.lrc_label", n=1),
interactive=True,
buttons=["copy"],
lines=8,
max_lines=8,
visible=True
)
with gr.Column(visible=True) as audio_col_2:
generated_audio_2 = gr.Audio(
label=t("results.generated_music", n=2),
type="filepath",
interactive=False,
buttons=[]
)
with gr.Row(equal_height=True):
send_to_src_btn_2 = gr.Button(
t("results.send_to_src_btn"),
variant="secondary",
size="sm",
scale=1
)
save_btn_2 = gr.Button(
t("results.save_btn"),
variant="primary",
size="sm",
scale=1
)
score_btn_2 = gr.Button(
t("results.score_btn"),
variant="secondary",
size="sm",
scale=1
)
lrc_btn_2 = gr.Button(
t("results.lrc_btn"),
variant="secondary",
size="sm",
scale=1
)
with gr.Accordion(t("results.details_accordion"), open=False, visible=True) as details_accordion_2:
codes_display_2 = gr.Textbox(
label=t("results.codes_label", n=2),
interactive=False,
buttons=["copy"],
lines=4,
max_lines=4,
visible=True
)
score_display_2 = gr.Textbox(
label=t("results.quality_score_label", n=2),
interactive=False,
buttons=["copy"],
lines=6,
max_lines=6,
visible=True
)
lrc_display_2 = gr.Textbox(
label=t("results.lrc_label", n=2),
interactive=True,
buttons=["copy"],
lines=8,
max_lines=8,
visible=True
)
with gr.Column(visible=False) as audio_col_3:
generated_audio_3 = gr.Audio(
label=t("results.generated_music", n=3),
type="filepath",
interactive=False,
buttons=[]
)
with gr.Row(equal_height=True):
send_to_src_btn_3 = gr.Button(
t("results.send_to_src_btn"),
variant="secondary",
size="sm",
scale=1
)
save_btn_3 = gr.Button(
t("results.save_btn"),
variant="primary",
size="sm",
scale=1
)
score_btn_3 = gr.Button(
t("results.score_btn"),
variant="secondary",
size="sm",
scale=1
)
lrc_btn_3 = gr.Button(
t("results.lrc_btn"),
variant="secondary",
size="sm",
scale=1
)
with gr.Accordion(t("results.details_accordion"), open=False, visible=True) as details_accordion_3:
codes_display_3 = gr.Textbox(
label=t("results.codes_label", n=3),
interactive=False,
buttons=["copy"],
lines=4,
max_lines=4,
visible=True
)
score_display_3 = gr.Textbox(
label=t("results.quality_score_label", n=3),
interactive=False,
buttons=["copy"],
lines=6,
max_lines=6,
visible=True
)
lrc_display_3 = gr.Textbox(
label=t("results.lrc_label", n=3),
interactive=True,
buttons=["copy"],
lines=8,
max_lines=8,
visible=True
)
with gr.Column(visible=False) as audio_col_4:
generated_audio_4 = gr.Audio(
label=t("results.generated_music", n=4),
type="filepath",
interactive=False,
buttons=[]
)
with gr.Row(equal_height=True):
send_to_src_btn_4 = gr.Button(
t("results.send_to_src_btn"),
variant="secondary",
size="sm",
scale=1
)
save_btn_4 = gr.Button(
t("results.save_btn"),
variant="primary",
size="sm",
scale=1
)
score_btn_4 = gr.Button(
t("results.score_btn"),
variant="secondary",
size="sm",
scale=1
)
lrc_btn_4 = gr.Button(
t("results.lrc_btn"),
variant="secondary",
size="sm",
scale=1
)
with gr.Accordion(t("results.details_accordion"), open=False, visible=True) as details_accordion_4:
codes_display_4 = gr.Textbox(
label=t("results.codes_label", n=4),
interactive=False,
buttons=["copy"],
lines=4,
max_lines=4,
visible=True
)
score_display_4 = gr.Textbox(
label=t("results.quality_score_label", n=4),
interactive=False,
buttons=["copy"],
lines=6,
max_lines=6,
visible=True
)
lrc_display_4 = gr.Textbox(
label=t("results.lrc_label", n=4),
interactive=True,
buttons=["copy"],
lines=8,
max_lines=8,
visible=True
)
# Second row for batch size 5-8 (initially hidden)
with gr.Row(visible=False) as audio_row_5_8:
with gr.Column() as audio_col_5:
generated_audio_5 = gr.Audio(
label=t("results.generated_music", n=5),
type="filepath",
interactive=False,
buttons=[]
)
with gr.Row(equal_height=True):
send_to_src_btn_5 = gr.Button(t("results.send_to_src_btn"), variant="secondary", size="sm", scale=1)
save_btn_5 = gr.Button(t("results.save_btn"), variant="primary", size="sm", scale=1)
score_btn_5 = gr.Button(t("results.score_btn"), variant="secondary", size="sm", scale=1)
lrc_btn_5 = gr.Button(t("results.lrc_btn"), variant="secondary", size="sm", scale=1)
with gr.Accordion(t("results.details_accordion"), open=False, visible=True) as details_accordion_5:
codes_display_5 = gr.Textbox(
label=t("results.codes_label", n=5),
interactive=False,
buttons=["copy"],
lines=4,
max_lines=4,
visible=True
)
score_display_5 = gr.Textbox(
label=t("results.quality_score_label", n=5),
interactive=False,
buttons=["copy"],
lines=6,
max_lines=6,
visible=True
)
lrc_display_5 = gr.Textbox(
label=t("results.lrc_label", n=5),
interactive=True,
buttons=["copy"],
lines=8,
max_lines=8,
visible=True
)
with gr.Column() as audio_col_6:
generated_audio_6 = gr.Audio(
label=t("results.generated_music", n=6),
type="filepath",
interactive=False,
buttons=[]
)
with gr.Row(equal_height=True):
send_to_src_btn_6 = gr.Button(t("results.send_to_src_btn"), variant="secondary", size="sm", scale=1)
save_btn_6 = gr.Button(t("results.save_btn"), variant="primary", size="sm", scale=1)
score_btn_6 = gr.Button(t("results.score_btn"), variant="secondary", size="sm", scale=1)
lrc_btn_6 = gr.Button(t("results.lrc_btn"), variant="secondary", size="sm", scale=1)
with gr.Accordion(t("results.details_accordion"), open=False, visible=True) as details_accordion_6:
codes_display_6 = gr.Textbox(
label=t("results.codes_label", n=6),
interactive=False,
buttons=["copy"],
lines=4,
max_lines=4,
visible=True
)
score_display_6 = gr.Textbox(
label=t("results.quality_score_label", n=6),
interactive=False,
buttons=["copy"],
lines=6,
max_lines=6,
visible=True
)
lrc_display_6 = gr.Textbox(
label=t("results.lrc_label", n=6),
interactive=True,
buttons=["copy"],
lines=8,
max_lines=8,
visible=True
)
with gr.Column() as audio_col_7:
generated_audio_7 = gr.Audio(
label=t("results.generated_music", n=7),
type="filepath",
interactive=False,
buttons=[]
)
with gr.Row(equal_height=True):
send_to_src_btn_7 = gr.Button(t("results.send_to_src_btn"), variant="secondary", size="sm", scale=1)
save_btn_7 = gr.Button(t("results.save_btn"), variant="primary", size="sm", scale=1)
score_btn_7 = gr.Button(t("results.score_btn"), variant="secondary", size="sm", scale=1)
lrc_btn_7 = gr.Button(t("results.lrc_btn"), variant="secondary", size="sm", scale=1)
with gr.Accordion(t("results.details_accordion"), open=False, visible=True) as details_accordion_7:
codes_display_7 = gr.Textbox(
label=t("results.codes_label", n=7),
interactive=False,
buttons=["copy"],
lines=4,
max_lines=4,
visible=True
)
score_display_7 = gr.Textbox(
label=t("results.quality_score_label", n=7),
interactive=False,
buttons=["copy"],
lines=6,
max_lines=6,
visible=True
)
lrc_display_7 = gr.Textbox(
label=t("results.lrc_label", n=7),
interactive=True,
buttons=["copy"],
lines=8,
max_lines=8,
visible=True
)
with gr.Column() as audio_col_8:
generated_audio_8 = gr.Audio(
label=t("results.generated_music", n=8),
type="filepath",
interactive=False,
buttons=[]
)
with gr.Row(equal_height=True):
send_to_src_btn_8 = gr.Button(t("results.send_to_src_btn"), variant="secondary", size="sm", scale=1)
save_btn_8 = gr.Button(t("results.save_btn"), variant="primary", size="sm", scale=1)
score_btn_8 = gr.Button(t("results.score_btn"), variant="secondary", size="sm", scale=1)
lrc_btn_8 = gr.Button(t("results.lrc_btn"), variant="secondary", size="sm", scale=1)
with gr.Accordion(t("results.details_accordion"), open=False, visible=True) as details_accordion_8:
codes_display_8 = gr.Textbox(
label=t("results.codes_label", n=8),
interactive=False,
buttons=["copy"],
lines=4,
max_lines=4,
visible=True
)
score_display_8 = gr.Textbox(
label=t("results.quality_score_label", n=8),
interactive=False,
buttons=["copy"],
lines=6,
max_lines=6,
visible=True
)
lrc_display_8 = gr.Textbox(
label=t("results.lrc_label", n=8),
interactive=True,
buttons=["copy"],
lines=8,
max_lines=8,
visible=True
)
status_output = gr.Textbox(label=t("results.generation_status"), interactive=False)
# Batch navigation controls
with gr.Row(equal_height=True):
prev_batch_btn = gr.Button(
t("results.prev_btn"),
variant="secondary",
interactive=False,
scale=1,
size="sm"
)
batch_indicator = gr.Textbox(
label=t("results.current_batch"),
value=t("results.batch_indicator", current=1, total=1),
interactive=False,
scale=3
)
next_batch_status = gr.Textbox(
label=t("results.next_batch_status"),
value="",
interactive=False,
scale=3
)
next_batch_btn = gr.Button(
t("results.next_btn"),
variant="primary",
interactive=False,
scale=1,
size="sm"
)
# One-click restore parameters button
restore_params_btn = gr.Button(
t("results.restore_params_btn"),
variant="secondary",
interactive=False, # Initially disabled, enabled after generation
size="sm"
)
with gr.Accordion(t("results.batch_results_title"), open=False):
generated_audio_batch = gr.File(
label=t("results.all_files_label"),
file_count="multiple",
interactive=False
)
generation_info = gr.Markdown(label=t("results.generation_details"))
return {
"lm_metadata_state": lm_metadata_state,
"is_format_caption_state": is_format_caption_state,
"current_batch_index": current_batch_index,
"total_batches": total_batches,
"batch_queue": batch_queue,
"generation_params_state": generation_params_state,
"is_generating_background": is_generating_background,
"status_output": status_output,
"prev_batch_btn": prev_batch_btn,
"batch_indicator": batch_indicator,
"next_batch_btn": next_batch_btn,
"next_batch_status": next_batch_status,
"restore_params_btn": restore_params_btn,
"generated_audio_1": generated_audio_1,
"generated_audio_2": generated_audio_2,
"generated_audio_3": generated_audio_3,
"generated_audio_4": generated_audio_4,
"generated_audio_5": generated_audio_5,
"generated_audio_6": generated_audio_6,
"generated_audio_7": generated_audio_7,
"generated_audio_8": generated_audio_8,
"audio_row_5_8": audio_row_5_8,
"audio_col_1": audio_col_1,
"audio_col_2": audio_col_2,
"audio_col_3": audio_col_3,
"audio_col_4": audio_col_4,
"audio_col_5": audio_col_5,
"audio_col_6": audio_col_6,
"audio_col_7": audio_col_7,
"audio_col_8": audio_col_8,
"send_to_src_btn_1": send_to_src_btn_1,
"send_to_src_btn_2": send_to_src_btn_2,
"send_to_src_btn_3": send_to_src_btn_3,
"send_to_src_btn_4": send_to_src_btn_4,
"send_to_src_btn_5": send_to_src_btn_5,
"send_to_src_btn_6": send_to_src_btn_6,
"send_to_src_btn_7": send_to_src_btn_7,
"send_to_src_btn_8": send_to_src_btn_8,
"save_btn_1": save_btn_1,
"save_btn_2": save_btn_2,
"save_btn_3": save_btn_3,
"save_btn_4": save_btn_4,
"save_btn_5": save_btn_5,
"save_btn_6": save_btn_6,
"save_btn_7": save_btn_7,
"save_btn_8": save_btn_8,
"score_btn_1": score_btn_1,
"score_btn_2": score_btn_2,
"score_btn_3": score_btn_3,
"score_btn_4": score_btn_4,
"score_btn_5": score_btn_5,
"score_btn_6": score_btn_6,
"score_btn_7": score_btn_7,
"score_btn_8": score_btn_8,
"score_display_1": score_display_1,
"score_display_2": score_display_2,
"score_display_3": score_display_3,
"score_display_4": score_display_4,
"score_display_5": score_display_5,
"score_display_6": score_display_6,
"score_display_7": score_display_7,
"score_display_8": score_display_8,
"codes_display_1": codes_display_1,
"codes_display_2": codes_display_2,
"codes_display_3": codes_display_3,
"codes_display_4": codes_display_4,
"codes_display_5": codes_display_5,
"codes_display_6": codes_display_6,
"codes_display_7": codes_display_7,
"codes_display_8": codes_display_8,
"lrc_btn_1": lrc_btn_1,
"lrc_btn_2": lrc_btn_2,
"lrc_btn_3": lrc_btn_3,
"lrc_btn_4": lrc_btn_4,
"lrc_btn_5": lrc_btn_5,
"lrc_btn_6": lrc_btn_6,
"lrc_btn_7": lrc_btn_7,
"lrc_btn_8": lrc_btn_8,
"lrc_display_1": lrc_display_1,
"lrc_display_2": lrc_display_2,
"lrc_display_3": lrc_display_3,
"lrc_display_4": lrc_display_4,
"lrc_display_5": lrc_display_5,
"lrc_display_6": lrc_display_6,
"lrc_display_7": lrc_display_7,
"lrc_display_8": lrc_display_8,
"details_accordion_1": details_accordion_1,
"details_accordion_2": details_accordion_2,
"details_accordion_3": details_accordion_3,
"details_accordion_4": details_accordion_4,
"details_accordion_5": details_accordion_5,
"details_accordion_6": details_accordion_6,
"details_accordion_7": details_accordion_7,
"details_accordion_8": details_accordion_8,
"generated_audio_batch": generated_audio_batch,
"generation_info": generation_info,
}