from dataclasses import dataclass # These classes are for user facing column names, to avoid having to change them # all around the code when a modif is needed @dataclass class ColumnContent: name: str type: str def fields(raw_class): return [v for k, v in raw_class.__dict__.items() if k[:2] != "__" and k[-2:] != "__"] @dataclass(frozen=True) class PhonemeEvalColumn: # Phoneme evals column model = ColumnContent("Model", "markdown") avg_per = ColumnContent("Average PER ⬇️", "number") avg_duration = ColumnContent("Avg Duration (s)", "number") per_phoneme_asr = ColumnContent("PER phoneme_asr", "number") per_kids_phoneme_md = ColumnContent("PER kids_phoneme_md", "number") def make_clickable_model(model_name): model_name_list = model_name.split("/") if model_name_list[0] == "local": link = "#" # Local models don't have external links elif model_name_list[0] == "facebook": link = f"https://huggingface.co/{model_name}" elif model_name_list[0] == "openai": link = "https://openai.com/" elif model_name_list[0] == "HuBERT-Base": link = "https://huggingface.co/facebook/hubert-base-ls960" elif model_name_list[0] == "HuBERT-fine-tuned": link = "https://huggingface.co/tecasoftai/hubert-finetune" elif model_name_list[0] == "Timit": link = "https://huggingface.co/vitouphy/wav2vec2-xls-r-300m-timit-phoneme" elif model_name_list[0] == "Whisper": link = "https://huggingface.co/openai/whisper-base" elif model_name_list[0] == "WavLM": link = "https://huggingface.co/speech31/wavlm-large-english-phoneme" elif model_name_list[0] == "LJSpeech Gruut": link = "https://huggingface.co/bookbot/wav2vec2-ljspeech-gruut" else: link = f"https://huggingface.co/{model_name}" return f'{model_name}' def styled_error(error): return f"
{error}
" def styled_warning(warn): return f"{warn}
" def styled_message(message): return f"{message}
"