edu.cmu.sphinx.frontend.feature
Class BatchCMN
java.lang.Object
edu.cmu.sphinx.frontend.BaseDataProcessor
edu.cmu.sphinx.frontend.feature.BatchCMN
- All Implemented Interfaces:
- DataProcessor, Configurable
public class BatchCMN
- extends BaseDataProcessor
Applies cepstral mean normalization (CMN), sometimes called channel mean normalization, to incoming cepstral data.
Its goal is to reduce the distortion caused by the transmission channel. The output is mean normalized cepstral
data.
The CMN processing subtracts the mean from all the Data
objects between a DataStartSignal
and a DataEndSignal
. BatchCMN will read in all the Data
objects, calculate the mean, and subtract this mean from all the Data
objects. For a given utterance, it will
only produce an output after reading all the incoming data for the utterance. As a result, this process can introduce
a significant processing delay, which is acceptable for batch processing, but not for live mode. In the latter case,
one should use the LiveCMN
.
CMN is a technique used to reduce distortions that are introduced by the transfer function of the transmission
channel (e.g., the microphone). Using a transmission channel to transmit the input speech translates to multiplying
the spectrum of the input speech with the transfer function of the channel (the distortion). Since the cepstrum is
the Fourier Transform of the log spectrum, the logarithm turns the multiplication into a summation. Averaging over
time, the mean is an estimate of the channel, which remains roughly constant. The channel is thus removed from the
cepstrum by subtracting the mean cepstral vector. Intuitively, the mean cepstral vector approximately describes the
spectral characteristics of the transmission channel (e.g., microphone).
- See Also:
LiveCMN
Method Summary |
Data |
getData()
Returns the next Data object, which is a normalized cepstrum. |
void |
initialize()
Initializes this BatchCMN. |
void |
newProperties(PropertySheet ps)
This method is called when this configurable component needs to be reconfigured. |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
BatchCMN
public BatchCMN()
newProperties
public void newProperties(PropertySheet ps)
throws PropertyException
- Description copied from interface:
Configurable
- This method is called when this configurable component needs to be reconfigured.
- Specified by:
newProperties
in interface Configurable
- Overrides:
newProperties
in class BaseDataProcessor
- Parameters:
ps
- a property sheet holding the new data
- Throws:
PropertyException
- if there is a problem with the properties.
initialize
public void initialize()
- Initializes this BatchCMN.
- Specified by:
initialize
in interface DataProcessor
- Overrides:
initialize
in class BaseDataProcessor
getData
public Data getData()
throws DataProcessingException
- Returns the next Data object, which is a normalized cepstrum. Signal objects are returned unmodified.
- Specified by:
getData
in interface DataProcessor
- Specified by:
getData
in class BaseDataProcessor
- Returns:
- the next available Data object, returns null if no Data object is available
- Throws:
DataProcessingException
- if there is an error processing data