Spaces:
Sleeping
Sleeping
import pandas as pd | |
import streamlit as st | |
import matplotlib.pyplot as plt | |
import seaborn as sns | |
import os | |
import json | |
from utils import read_reports, dict_to_multindex_df | |
#add_test_split_stats_from_secret_dataset, dict_to_multindex_df_all_splits | |
from utils import extract_stats_to_agg, extract_stats_all_splits, extract_stats_for_dataset_card | |
from constants import BIGOS_INFO, PELCRA_INFO, ABOUT_INFO | |
from datasets import get_dataset_config_names | |
# PL ASR BIGOS analysis | |
# PL ASR Diagnostic analysis | |
# PELCRA analysis | |
# TODO - compare the datasets | |
st.set_page_config(layout="wide") | |
metrics_size_audio = ["samples", "audio[h]", "speakers"] | |
metrics_size_text = ["samples", "words", "chars"] | |
metrics_size = metrics_size_audio + metrics_size_text | |
metrics_features_text_uniq = ["utts_unique", "words_unique", "chars_unique"] | |
metrics_features_speech_rate = ["words_per_sec", "chars_per_sec"] | |
metrics_features_duration = ["average_audio_duration[s]", "average_utterance_length[words]", "average_utterance_length[chars]"] | |
metrics_features_meta = ["meta_cov_sex", "meta_cov_age"] | |
metrics_features = metrics_features_text_uniq + metrics_features_speech_rate + metrics_features_duration + metrics_features_meta | |
about, analysis_bigos, analysis_bigos_diagnostic, analysis_bigos_pelcra = st.tabs(["About BIGOS datasets", "BIGOS V2 analysis", "BIGOS V2 diagnostic", "PELCRA for BIGOS analysis"]) | |
#analysis_bigos_diagnostic | |
#########################################BIGOS################################################ | |
with about: | |
st.title("About BIGOS project") | |
st.markdown(ABOUT_INFO, unsafe_allow_html=True) | |
# TODO - load and display about BIGOS benchmark | |
with analysis_bigos: | |
dataset_name = "amu-cai/pl-asr-bigos-v2" | |
dataset_short_name = "BIGOS" | |
dataset_version = "V2" | |
dataset_configs = get_dataset_config_names(dataset_name,trust_remote_code=True) | |
# remove "all" subset, which is always the last config type | |
dataset_configs.pop() | |
print(dataset_configs) | |
# read the reports for public and secret datasets | |
[stats_dict_public, contents_dict_public] = read_reports(dataset_name) | |
# update the metrics for test split with the secret dataset statistics | |
#stats_dict_public = add_test_split_stats_from_secret_dataset(stats_dict_public, stats_dict_secret) | |
df_multindex_for_agg = dict_to_multindex_df(stats_dict_public, all_splits=False) | |
df_multindex_all_splits = dict_to_multindex_df(stats_dict_public, all_splits=True) | |
# extract metrics from dictionary and convert to various dataframes for easier analysis and visualization | |
#st.header("Summary statistics") | |
st.header("Dataset level metrics") | |
df_sum_stats_agg = extract_stats_to_agg(df_multindex_for_agg, metrics_size) | |
# split dataframe into separate dataframes for easier analysis and visualization | |
st.subheader("Audio content size") | |
df_sum_stats_audio = df_sum_stats_agg[metrics_size_audio] | |
st.dataframe(df_sum_stats_audio) | |
st.subheader("Text content size") | |
df_sum_stats_text = df_sum_stats_agg[metrics_size_text] | |
st.dataframe(df_sum_stats_text) | |
df_sum_stats_all_splits = extract_stats_all_splits(df_multindex_all_splits, metrics_features) | |
st.subheader("Utterances, vocabulary and alphabet space") | |
df_sum_stats_feats_text = df_sum_stats_all_splits[metrics_features_text_uniq] | |
st.dataframe(df_sum_stats_feats_text) | |
st.subheader("Speech rates") | |
df_sum_stats_feats_speech_rate= df_sum_stats_all_splits[metrics_features_speech_rate] | |
st.dataframe(df_sum_stats_feats_speech_rate) | |
st.subheader("Average utterance lengths and audio duration") | |
df_sum_stats_feats_durations = df_sum_stats_all_splits[metrics_features_duration] | |
st.dataframe(df_sum_stats_feats_durations) | |
st.subheader("Metadata coverage") | |
df_sum_stats_feats_meta = df_sum_stats_all_splits[metrics_features_meta] | |
st.dataframe(df_sum_stats_feats_meta) | |
st.header("BIGOS subsets (source datasets) cards") | |
for subset in dataset_configs: | |
st.subheader("Dataset card for: {}".format(subset)) | |
df_metrics_subset_size = extract_stats_for_dataset_card(df_multindex_for_agg, subset, metrics_size, add_total=True) | |
st.dataframe(df_metrics_subset_size) | |
df_metrics_subset_features = extract_stats_for_dataset_card(df_multindex_for_agg, subset, metrics_features, add_total=False) | |
st.dataframe(df_metrics_subset_features) | |
with analysis_bigos_diagnostic: | |
dataset_name = "amu-cai/pl-asr-bigos-v2-diagnostic" | |
dataset_short_name = "BIGOS diagnostic" | |
dataset_version = "V2" | |
dataset_configs = get_dataset_config_names(dataset_name,trust_remote_code=True) | |
# remove "all" subset, which is always the last config type | |
dataset_configs.pop() | |
print(dataset_configs) | |
# read the reports for public and secret datasets | |
[stats_dict_public, contents_dict_public] = read_reports(dataset_name) | |
# update the metrics for test split with the secret dataset statistics | |
#stats_dict_public = add_test_split_stats_from_secret_dataset(stats_dict_public, stats_dict_secret) | |
df_multindex_for_agg = dict_to_multindex_df(stats_dict_public, all_splits=False) | |
df_multindex_all_splits = dict_to_multindex_df(stats_dict_public, all_splits=True) | |
# extract metrics from dictionary and convert to various dataframes for easier analysis and visualization | |
#st.header("Summary statistics") | |
st.header("Dataset level metrics") | |
df_sum_stats_agg = extract_stats_to_agg(df_multindex_for_agg, metrics_size) | |
# split dataframe into separate dataframes for easier analysis and visualization | |
st.subheader("Audio content size") | |
df_sum_stats_audio = df_sum_stats_agg[metrics_size_audio] | |
st.dataframe(df_sum_stats_audio) | |
st.subheader("Text content size") | |
df_sum_stats_text = df_sum_stats_agg[metrics_size_text] | |
st.dataframe(df_sum_stats_text) | |
df_sum_stats_all_splits = extract_stats_all_splits(df_multindex_all_splits, metrics_features) | |
st.subheader("Utterances, vocabulary and alphabet space") | |
df_sum_stats_feats_text = df_sum_stats_all_splits[metrics_features_text_uniq] | |
st.dataframe(df_sum_stats_feats_text) | |
st.subheader("Speech rates") | |
df_sum_stats_feats_speech_rate= df_sum_stats_all_splits[metrics_features_speech_rate] | |
st.dataframe(df_sum_stats_feats_speech_rate) | |
st.subheader("Average utterance lengths and audio duration") | |
df_sum_stats_feats_durations = df_sum_stats_all_splits[metrics_features_duration] | |
st.dataframe(df_sum_stats_feats_durations) | |
st.subheader("Metadata coverage") | |
df_sum_stats_feats_meta = df_sum_stats_all_splits[metrics_features_meta] | |
st.dataframe(df_sum_stats_feats_meta) | |
st.header("BIGOS subsets (source datasets) cards") | |
for subset in dataset_configs: | |
st.subheader("Dataset card for: {}".format(subset)) | |
df_metrics_subset_size = extract_stats_for_dataset_card(df_multindex_for_agg, subset, metrics_size, add_total=True) | |
st.dataframe(df_metrics_subset_size) | |
df_metrics_subset_features = extract_stats_for_dataset_card(df_multindex_for_agg, subset, metrics_features, add_total=False) | |
st.dataframe(df_metrics_subset_features) | |
#########################################PELCRA################################################ | |
with analysis_bigos_pelcra: | |
dataset_name = "pelcra/pl-asr-pelcra-for-bigos" | |
dataset_short_name = "PELCRA" | |
# local version with granted gated access | |
#dataset_configs = get_dataset_config_names(dataset_name,trust_remote_code=True) | |
# remove "all" subset, which is always the last config type | |
#dataset_configs.pop() | |
# remote version with hardcoded access | |
dataset_configs = ['ul-diabiz_poleval-22', 'ul-spokes_mix_emo-18', 'ul-spokes_mix_luz-18', 'ul-spokes_mix_parl-18', 'ul-spokes_biz_bio-23', 'ul-spokes_biz_int-23', 'ul-spokes_biz_luz-23', 'ul-spokes_biz_pod-23', 'ul-spokes_biz_pres-23', 'ul-spokes_biz_vc-23', 'ul-spokes_biz_vc2-23', 'ul-spokes_biz_wyw-23'] | |
print(dataset_configs) | |
# read the reports for public and secret datasets | |
[stats_dict_public, contents_dict_public] = read_reports(dataset_name) | |
# update the metrics for test split with the secret dataset statistics | |
#stats_dict_public = add_test_split_stats_from_secret_dataset(stats_dict_public, stats_dict_secret) | |
df_multindex_for_agg = dict_to_multindex_df(stats_dict_public, all_splits=False) | |
df_multindex_all_splits = dict_to_multindex_df(stats_dict_public, all_splits=True) | |
# extract metrics from dictionary and convert to various dataframes for easier analysis and visualization | |
#st.header("Summary statistics") | |
st.header("Dataset level metrics") | |
df_sum_stats_agg = extract_stats_to_agg(df_multindex_for_agg, metrics_size) | |
# split dataframe into separate dataframes for easier analysis and visualization | |
st.subheader("Audio content size") | |
df_sum_stats_audio = df_sum_stats_agg[metrics_size_audio] | |
st.dataframe(df_sum_stats_audio) | |
st.subheader("Text content size") | |
df_sum_stats_text = df_sum_stats_agg[metrics_size_text] | |
st.dataframe(df_sum_stats_text) | |
df_sum_stats_all_splits = extract_stats_all_splits(df_multindex_all_splits, metrics_features) | |
st.subheader("Utterances, vocabulary and alphabet space") | |
df_sum_stats_feats_text = df_sum_stats_all_splits[metrics_features_text_uniq] | |
st.dataframe(df_sum_stats_feats_text) | |
st.subheader("Speech rates") | |
df_sum_stats_feats_speech_rate= df_sum_stats_all_splits[metrics_features_speech_rate] | |
st.dataframe(df_sum_stats_feats_speech_rate) | |
st.subheader("Average utterance lengths and audio duration") | |
df_sum_stats_feats_durations = df_sum_stats_all_splits[metrics_features_duration] | |
st.dataframe(df_sum_stats_feats_durations) | |
st.subheader("Metadata coverage") | |
df_sum_stats_feats_meta = df_sum_stats_all_splits[metrics_features_meta] | |
st.dataframe(df_sum_stats_feats_meta) | |
st.header("BIGOS subsets (source datasets) cards") | |
for subset in dataset_configs: | |
st.subheader("Dataset card for: {}".format(subset)) | |
df_metrics_subset_size = extract_stats_for_dataset_card(df_multindex_for_agg, subset, metrics_size, add_total=True) | |
st.dataframe(df_metrics_subset_size) | |
df_metrics_subset_features = extract_stats_for_dataset_card(df_multindex_for_agg, subset, metrics_features, add_total=False) | |
st.dataframe(df_metrics_subset_features) | |