tomwalters@54: #!/bin/bash tomwalters@54: tomwalters@54: HCOPY=`which HCopy` tomwalters@182: if [ "$HCOPY" == "" ]; then tomwalters@54: echo "Please build HTK and make the binaries available in the path" tomwalters@54: fi tomwalters@54: tomwalters@54: set -e tomwalters@54: set -u tomwalters@54: tomwalters@54: FEATURES_DIR=$1 tomwalters@54: MACHINE_CORES=$2 tomwalters@54: FILE_LIST=feature_generation_script tomwalters@54: HCOPY_CONFIG=hcopy_configuration tomwalters@54: tomwalters@54: echo "Creating HCopy config file..." tomwalters@54: cat <<"EOF" > $FEATURES_DIR/${HCOPY_CONFIG} tomwalters@54: # Coding parameters tomwalters@54: SOURCEFORMAT= WAV tomwalters@54: TARGETKIND = MFCC_0_D_A tomwalters@54: TARGETRATE = 100000.0 tomwalters@54: SAVECOMPRESSED = T tomwalters@54: SAVEWITHCRC = T tomwalters@54: WINDOWSIZE = 250000.0 tomwalters@54: USEHAMMING = T tomwalters@54: PREEMCOEF = 0.97 tomwalters@54: NUMCHANS = 200 tomwalters@54: CEPLIFTER = 22 tomwalters@54: NUMCEPS = 12 tomwalters@54: ENORMALISE = F tomwalters@54: # Parameters a bit like Welling and Ney (2002) tomwalters@54: # Can't do zero, it seems. tomwalters@54: # WARPLCUTOFF = 10 tomwalters@54: # Upper frequency is the Nyquist freq. (24000Hz) tomwalters@54: # so choose the break freq. close to that tomwalters@54: # WARPUCUTOFF = 23000 tomwalters@54: EOF tomwalters@54: tomwalters@54: echo "Splitting data files over cores..." tomwalters@54: total_cores=$(($MACHINE_CORES)) tomwalters@54: echo -n $total_cores tomwalters@54: echo " cores available" tomwalters@54: total_files=`cat $FEATURES_DIR/$FILE_LIST | wc -l | sed 's/ *//'` tomwalters@54: echo -n $total_files tomwalters@54: echo " files to process" tomwalters@54: files_per_core=$(($total_files/$total_cores+1)) tomwalters@54: echo -n $files_per_core tomwalters@54: echo " files per core" tomwalters@54: split -l $files_per_core $FEATURES_DIR/$FILE_LIST $FEATURES_DIR/split_list tomwalters@54: splits=( $(ls $FEATURES_DIR/split_list*)) tomwalters@54: element=0 tomwalters@54: echo -n "Spawning " tomwalters@54: echo -n $total_cores tomwalters@54: echo " tasks..." tomwalters@54: for ((c=1;c<=$MACHINE_CORES;c+=1)); do tomwalters@54: s=${splits[$element]} tomwalters@184: HCopy -T 1 -C $FEATURES_DIR/${HCOPY_CONFIG} -S $s & tomwalters@54: let element=element+1 tomwalters@54: done tomwalters@54: tomwalters@54: echo "Waiting for tasks to complete..." tomwalters@54: wait tomwalters@54: echo "Done!"