changeset 144:f8ace1ee8782

- Support for training on random SNRs
author tom@acousticscale.org
date Sun, 07 Nov 2010 07:38:20 +0000
parents a915f8e28cad
children 48e5fc566441
files experiments/scripts/cnbh-syllables/run_training_and_testing/randomize_snrs.py experiments/scripts/master.sh src/Modules/Input/ModuleFileInput.cc src/Modules/Output/FileOutputHTK.cc
diffstat 4 files changed, 113 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/experiments/scripts/cnbh-syllables/run_training_and_testing/randomize_snrs.py	Sun Nov 07 07:38:20 2010 +0000
@@ -0,0 +1,92 @@
+#!/usr/bin/env python
+# encoding: utf-8
+"""
+randomize_snrs.py
+
+Created by Thomas Walters on 2010-11-06.
+"""
+
+import sys
+import getopt
+import re
+import random
+
+help_message = '''
+Replace a string in each of two files with a string randomly selected from a list.
+'''
+
+replacement_strings = ('snr_0dB',
+                       'snr_3dB',
+                       'snr_6dB',
+                       'snr_9dB',
+                       'snr_12dB',
+                       'snr_15dB',
+                       'snr_18dB',
+                       'snr_21dB',
+                       'snr_24dB',
+                       'snr_27dB',
+                       'snr_30dB',
+                       'snr_33dB',
+                       'snr_36dB',
+                       'snr_39dB',
+                       'snr_42dB',
+                       'snr_45dB',
+                       'clean')
+
+class Usage(Exception):
+  def __init__(self, msg):
+    self.msg = msg
+
+
+def main(argv=None):
+  if argv is None:
+    argv = sys.argv
+  try:
+    try:
+      opts, args = getopt.getopt(argv[1:], "hs:f:m:o:p:", ["help", "string_to_replace=", "input_script_file=", "input_mlf=", "output_script_file=", "output_mlf="])
+    except getopt.error, msg:
+      raise Usage(msg)
+  
+    # option processing
+    string_to_replace = ""
+    script_file = ""
+    ml_file = ""
+    output_script_file = ""
+    output_ml_file = ""
+    for option, value in opts:
+      if option in ("-h", "--help"):
+        raise Usage(help_message)
+      if option in ("-s", "--string_to_replace"):
+        string_to_replace = value
+      if option in ("-f", "--input_script_file"):
+        script_file = value
+      if option in ("-o", "--outut_script_file"):
+        output_script_file = value
+      if option in ("-p", "--output_mlf"):
+        output_ml_file = value
+      if option in ("-m", "--input_mlf"):
+        ml_file = value
+      
+  except Usage, err:
+    print >> sys.stderr, sys.argv[0].split("/")[-1] + ": " + str(err.msg)
+    print >> sys.stderr, "\t for help use --help"
+    return 2
+  
+  script = open(script_file, 'r')
+  mlf = open(ml_file, 'r')
+  out_script = open(output_script_file, 'w')
+  out_mlf = open(output_ml_file, 'w')
+  out_mlf.write(mlf.readline())
+  for l in script:
+    replacement = random.choice(replacement_strings)
+    out_script.write(re.sub(string_to_replace, replacement, l))
+    out_mlf.write(re.sub(string_to_replace, replacement, mlf.readline()))
+    out_mlf.write(mlf.readline())
+    out_mlf.write(mlf.readline())
+    out_mlf.write(mlf.readline())
+    out_mlf.write(mlf.readline())
+    
+
+
+if __name__ == "__main__":
+  sys.exit(main())
--- a/experiments/scripts/master.sh	Thu Nov 04 21:28:26 2010 +0000
+++ b/experiments/scripts/master.sh	Sun Nov 07 07:38:20 2010 +0000
@@ -158,8 +158,18 @@
     $FEATURES_DIR \
     $FEATURE_SUFFIX
 
