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