The FeatureSet Object
Switch to Runon Mode
In an offline situation we read an entire utterance recording
and do each preprocessing step once. For a demo system we could start the
preprocessing (and recognition) after the first part of the utterance was
recorded. Then we continue as the next parts drop in. This is what we call
the runon mode.
To switch a FeatureSet into runon mode use:
% FeatureSet fs
% fs configure -runon 1
If you now use the FeatureSet method readADC
it is waiting for the start semaphore file, deleting it and reading
to the end of the file. Preprocessing on this data can be done now. The next time
'readADC' is waiting until the data file contains more data or it finds the
ready semaphore file (which is also deleted after reading the data file).
The processing of the blocks read in each time will be called tansaction further down.
When a new block of data is read in it is a good idea to do the processing
not from scratch, that means starting with the first sample or frame again,
but continue where finished last time. For that reason a Feature name
can only be used once in every transaction as a destination name in runon
mode. This behaviour will be ensured by the transaction numbers. You
can check these numbers using the configure method.
% fs configure -transaction
% fs:FEATURE configure -transaction
Note that there is a transaction number for the FeatureSet and one
for each Feature.
Before checking for the start semaphore file the transaction numbers
of all Features are set to -1. Each time a new block of data is read
(see last section) the transaction number of the FeatureSet will be increased starting from 0. When a preprocessing step is done (a method is used) the
resulting Feature will get the corresponding transaction number.
A second attempt in the same transaction will produce an error.
Other Possible Errors
Methods that require the whole utterance data mustn't be used in runon mode
since it doesn't make sense anymore. A critical aspect is the normalization.
Using the maximum and minimum or the mean and variance of the utterence is an
effective way to do the normalization but not usable. The method
offset could be used instead.
Some methods use zero padding or repeat the last frame or sample when future
values are needed and the same number of frames or samples as the source
feature should be calculated. Except for the last transaction, when the ready
semaphore file was found, this padding is switched off for the runon mode.
This means that Features having always the same number of frames
when not in runon mode (or after the last transcation in runon mode) can have
different numbers during runon.