-TRAINING_SCRIPT=$HMMS_ROOT/$FEATURE_CLASS/$FEATURE_SUFFIX/$TRAINING_SNR/$TALKERS/training_script
-TRAINING_MASTER_LABEL_FILE=$HMMS_ROOT/$FEATURE_CLASS/$FEATURE_SUFFIX/$TRAINING_SNR/$TALKERS/training_master_label_file
+if [ $TRAINING_SNR == 'random' ]; then
+  TRAINING_SCRIPT=$HMMS_ROOT/$FEATURE_CLASS/$FEATURE_SUFFIX/clean/$TALKERS/training_script
+  TRAINING_MASTER_LABEL_FILE=$HMMS_ROOT/$FEATURE_CLASS/$FEATURE_SUFFIX/clean/$TALKERS/training_master_label_file
+  RANDOMIZED_TRAINING_SCRIPT=$HMMS_ROOT/$FEATURE_CLASS/$FEATURE_SUFFIX/clean/$TALKERS/training_script_randomized
+  RANDOMIZED_TRAINING_MASTER_LABEL_FILE=$HMMS_ROOT/$FEATURE_CLASS/$FEATURE_SUFFIX/clean/$TALKERS/training_master_label_file_randomized
+  ./cnbh-syllables/run_training_and_testing/train_test_sets/randomize_snrs.py -s clean -f $TRAINING_SCRIPT -m $TRAINING_MASTER_LABEL_FILE -o $RANDOMIZED_TRAINING_SCRIPT -p $RANDOMIZED_TRAINING_MASTER_LABEL_FILE
+  TRAINING_SCRIPT=$RANDOMIZED_TRAINING_SCRIPT
+  TRAINING_MASTER_LABEL_FILE=$RANDOMIZED_TRAINING_MASTER_LABEL_FILE
+else
+  TRAINING_SCRIPT=$HMMS_ROOT/$FEATURE_CLASS/$FEATURE_SUFFIX/$TRAINING_SNR/$TALKERS/training_script
+  TRAINING_MASTER_LABEL_FILE=$HMMS_ROOT/$FEATURE_CLASS/$FEATURE_SUFFIX/$TRAINING_SNR/$TALKERS/training_master_label_file
+fi
 
 TESTING_SCRIPT=$WORK/testing_script
 TESTING_MASTER_LABEL_FILE=$WORK/testing_master_label_file
@@ -191,7 +201,7 @@
 FEATURE_SIZE=39
 FEATURE_TYPE=MFCC_0_D_A
 TALKERS=inner_talkers
-TRAINING_SNR=clean
+TRAINING_SNR=random
 run_train_test
 ########################
 
@@ -204,7 +214,7 @@
 FEATURE_TYPE=MFCC_0_D_A
 TALKERS=outer_talkers
 TRAINING_SNR=clean
-run_train_test
+#run_train_test
 ########################
 
 ########################
@@ -214,7 +224,7 @@
 FEATURE_SIZE=39
 FEATURE_TYPE=MFCC_0_D_A
 TALKERS=inner_talkers
-TRAINING_SNR=clean
+TRAINING_SNR=random
 run_train_test
 ########################
 
@@ -226,8 +236,8 @@
 FEATURE_SIZE=39
 FEATURE_TYPE=MFCC_0_D_A
 TALKERS=outer_talkers
-TRAINING_SNR=clean
-run_train_test
+TRAINING_SNR=random
+#run_train_test
 ########################
 
 AIM_FEATURE_SUFFIXES="slice_1_no_cutoff ssi_profile_no_cutoff slice_1_cutoff ssi_profile_cutoff smooth_nap_profile"
@@ -241,7 +251,7 @@
 FEATURE_SIZE=12
 FEATURE_TYPE=USER_E_D_A
 TALKERS=inner_talkers
-TRAINING_SNR=clean
+TRAINING_SNR=random
 run_train_test
 ########################
 
@@ -254,7 +264,7 @@
 FEATURE_TYPE=USER_E_D_A
 TALKERS=outer_talkers
 TRAINING_SNR=clean
-run_train_test
+#run_train_test
 ########################
 done
 
--- a/src/Modules/Input/ModuleFileInput.cc	Thu Nov 04 21:28:26 2010 +0000
+++ b/src/Modules/Input/ModuleFileInput.cc	Sun Nov 07 07:38:20 2010 +0000
@@ -113,7 +113,7 @@
     }
   }
 
-  // If the number of saples read is less than the buffer length, the end
+  // If the number of samples read is less than the buffer length, the end
   // of the file has been reached.
   if (read < buffer_length_) {
     // Zero samples at end
--- a/src/Modules/Output/FileOutputHTK.cc	Thu Nov 04 21:28:26 2010 +0000
+++ b/src/Modules/Output/FileOutputHTK.cc	Sun Nov 07 07:38:20 2010 +0000
@@ -145,7 +145,7 @@
   if (!header_written_) {
     LOG_ERROR(_T("No header has been written on the output file yet. Please "
                  "call FileOutputHTK::Initialize() or FileOutputHTK::Reset() "
-                 " before calling FileOutputHTK::Process()"));
+                 "before calling FileOutputHTK::Process()"));
     return;
   }
   float s;