import pandas as pd import gradio as gr def compare_csv_files(): df1 = pd.read_csv("fish-speech-1.5.csv") df2 = pd.read_csv("fish-speech-1.4.csv") merged_df = pd.merge(df1, df2, on="SourceText", suffixes=("_1.5", "_1.4")) merged_df["WordErrorRate_Diff"] = merged_df["WordErrorRate_1.5"] - merged_df["WordErrorRate_1.4"] merged_df["CharacterErrorRate_Diff"] = merged_df["CharacterErrorRate_1.5"] - merged_df["CharacterErrorRate_1.4"] merged_df["WordErrorRate_Comparison"] = merged_df["WordErrorRate_Diff"].apply( lambda x: "1.4 is the same as 1.5 (Ignored due to large diff)" if abs(x) > 1 else ( f"1.5 is stronger than 1.4 ({x:.8f})" if x < 0 else ( f"1.4 is stronger than 1.5 ({-x:.8f})" if x > 0 else "1.4 is the same as 1.5 (0)" ) ) ) merged_df["CharacterErrorRate_Comparison"] = merged_df["CharacterErrorRate_Diff"].apply( lambda x: "1.4 is the same as 1.5 (Ignored due to large diff)" if abs(x) > 1 else ( f"1.5 is stronger than 1.4 ({x:.8f})" if x < 0 else ( f"1.4 is stronger than 1.5 ({-x:.8f})" if x > 0 else "1.4 is the same as 1.5 (0)" ) ) ) avg_word_diff = merged_df["WordErrorRate_Diff"].loc[merged_df["WordErrorRate_Diff"].abs() <= 1].mean() avg_char_diff = merged_df["CharacterErrorRate_Diff"].loc[merged_df["CharacterErrorRate_Diff"].abs() <= 1].mean() overall_summary = f"""
Average WordErrorRate Difference (excluding large diffs): {f'1.5 is stronger ({avg_word_diff:.8f})' if avg_word_diff < 0 else f'1.4 is stronger ({0 - avg_word_diff:.8f})'}
Average CharacterErrorRate Difference (excluding large diffs): {f'1.5 is stronger ({avg_char_diff:.8f})' if avg_char_diff < 0 else f'1.4 is stronger ({0 - avg_char_diff:.8f})'}
""" result = merged_df[[ "SourceText", "WordErrorRate_1.5", "WordErrorRate_1.4", "WordErrorRate_Comparison", "CharacterErrorRate_1.5", "CharacterErrorRate_1.4", "CharacterErrorRate_Comparison" ]] return overall_summary + result.to_html(index=False) gr.Interface( fn=compare_csv_files, inputs=None, outputs="html" ).launch()