These notes describe the process of training a set of neural nets using the ASAT TestBed software. The ASAT TestBed software is currently designed to use the TIMIT data set and neural network classifiers built on QuickNet software.

Basic Setup

Each of the TestBed programs makes use of a configuration file. These configuration files are specified using the format for the perl AppConfig library. You must have the AppConfig library in your PERL5LIB path to use these scripts. You can use the version installed on drspeech by putting the following in your PERL5LIB path:

PERL5LIB=/u/drspeech/exp/ASAT/TestBed/lib

A sample configuration file for these programs is in the configs directory named "config_all.ini". Certain fields are required in order for the programs to run properly:

[global]
fcalcprog = [full path to feature calculation program]
labcatprog = [full path to label file to text file program]
trainprog = [full path to feature training program]
testprog = [full path to feature testing program]
normprog = [full path to data normalizing program (for QuickNet)]
labprog = [full path to label-building program (for QuickNet)]
scratchdir = [full path to scratch directory for temporary files (should be local)]

[fcalc]
This section contains key/value pairs for command line arguments to the 
feature calculation program.  See the sample config file for details.

[lcalc]
This section contains key/value pairs for command line arguments to the
label-building program specified by the global_labprog key above.  See the
Configuration file for details.

There are many more keys defined in the [global] section than the ones above. AppConfig allows definition of variables that can be used through the entire script, so things like "outputdir" are defined in the global section then referenced as "$global_outputdir" in the remainder of the file. These keys can be anything, as long as they do not conflict with the required keys outlined above.

To run these programs, the same command-line format is used:

filename ini=[configfile] {-b}
Where filename is the name of the script, [configfile] is the REQUIRED configuration file, and the optional -b flag is used to control batch or single file mode.

For all of these scripts, a configuration file is a required parameter. However, any parameter of the config file can be overridden on the command line by giving the full name for the key. For example, the following command calls the step0.pl script with the scratchdir and filelist arguments overridden:

step0.pl ini=step0.ini -b step0_filelist=newfiles.lst global_scratchdir=new_scratchdir
Note that the full names of the arguments are required, including the section headings followed by an underscore before they key.

Step 0 - Data Partitioning

Step0 is the data partitioning script. For this step, you must have a SORTED list of files that will make up the training set prepared. The following keys are required under the [step0] key of the configuration file:

[step0]
filelist = [full path to the sorted list of training files]
splitdir = [full path to where the split partitions should be written]
partitions = [number of partitions to create]
prefix = [prefix to use when naming partition files]
suffix = [suffix to use when naming partitions files (use wavlist for now)]
outlist = [full path to where list of output files should be written]

The step0 code currently assumes that you will be supplying data files in the TIMIT format, where each directory contains a single speaker. Partions are created randomly by speaker, so all files associated with the same speaker are in the same partition.

Step 1 - Feature Calculation

Step1 is the feature calculation script. It will take as input either a single list of wav files, or a list of lists of wav files. If it takes a single list, it will produce a feature file containing features for the files in that list. If it takes a list of lists, it creates multiple feature files, one for each file in the list. To build multiple lists, you must run it with the "-b" flag for batch processing.

[step1]
wavlist = [full path to the list of wav files (single file only)]
wavlists = [full path to list of lists of wav files (batch processing only)]
feaoutdir = [full path to output directory for feature files]
fealistout = [full path to output file for list of feature files created]

Note that if you are performing a batch process, the "wavlists" key should be the same as the "outlist" key from step0.

Step 2 - Phone Labelling

Step2 is the phone labelling script. It can also be run in either single-file mode or batch mode. In single file mode, it takes a feature file created by step1 and a list of files that contain the phone labellings for that feature file and constructs a label file for the feature file. In batch mode (with the -b flag) it takes a list of feature files and a parallel list of phone labellings and constructs one label file for each phone label/feature file pair. IT IS IMPORTANT THAT THE TWO FILES ARE PARALLEL FILES. Each line in the phonelist file should correspond to the same feature file in the feature file list or else this labelling will be incorrect.

Phone list files can be constructed for the TIMIT data set by using the "mass_phn2wav.pl" script in the bin directory. This script takes as input a wavlist as constructed in step0 and constructs phonelists for the files in each of the wav file lists, putting these phonelists in the same directory as the wav file lists. This script depends on the TIMIT setup for phns and wavs, and merely constructs files with the same file names, but with a ".phn" instead of a ".wav" extension on them. The file also outputs a file list suitable for use in the "phnflist" key below.

[step2]
laboutdir = [full path to the output directory for label files]
feaflist = [full path to the list of feature files built in step1 (batch)]
phnflist = [full path to the list of corresponding phone label files (batch)]
lablistout = [full path to output file for list of labels constructed (batch)]
feaf = [full path to feature file built from step1 (single file)]
phnf = [full path to phone label file corresponding to feaf key (single file)]

Step 3 - Label Transformation

Step3 is the label transformation script. Its purpose is to take a sequence of phone label files and apply either one or a series of label tranformation to them. For our purposes, these scripts map phone values to feature values (so, for example, they might map 61 possible phone values to the 3 voicing values). This script can be run in single file mode or batch mode. In single file mode, a series of transformation scripts are appled to a single label file. In batch mode, the series of transformation scripts are applied to a series of label files.

[step3]
fealabscriptlist = [full path to list of script files to apply to labels]
fealabfilelist = [full path to list of label files to be transformed (batch)]
fealaboutdir = [full path to output directory for transformed label files]
labformat = [format to be passed to label program for the transformation]
fealabfile = [full path to single label file to be transformed (single file)]