srt-eval / app.py
laubonghaudoi's picture
initial commit
a233921
import gradio as gr
from main import calculate_cer_both_versions, read_srt_text
from visualize import generate_html_report
def process_srt_files(reference_file, hypothesis_file):
try:
# Handle both file objects and string paths
ref_path = reference_file.name if hasattr(
reference_file, 'name') else reference_file
hyp_path = hypothesis_file.name if hasattr(
hypothesis_file, 'name') else hypothesis_file
reference_text = read_srt_text(ref_path)
hypothesis_text = read_srt_text(hyp_path)
metrics_no_punct, metrics_with_punct = calculate_cer_both_versions(
ref_path, hyp_path)
html_content = generate_html_report(
reference_text, hypothesis_text, metrics_no_punct, metrics_with_punct)
return html_content
except Exception as e:
return f"An error occurred: {str(e)}"
def load_example():
return "gold.srt", "bert.srt"
with gr.Blocks() as iface:
gr.Markdown("# SRT File Comparison and CER Calculation")
gr.Markdown(
"## Please upload the golden reference SRT and the target SRT for calculating the CER.")
gr.Markdown(
"Note: Only CER is supported at the moment, WER will be added in a future version.")
with gr.Row():
ref_file = gr.File(label="Reference (Golden) SRT File")
hyp_file = gr.File(label="Target SRT File")
with gr.Row():
example_btn = gr.Button("Load Example")
process_btn = gr.Button("Get CER", variant="primary")
output = gr.HTML(label="Results")
process_btn.click(
fn=process_srt_files,
inputs=[ref_file, hyp_file],
outputs=output
)
example_btn.click(
fn=load_example,
inputs=None,
outputs=[ref_file, hyp_file]
)
if __name__ == "__main__":
iface.launch()