From 43c58e255d73353a783768cf4cded576646eb444 Mon Sep 17 00:00:00 2001 From: Nay San Date: Sat, 23 Apr 2022 14:17:50 -0700 Subject: [PATCH] Update with new evaluations --- evals/README.Rmd | 4 +- evals/README.md | 25 +++--- .../figure-gfm/cross-validation-1.png | Bin 26373 -> 25857 bytes evals/asr_wer-cer.csv | 77 +++++++++--------- scripts/exp_asr-eval.py | 4 +- scripts/exp_asr-train.sh | 10 ++- 6 files changed, 64 insertions(+), 56 deletions(-) diff --git a/evals/README.Rmd b/evals/README.Rmd index 0991a44..b65b949 100644 --- a/evals/README.Rmd +++ b/evals/README.Rmd @@ -102,8 +102,8 @@ asr_wers <- asr_results %>% wer = wer * 100, is_baseline = model == "wav2vec2-large-robust-ft-swbd-300h", - `Fine-tuning` = ifelse(model == "wav2vec2-large-robust-ft-swbd-300h", "None", "39 minutes"), - `Fine-tuning` = factor(`Fine-tuning`, levels = c("None", "39 minutes")), + `Fine-tuning` = ifelse(model == "wav2vec2-large-robust-ft-swbd-300h", "None", "<1 minute"), + `Fine-tuning` = factor(`Fine-tuning`, levels = c("None", "<1 minute")), `Language Model` = ifelse(model_lm, "2-gram", "None"), `Language Model` = factor(`Language Model`, levels = c("None", "2-gram")) ) diff --git a/evals/README.md b/evals/README.md index 155e2df..3034b92 100644 --- a/evals/README.md +++ b/evals/README.md @@ -1,7 +1,7 @@ SLI-ASR Evaluations ================ Nay San -15 April, 2022 +23 April, 2022 ``` r library(tidyverse) @@ -108,14 +108,17 @@ asr_results %>% knitr::kable() ``` -| model | model\_lm | testset | wer | cer | -|:-----------------------------------|:----------|:---------|-----:|-----:| -| train-100 | FALSE | test.tsv | 0.11 | 0.05 | -| train-80 | FALSE | test.tsv | 0.13 | 0.05 | -| train-60 | FALSE | test.tsv | 0.16 | 0.06 | -| train-40 | FALSE | test.tsv | 0.37 | 0.14 | -| train-20 | FALSE | test.tsv | 0.98 | 0.78 | -| wav2vec2-large-robust-ft-swbd-300h | FALSE | test.tsv | 0.37 | 0.22 | +| model | model\_lm | testset | wer | cer | +|:-----------------------------------|:----------|:---------|------:|------:| +| train-100 | FALSE | test.tsv | 0.101 | 0.042 | +| train-80 | FALSE | test.tsv | 0.101 | 0.044 | +| train-60 | FALSE | test.tsv | 0.118 | 0.052 | +| train-40 | FALSE | test.tsv | 0.123 | 0.055 | +| train-20 | FALSE | test.tsv | 0.132 | 0.061 | +| train-10 | FALSE | test.tsv | 0.134 | 0.061 | +| train-05 | FALSE | test.tsv | 0.151 | 0.067 | +| train-01 | FALSE | test.tsv | 0.191 | 0.088 | +| wav2vec2-large-robust-ft-swbd-300h | FALSE | test.tsv | 0.363 | 0.215 | ### Cross-validation experiments @@ -127,8 +130,8 @@ asr_wers <- asr_results %>% wer = wer * 100, is_baseline = model == "wav2vec2-large-robust-ft-swbd-300h", - `Fine-tuning` = ifelse(model == "wav2vec2-large-robust-ft-swbd-300h", "None", "39 minutes"), - `Fine-tuning` = factor(`Fine-tuning`, levels = c("None", "39 minutes")), + `Fine-tuning` = ifelse(model == "wav2vec2-large-robust-ft-swbd-300h", "None", "<1 minute"), + `Fine-tuning` = factor(`Fine-tuning`, levels = c("None", "<1 minute")), `Language Model` = ifelse(model_lm, "2-gram", "None"), `Language Model` = factor(`Language Model`, levels = c("None", "2-gram")) ) diff --git a/evals/README_files/figure-gfm/cross-validation-1.png b/evals/README_files/figure-gfm/cross-validation-1.png index 187ac6bae9df2867e73bd256cd0a87f60dbd87ea..1734d53d3c49367efc50e5116dfb78af95274aee 100644 GIT binary patch literal 25857 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 diff --git a/evals/asr_wer-cer.csv b/evals/asr_wer-cer.csv index 0049b9a..b99b122 100644 --- a/evals/asr_wer-cer.csv +++ b/evals/asr_wer-cer.csv @@ -1,37 +1,40 @@ -model,model_lm,testset,wer,cer -train-100,False,test.tsv,0.11,0.05 -train-80,False,test.tsv,0.13,0.05 -train-60,False,test.tsv,0.16,0.06 -train-40,False,test.tsv,0.37,0.14 -train-20,False,test.tsv,0.98,0.78 -wav2vec2-large-robust-ft-swbd-300h,False,test.tsv,0.37,0.22 -b-1,False,bootstrap-1-test20.tsv,0.22,0.09 -b-2,False,bootstrap-2-test20.tsv,0.23,0.09 -b-3,False,bootstrap-3-test20.tsv,0.15,0.06 -b-4,False,bootstrap-4-test20.tsv,0.2,0.08 -b-5,False,bootstrap-5-test20.tsv,0.23,0.09 -b-6,False,bootstrap-6-test20.tsv,0.17,0.07 -b-7,False,bootstrap-7-test20.tsv,0.18,0.07 -b-8,False,bootstrap-8-test20.tsv,0.15,0.06 -b-9,False,bootstrap-9-test20.tsv,0.18,0.07 -b-10,False,bootstrap-10-test20.tsv,0.19,0.07 -b-1,True,bootstrap-1-test20.tsv,0.13,0.06 -b-2,True,bootstrap-2-test20.tsv,0.11,0.05 -b-3,True,bootstrap-3-test20.tsv,0.13,0.06 -b-4,True,bootstrap-4-test20.tsv,0.13,0.06 -b-5,True,bootstrap-5-test20.tsv,0.13,0.06 -b-6,True,bootstrap-6-test20.tsv,0.18,0.08 -b-7,True,bootstrap-7-test20.tsv,0.15,0.07 -b-8,True,bootstrap-8-test20.tsv,0.11,0.05 -b-9,True,bootstrap-9-test20.tsv,0.17,0.08 -b-10,True,bootstrap-10-test20.tsv,0.14,0.06 -wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-1-test20.tsv,0.36,0.23 -wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-2-test20.tsv,0.37,0.22 -wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-3-test20.tsv,0.35,0.22 -wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-4-test20.tsv,0.34,0.21 -wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-5-test20.tsv,0.38,0.24 -wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-6-test20.tsv,0.36,0.24 -wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-7-test20.tsv,0.35,0.22 -wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-8-test20.tsv,0.34,0.22 -wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-9-test20.tsv,0.38,0.25 -wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-10-test20.tsv,0.34,0.21 +model,model_lm,testset,wer,cer +train-100,False,test.tsv,0.101,0.042 +train-80,False,test.tsv,0.101,0.044 +train-60,False,test.tsv,0.118,0.052 +train-40,False,test.tsv,0.123,0.055 +train-20,False,test.tsv,0.132,0.061 +train-10,False,test.tsv,0.134,0.061 +train-05,False,test.tsv,0.151,0.067 +train-01,False,test.tsv,0.191,0.088 +wav2vec2-large-robust-ft-swbd-300h,False,test.tsv,0.363,0.215 +b-1,False,bootstrap-1-test20.tsv,0.187,0.09 +b-2,False,bootstrap-2-test20.tsv,0.167,0.077 +b-3,False,bootstrap-3-test20.tsv,0.173,0.079 +b-4,False,bootstrap-4-test20.tsv,0.173,0.086 +b-5,False,bootstrap-5-test20.tsv,0.195,0.093 +b-6,False,bootstrap-6-test20.tsv,0.173,0.084 +b-7,False,bootstrap-7-test20.tsv,0.187,0.087 +b-8,False,bootstrap-8-test20.tsv,0.194,0.09 +b-9,False,bootstrap-9-test20.tsv,0.188,0.085 +b-10,False,bootstrap-10-test20.tsv,0.186,0.088 +b-1,True,bootstrap-1-test20.tsv,0.196,0.087 +b-2,True,bootstrap-2-test20.tsv,0.188,0.083 +b-3,True,bootstrap-3-test20.tsv,0.179,0.083 +b-4,True,bootstrap-4-test20.tsv,0.178,0.089 +b-5,True,bootstrap-5-test20.tsv,0.219,0.103 +b-6,True,bootstrap-6-test20.tsv,0.196,0.089 +b-7,True,bootstrap-7-test20.tsv,0.21,0.092 +b-8,True,bootstrap-8-test20.tsv,0.201,0.09 +b-9,True,bootstrap-9-test20.tsv,0.213,0.093 +b-10,True,bootstrap-10-test20.tsv,0.216,0.094 +wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-1-test20.tsv,0.358,0.225 +wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-2-test20.tsv,0.365,0.223 +wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-3-test20.tsv,0.354,0.215 +wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-4-test20.tsv,0.34,0.212 +wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-5-test20.tsv,0.379,0.236 +wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-6-test20.tsv,0.356,0.237 +wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-7-test20.tsv,0.348,0.219 +wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-8-test20.tsv,0.341,0.221 +wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-9-test20.tsv,0.378,0.248 +wav2vec2-large-robust-ft-swbd-300h,False,bootstrap-10-test20.tsv,0.338,0.211 diff --git a/scripts/exp_asr-eval.py b/scripts/exp_asr-eval.py index a941460..873e342 100644 --- a/scripts/exp_asr-eval.py +++ b/scripts/exp_asr-eval.py @@ -86,8 +86,8 @@ def make_all_lowercase(batch): "model" : os.path.basename(model_path), "model_lm" : type(processor).__name__ == 'Wav2Vec2ProcessorWithLM', "testset" : os.path.basename(testset_path), - "wer" : round(wer(test_ds['sentence'], test_ds['transcription']), 2), - "cer" : round(cer(test_ds['sentence'], test_ds['transcription']), 2) + "wer" : round(wer(test_ds['sentence'], test_ds['transcription']), 3), + "cer" : round(cer(test_ds['sentence'], test_ds['transcription']), 3) }) results_df = pd.DataFrame(EVAL_RESULTS) diff --git a/scripts/exp_asr-train.sh b/scripts/exp_asr-train.sh index 2c4660b..52cdb3e 100755 --- a/scripts/exp_asr-train.sh +++ b/scripts/exp_asr-train.sh @@ -19,8 +19,9 @@ do python scripts/train_asr-by-w2v2-ft.py \ facebook/wav2vec2-large-robust-ft-swbd-300h \ "data/exps/asr/checkpoints/bootstrap/no-lm/b-$j" \ - "data/exps/asr/datasets/bootstrap-$j-train60.tsv" \ - "data/exps/asr/datasets/bootstrap-$j-test20.tsv" + "data/exps/asr/datasets/bootstrap-$j-train01.tsv" \ + "data/exps/asr/datasets/bootstrap-$j-test20.tsv" \ + --use_target_vocab False done # Cross-validation experiments with a bigram language model @@ -29,7 +30,8 @@ do python scripts/train_asr-by-w2v2-ft.py \ facebook/wav2vec2-large-robust-ft-swbd-300h \ "data/exps/asr/checkpoints/bootstrap/lm/b-$k" \ - "data/exps/asr/datasets/bootstrap-$k-train60.tsv" \ + "data/exps/asr/datasets/bootstrap-$k-train01.tsv" \ "data/exps/asr/datasets/bootstrap-$k-test20.tsv" \ - --lm_arpa data/exps/asr/2gram_correct.arpa + --lm_arpa data/exps/asr/datasets/20220422_2gram-correct.arpa \ + --use_target_vocab False done