annotate 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
rev   line source
tomwalters@335 1 #!/bin/bash
tomwalters@335 2 # Copyright 2009-2010 Thomas Walters <tom@acousticscale.org>
tomwalters@335 3 #
tomwalters@335 4 # Generate a list of source and destination filenames from the syllables spoke
tomwalters@335 5 # pattern. This list can be used as a script for HTK's HCopy and AIM-C's
tomwalters@335 6 # AIMCopy binaries for generating features.
tomwalters@335 7 #
tomwalters@335 8 # The first argument is the path to the root directory for the features to be
tomwalters@335 9 # generated in. The second argument is the path to the sounds database.
tomwalters@335 10 #
tomwalters@335 11 # Generated files:
tomwalters@335 12 # feature_generation_script - The AIMCopy / HCopy script
tomwalters@335 13
tomwalters@335 14 FEATURES_DIR=$1
tomwalters@335 15 SOUND_SOURCE=$2
tomwalters@335 16
tomwalters@335 17 FULL_LIST=feature_generation_script
tomwalters@335 18
tomwalters@335 19 # Temporary file names
tomwalters@335 20 SYLLIST=syllable_list
tomwalters@335 21 TALKERS=talker_list
tomwalters@335 22
tomwalters@335 23 # The vowels and consonants that make up the CNBH database
tomwalters@335 24 VOWELS="a e i o u"
tomwalters@335 25 CONSONANTS="b d f g h k l m n p r s t v w x y z"
tomwalters@335 26
tomwalters@335 27 if [ ! -e $FEATURES_DIR/.features_script_success ]; then
tomwalters@335 28 mkdir -p $FEATURES_DIR
tomwalters@335 29
tomwalters@335 30 # Make the sets of VC, CV, and vowel only labels, plus silence and use them to
tomwalters@335 31 # generate the grammar, dictionary and list of syllables
tomwalters@335 32 if [ -a $FEATURES_DIR/$SYLLIST.tmp.tmp ]
tomwalters@335 33 then
tomwalters@335 34 rm $FEATURES_DIR/$SYLLIST.tmp.tmp
tomwalters@335 35 fi
tomwalters@335 36
tomwalters@335 37 for v in $VOWELS; do
tomwalters@335 38 for c in $CONSONANTS; do
tomwalters@335 39 echo $v$c >> $FEATURES_DIR/$SYLLIST.tmp.tmp
tomwalters@335 40 echo $c$v >> $FEATURES_DIR/$SYLLIST.tmp.tmp
tomwalters@335 41 done
tomwalters@335 42 done
tomwalters@335 43
tomwalters@335 44 # Sort the syllable list and delete the
tomwalters@335 45 # temporary, unsorted version
tomwalters@335 46 sort $FEATURES_DIR/$SYLLIST.tmp.tmp > $FEATURES_DIR/$SYLLIST.tmp
tomwalters@335 47 rm $FEATURES_DIR/$SYLLIST.tmp.tmp
tomwalters@335 48
tomwalters@335 49 cat <<"EOF" > $FEATURES_DIR/${TALKERS}.tmp
tomwalters@335 50 170.9p112.2s
tomwalters@335 51 171.0p112.8s
tomwalters@335 52 171.3p111.7s
tomwalters@335 53 171.5p113.1s
tomwalters@335 54 171.9p111.5s
tomwalters@335 55 172.1p113.0s
tomwalters@335 56 172.4p111.9s
tomwalters@335 57 172.5p112.5s
tomwalters@335 58 171.7p112.3s
tomwalters@335 59 137.0p104.3s
tomwalters@335 60 141.3p135.4s
tomwalters@335 61 145.5p106.3s
tomwalters@335 62 148.8p128.8s
tomwalters@335 63 151.6p83.9s
tomwalters@335 64 153.0p108.1s
tomwalters@335 65 155.5p123.5s
tomwalters@335 66 156.7p90.6s
tomwalters@335 67 159.5p109.6s
tomwalters@335 68 161.1p119.4s
tomwalters@335 69 161.1p96.8s
tomwalters@335 70 163.4p157.6s
tomwalters@335 71 164.7p110.8s
tomwalters@335 72 164.9p102.1s
tomwalters@335 73 165.6p144.0s
tomwalters@335 74 165.7p116.2s
tomwalters@335 75 167.4p133.5s
tomwalters@335 76 167.8p106.5s
tomwalters@335 77 168.6p111.6s
tomwalters@335 78 168.9p125.4s
tomwalters@335 79 169.0p114.0s
tomwalters@335 80 170.0p109.7s
tomwalters@335 81 170.1p119.5s
tomwalters@335 82 171.0p115.5s
tomwalters@335 83 172.4p109.3s
tomwalters@335 84 173.3p105.6s
tomwalters@335 85 173.5p115.0s
tomwalters@335 86 174.5p100.6s
tomwalters@335 87 174.5p110.6s
tomwalters@335 88 174.9p113.0s
tomwalters@335 89 175.7p118.5s
tomwalters@335 90 176.1p94.5s
tomwalters@335 91 178.0p108.5s
tomwalters@335 92 178.1p87.6s
tomwalters@335 93 178.8p123.6s
tomwalters@335 94 179.0p113.9s
tomwalters@335 95 180.4p80.1s
tomwalters@335 96 183.0p105.7s
tomwalters@335 97 183.0p130.4s
tomwalters@335 98 184.8p115.1s
tomwalters@335 99 188.1p139.2s
tomwalters@335 100 189.6p102.1s
tomwalters@335 101 192.7p116.7s
tomwalters@335 102 194.5p150.4s
tomwalters@335 103 198.1p97.9s
tomwalters@335 104 202.7p118.6s
tomwalters@335 105 208.6p93.2s
tomwalters@335 106 215.2p121.0s
tomwalters@335 107 EOF
tomwalters@335 108
tomwalters@335 109 echo "Generating script..."
tomwalters@335 110 exec 3> $FEATURES_DIR/$FULL_LIST
tomwalters@335 111 for syllable in $(cat $FEATURES_DIR/${SYLLIST}.tmp); do
tomwalters@335 112 for speaker in $(cat $FEATURES_DIR/${TALKERS}.tmp); do
tomwalters@335 113 SOURCE_FILENAME=$SOUND_SOURCE/$syllable/${syllable}${speaker}.wav
tomwalters@335 114 DEST_FILENAME=$FEATURES_DIR/$syllable/${syllable}${speaker}.htk
tomwalters@335 115 echo "$SOURCE_FILENAME ${DEST_FILENAME}" >&3
tomwalters@335 116 done
tomwalters@335 117 done
tomwalters@335 118 exec 3>&-
tomwalters@335 119
tomwalters@335 120 # Make the necessary directories for the computed features
tomwalters@335 121 echo "Making directory structure..."
tomwalters@335 122 for syllable in $(cat $FEATURES_DIR/${SYLLIST}.tmp); do
tomwalters@335 123 mkdir -p $FEATURES_DIR/$syllable
tomwalters@335 124 done
tomwalters@335 125
tomwalters@335 126 rm $FEATURES_DIR/$SYLLIST.tmp
tomwalters@335 127 rm $FEATURES_DIR/${TALKERS}.tmp
tomwalters@335 128 touch $FEATURES_DIR/.features_script_success
tomwalters@335 129 fi