diff trunk/experiments/scripts/cnbh-syllables/feature_generation/gen_hcopy_aimcopy_script.sh @ 335:71c438f9daf7

- Scripts for running recognition experiments using AIM-C and HTK to compare MFCCs against features generated with AIM-C
author tomwalters
date Wed, 04 Aug 2010 06:41:56 +0000
parents
children 7074795fd2eb
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/trunk/experiments/scripts/cnbh-syllables/feature_generation/gen_hcopy_aimcopy_script.sh	Wed Aug 04 06:41:56 2010 +0000
@@ -0,0 +1,129 @@
+#!/bin/bash
+# Copyright 2009-2010 Thomas Walters <tom@acousticscale.org>
+#
+# Generate a list of source and destination filenames from the syllables spoke
+# pattern. This list can be used as a script for HTK's HCopy and AIM-C's
+# AIMCopy binaries for generating features.
+#
+# The first argument is the path to the root directory for the features to be
+# generated in. The second argument is the path to the sounds database.
+#
+# Generated files:
+# feature_generation_script - The AIMCopy / HCopy script
+
+FEATURES_DIR=$1
+SOUND_SOURCE=$2
+
+FULL_LIST=feature_generation_script
+
+# Temporary file names
+SYLLIST=syllable_list
+TALKERS=talker_list
+
+# The vowels and consonants that make up the CNBH database
+VOWELS="a e i o u"
+CONSONANTS="b d f g h k l m n p r s t v w x y z"
+
+if [ ! -e $FEATURES_DIR/.features_script_success ]; then
+mkdir -p $FEATURES_DIR
+
+# Make the sets of VC, CV, and vowel only labels, plus silence and use them to
+# generate the grammar, dictionary and list of syllables
+if [ -a $FEATURES_DIR/$SYLLIST.tmp.tmp ] 
+then
+  rm $FEATURES_DIR/$SYLLIST.tmp.tmp
+fi
+
+for v in $VOWELS; do
+  for c in $CONSONANTS; do
+    echo $v$c >> $FEATURES_DIR/$SYLLIST.tmp.tmp
+    echo $c$v >> $FEATURES_DIR/$SYLLIST.tmp.tmp
+  done
+done
+
+# Sort the syllable list and delete the 
+# temporary, unsorted version
+sort $FEATURES_DIR/$SYLLIST.tmp.tmp > $FEATURES_DIR/$SYLLIST.tmp
+rm $FEATURES_DIR/$SYLLIST.tmp.tmp
+
+cat <<"EOF" > $FEATURES_DIR/${TALKERS}.tmp
+170.9p112.2s
+171.0p112.8s	
+171.3p111.7s	
+171.5p113.1s	
+171.9p111.5s	
+172.1p113.0s	
+172.4p111.9s	
+172.5p112.5s
+171.7p112.3s	
+137.0p104.3s	
+141.3p135.4s	
+145.5p106.3s	
+148.8p128.8s	
+151.6p83.9s	
+153.0p108.1s	
+155.5p123.5s	
+156.7p90.6s	
+159.5p109.6s	
+161.1p119.4s	
+161.1p96.8s	
+163.4p157.6s	
+164.7p110.8s	
+164.9p102.1s	
+165.6p144.0s	
+165.7p116.2s	
+167.4p133.5s	
+167.8p106.5s	
+168.6p111.6s	
+168.9p125.4s	
+169.0p114.0s	
+170.0p109.7s	
+170.1p119.5s	
+171.0p115.5s	
+172.4p109.3s	
+173.3p105.6s	
+173.5p115.0s	
+174.5p100.6s	
+174.5p110.6s	
+174.9p113.0s	
+175.7p118.5s	
+176.1p94.5s	
+178.0p108.5s	
+178.1p87.6s	
+178.8p123.6s	
+179.0p113.9s	
+180.4p80.1s	
+183.0p105.7s	
+183.0p130.4s	
+184.8p115.1s	
+188.1p139.2s	
+189.6p102.1s	
+192.7p116.7s	
+194.5p150.4s	
+198.1p97.9s	
+202.7p118.6s	
+208.6p93.2s	
+215.2p121.0s
+EOF
+
+echo "Generating script..."
+exec 3> $FEATURES_DIR/$FULL_LIST
+for syllable in $(cat $FEATURES_DIR/${SYLLIST}.tmp); do
+  for speaker in $(cat $FEATURES_DIR/${TALKERS}.tmp); do
+    SOURCE_FILENAME=$SOUND_SOURCE/$syllable/${syllable}${speaker}.wav
+    DEST_FILENAME=$FEATURES_DIR/$syllable/${syllable}${speaker}.htk
+    echo "$SOURCE_FILENAME  ${DEST_FILENAME}" >&3
+  done
+done
+exec 3>&-
+
+# Make the necessary directories for the computed features
+echo "Making directory structure..."
+for syllable in $(cat $FEATURES_DIR/${SYLLIST}.tmp); do
+  mkdir -p $FEATURES_DIR/$syllable
+done
+
+rm $FEATURES_DIR/$SYLLIST.tmp
+rm $FEATURES_DIR/${TALKERS}.tmp
+touch $FEATURES_DIR/.features_script_success
+fi
\ No newline at end of file