Spaces:
Running
Running
| import pandas as pd | |
| # Metadata lookup for UI and filtering | |
| SPEAKER_META = { | |
| "F01": {"Gender": "Female", "Severity": "Severe", "Dataset": "Torgo"}, | |
| "F03": {"Gender": "Female", "Severity": "Mild", "Dataset": "Torgo"}, | |
| "F04": {"Gender": "Female", "Severity": "Mild", "Dataset": "Torgo"}, | |
| "M01": {"Gender": "Male", "Severity": "Moderate", "Dataset": "Torgo"}, | |
| "M02": {"Gender": "Male", "Severity": "Mild", "Dataset": "Torgo"}, | |
| "M03": {"Gender": "Male", "Severity": "Mild", "Dataset": "Torgo"}, | |
| "M04": {"Gender": "Male", "Severity": "Moderate", "Dataset": "Torgo"}, | |
| "M05": {"Gender": "Male", "Severity": "Severe", "Dataset": "Torgo"}, | |
| "F02 (UA)": {"Gender": "Female", "Severity": "Severe", "Dataset": "UA-Speech"} | |
| } | |
| def get_indomain_breakdown(): | |
| # Performance on Seen Torgo Speakers | |
| data = { | |
| "Speaker": ["M05", "F01", "M01", "M04", "M02", "M03", "F03", "F04"], | |
| "Severity": ["Severe", "Severe", "Moderate", "Moderate", "Mild", "Mild", "Mild", "Mild"], | |
| "Whisper Tiny": [12.1, 12.6, 32.7, 31.8, 62.1, 58.4, 61.2, 59.1], | |
| "5K Pure Model": [33.1, 34.2, 47.2, 45.6, 84.5, 81.8, 83.5, 82.8], | |
| "10K Triple-Mix": ["25.4%", "24.1% (LOSO)", "44.1%", "41.2%", "79.1%", "77.5%", "79.0%", "78.2%"] | |
| } | |
| df = pd.DataFrame(data) | |
| # Calculate Relative Gain from the best model (usually 5K for in-domain) | |
| df["Relative Gain (Best)"] = (((df["5K Pure Model"] - df["Whisper Tiny"]) / df["Whisper Tiny"]) * 100).round(1) | |
| # Formatting | |
| df["Whisper Tiny"] = df["Whisper Tiny"].astype(str) + "%" | |
| df["5K Pure Model"] = df["5K Pure Model"].astype(str) + "%" | |
| df["Relative Gain (Best)"] = "+" + df["Relative Gain (Best)"].astype(str) + "%" | |
| return df | |
| def get_experimental_summary(): | |
| # Summary of the three primary research conditions | |
| data = { | |
| "Condition": ["In-Domain (Seen Torgo)", "LOSO (Unseen Torgo F01)", "Zero-Shot (UA-Speech F02)"], | |
| "Whisper Tiny": [41.50, 12.38, 4.33], | |
| "5K Pure Model": [58.77, "N/A", 6.19], | |
| "10K Triple-Mix": [54.67, 24.76, 5.98] | |
| } | |
| df = pd.DataFrame(data) | |
| # Calculate Best Relative Gain | |
| best_scores = [58.77, 24.76, 6.19] | |
| whisper_base = [41.50, 12.38, 4.33] | |
| gains = [f"+{round(((b-w)/w)*100, 1)}%" for b, w in zip(best_scores, whisper_base)] | |
| df["Relative Gain (Best)"] = gains | |
| # Formatting for display | |
| df["Whisper Tiny"] = df["Whisper Tiny"].astype(str) + "%" | |
| df["5K Pure Model"] = df["5K Pure Model"].apply(lambda x: f"{x}%" if x != "N/A" else x) | |
| df["10K Triple-Mix"] = df["10K Triple-Mix"].astype(str) + "%" | |
| return df |