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