Spaces:
Running
Running
| import { useState } from "react"; | |
| import { media } from "./Utils/helper.js"; | |
| // import "primereact/resources/themes/lara-light-cyan/theme.css"; | |
| import './App.css' | |
| import "primereact/resources/themes/lara-light-cyan/theme.css"; | |
| // import "primereact/resources/themes/bootstrap4-light-blue/theme.css" | |
| import axios from "axios"; | |
| import { | |
| Routes, | |
| Route, | |
| Navigate, | |
| useLocation | |
| } from "react-router-dom"; | |
| import { Home } from "./components/Home"; | |
| import { Request } from "./components/Request"; | |
| import { Leaderboard } from "./components/Leaderboard"; | |
| import Nav from "./styled_components/Nav"; | |
| import styled from "styled-components"; | |
| import { Toast } from "primereact/toast"; | |
| import { React, useRef, useEffect } from "react"; | |
| import { useContext } from "react"; | |
| import { DataContext } from "./DataContext"; | |
| import Logo from "./assets/logo.png" | |
| import Metrics from "./components/Metrics"; | |
| import Dataset from "./components/Dataset"; | |
| import Contact from "./components/Contact"; | |
| import ProgressToast from "./styled_components/ProgressToast"; | |
| import SpinnerIcon from "./styled_components/SpinnerIcon"; | |
| import { Password } from 'primereact/password'; | |
| function App() { | |
| const toast = useRef(null); | |
| const [baseUrl, setBaseUrl] = useState("https://satyamr196-asr-fairbench-sever-v2.hf.space") | |
| // const [baseUrl,setBaseUrl] = useState("http://localhost:7860") | |
| console.log(baseUrl); | |
| const location = useLocation(); | |
| const showSucess = () => {//For toast | |
| toast.current.show({ severity: 'success', summary: 'Success', detail: 'Model added to Leaderboard π€' }); | |
| }; | |
| const showError = () => {//For toast | |
| toast.current.show({ severity: 'error', summary: 'Error', detail: 'Error adding model to Leaderboard π₯Ή' }); | |
| }; | |
| const showInfo = () => {//For toast | |
| toast.current.show({ severity: 'info', summary: 'Info', detail: 'Model already added to the Leaderboard π«’' }); | |
| }; | |
| return ( | |
| <> | |
| <Wrapper> | |
| <Toast ref={toast} /> | |
| <HeadImg> | |
| <img src={Logo}></img> | |
| </HeadImg> | |
| <Text> | |
| ποΈ <b>ASR-FAIRBENCH</b> is an open benchmarking platform dedicated to evaluating the <b>fairness and accuracy</b> of Automatic Speech Recognition (ASR) models. | |
| Our mission is to assess ASR models' performance across diverse demographic groups using the <b><a href="https://ai.meta.com/datasets/speech-fairness-dataset/" target="_blank">Fair Speech Dataset</a></b>. | |
| Models are ranked based on the <b>Fairness Adjusted Accuracy Score (FAAS)</b>, which integrates both <b>Word Error Rate (WER)</b> and a <b>Fairness Score</b>, ensuring that models deliver equitable performance across different accents, genders, and age groups. | |
| Explore the π <b>Metrics</b> tab for details on our evaluation process and visit the π <b>Dataset</b> tab for a summary of the Fair Speech Dataset. | |
| Think your ASR model is both inclusive and high-performing? Put it to the test and claim your spot on the leaderboard! β¨ | |
| <b>π<a href="https://www.isca-archive.org/interspeech_2025/rai25_interspeech.pdf" target="_blank">(Paper Link)</a> </b> | |
| <b><i className="pi pi-github"></i> <a href="https://github.com/SatyamR196/ASR-FairBench" target="_blank">(Github Link)</a></b> | |
| </Text> | |
| <div className="container"> | |
| <Nav /> | |
| <Routes> | |
| <Route path="/home" element={<Home baseUrl={baseUrl} />} /> | |
| <Route path="/request" element={<Request showSucess={showSucess} showError={showError} showInfo={showInfo} baseUrl={baseUrl} />} /> | |
| <Route path="/leaderboard" element={<Leaderboard baseUrl={baseUrl} />} /> | |
| <Route path="/metrics" element={<Metrics />} /> | |
| <Route path="/dataset" element={<Dataset />} /> | |
| <Route path="/contact" element={<Contact />} /> | |
| <Route path="/*" element={<Navigate to="/leaderboard" />} /> | |
| </Routes> | |
| </div> | |
| </Wrapper> | |
| <div style={{ display: location.pathname === "/request" ? "block" : "none" }}> | |
| <ProgressToast baseUrl={baseUrl} /> | |
| </div> | |
| </> | |
| ); | |
| } | |
| const HeadImg = styled.div` | |
| display: flex; | |
| justify-content: center; // Centers the image horizontally | |
| align-items: center; // Aligns image vertically | |
| width: 100%; | |
| margin: 1rem 0 0 0; | |
| img { | |
| max-width: 300px; // Adjust size as needed | |
| height: auto; // Maintain aspect ratio | |
| } | |
| ` | |
| const Text = styled.p` | |
| /* color: gray; */ | |
| color: #4b5563; | |
| padding-inline: 5rem; | |
| margin-top:0; | |
| margin-bottom:0; | |
| font-size:1.05rem !important ; | |
| @media ${media.tablet} { | |
| font-size: 14px; | |
| padding-inline: 2rem; | |
| } | |
| @media ${media.mobile} { | |
| font-size: 12px; | |
| padding-inline: 0.8rem; | |
| } | |
| ` | |
| const Wrapper = styled.div` | |
| /* position: 'relative'; */ | |
| /* background: linear-gradient(to right, #6dd5fa, #2980b9); */ | |
| background-color: #ffffff; | |
| /* background-color: #fa2020; */ | |
| color: black; | |
| min-height: 100vh; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: left; | |
| align-items: left; | |
| text-align: left; | |
| font-family: Arial, sans-serif; | |
| .container { | |
| width: 90%; | |
| margin: auto; | |
| /* margin-top: 3rem; */ | |
| padding: 2rem; | |
| background: transparent; | |
| /* background: rgb(255, 255, 255); */ | |
| backdrop-filter: blur(12px); | |
| /* box-shadow: 0 8px 32px rgba(0, 0, 0, 0.37); */ | |
| border-radius: 20px; | |
| transition: transform 0.3s ease-in-out; | |
| @media ${media.tablet} { | |
| width: 95%; | |
| padding: 1.2rem; | |
| } | |
| @media ${media.mobile} { | |
| width: 98%; | |
| padding: 0.8rem; | |
| } | |
| } | |
| h1 { | |
| font-size: 3rem; | |
| color: #000000; | |
| /* color: #3b82f6; */ | |
| text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); | |
| margin-bottom: 2rem; | |
| } | |
| h3{ | |
| color: #000000; | |
| } | |
| p { | |
| /* font-size: 1.2rem; */ | |
| /* color: #000000; */ | |
| /* margin-bottom: 2rem; */ | |
| } | |
| .graph-container { | |
| display: none; | |
| margin-top: 2rem; | |
| text-align: center; | |
| } | |
| canvas { | |
| margin: 20px auto; | |
| max-width: 600px; | |
| } | |
| hr { | |
| margin: 1.5px 0; | |
| border: none; | |
| border-top: 1.5px solid rgba(25, 75, 255, 0.7); | |
| } | |
| input { | |
| padding: 10px; | |
| /* margin-bottom: 20px; */ | |
| border: none; | |
| border-radius: 10px; | |
| /* width: 65%; */ | |
| text-align: center; | |
| } | |
| `; | |
| export default App; | |