#!/bin/bash # # To be run from one directory above this script. ## The input is some directory containing the switchboard-1 release 2 ## corpus (LDC97S62). Note: we don't make many assumptions about how ## you unpacked this. We are just doing a "find" command to locate ## the .sph files. # for example /mnt/matylda2/data/SWITCHBOARD_1R2 . path.sh #check existing directories [ $# != 0 ] && echo "Usage: local/swbd_p1_prepare_dict.sh" && exit 1; srcdir=data/local/train # This is where we downloaded some stuff.. dir=data/local/dict mkdir -p $dir srcdict=$srcdir/swb_ms98_transcriptions/sw-ms98-dict.text # assume swbd_p1_data_prep.sh was done already. [ ! -f "$srcdict" ] && echo "No such file $srcdict" && exit 1; #(2a) Dictionary preparation: # Pre-processing (Upper-case, remove comments) awk 'BEGIN{getline}($0 !~ /^#/) {$0=toupper($0); print}' \ $srcdict | sort | awk '($0 !~ /^[:space:]*$/) {print}' \ > $dir/lexicon1.txt || exit 1; cat $dir/lexicon1.txt | awk '{ for(n=2;n<=NF;n++){ phones[$n] = 1; }} END{for (p in phones) print p;}' | \ grep -v SIL > $dir/nonsilence_phones.txt || exit 1; ( echo SIL; echo SPN; echo NSN; echo LAU ) > $dir/silence_phones.txt echo SIL > $dir/optional_silence.txt # No "extra questions" in the input to this setup, as we don't # have stress or tone. echo -n >$dir/extra_questions.txt # Add to the lexicon the silences, noises etc. (echo '!SIL SIL'; echo '[VOCALIZED-NOISE] SPN'; echo '[NOISE] NSN'; echo '[LAUGHTER] LAU'; echo ' SPN' ) | \ cat - $dir/lexicon1.txt > $dir/lexicon2.txt || exit 1; # Map the words in the lexicon. That is-- for each word in the lexicon, we map it # to a new written form. The transformations we do are: # remove laughter markings, e.g. # [LAUGHTER-STORY] -> STORY # Remove partial-words, e.g. # -[40]1K W AH N K EY # becomes -1K # and # -[AN]Y IY # becomes # -Y # -[A]B[OUT]- B # becomes # -B- # Also, curly braces, which appear to be used for "nonstandard" # words or non-words, are removed, e.g. # {WOLMANIZED} W OW L M AX N AY Z D # -> WOLMANIZED # Also, mispronounced words, e.g. # [YEAM/YEAH] Y AE M # are changed to just e.g. YEAM, i.e. the orthography # of the mispronounced version. # Note-- this is only really to be used in training. The main practical # reason is to avoid having tons of disambiguation symbols, which # we otherwise would get because there are many partial words with # the same phone sequences (most problematic: S). # Also, map # THEM_1 EH M -> THEM # so that multiple pronunciations just have alternate entries # in the lexicon. local/swbd_map_words.pl -f 1 $dir/lexicon2.txt | sort | uniq > $dir/lexicon3.txt || exit 1; cp $dir/lexicon3.txt $dir/lexicon.txt # This is the final lexicon. echo Prepared input dictionary and phone-sets for Switchboard phase 1.