public class BatchCMN extends BaseDataProcessor
The CMN processing subtracts the mean from all the Data
objects between a DataStartSignal
and a DataEndSignal
or between a SpeechStartSignal
and a SpeechEndSignal
. 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).
LiveCMN
logger
Constructor and Description |
---|
BatchCMN() |
Modifier and Type | Method and Description |
---|---|
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.
|
getPredecessor, setPredecessor
getName, initLogger, toString
public void newProperties(PropertySheet ps) throws PropertyException
Configurable
newProperties
in interface Configurable
newProperties
in class ConfigurableAdapter
ps
- a property sheet holding the new dataPropertyException
- if there is a problem with the properties.public void initialize()
initialize
in interface DataProcessor
initialize
in class BaseDataProcessor
public Data getData() throws DataProcessingException
getData
in interface DataProcessor
getData
in class BaseDataProcessor
DataProcessingException
- if there is an error processing data