edu.cmu.sphinx.frontend.endpoint
Class SpeechClassifier

java.lang.Object
  extended by edu.cmu.sphinx.frontend.BaseDataProcessor
      extended by edu.cmu.sphinx.frontend.endpoint.SpeechClassifier
All Implemented Interfaces:
DataProcessor, Configurable

public class SpeechClassifier
extends BaseDataProcessor

Implements a level tracking endpointer invented by Bent Schmidt Nielsen.

This endpointer is composed of three main steps.

  1. classification of audio into speech and non-speech
  2. inserting SPEECH_START and SPEECH_END signals around speech
  3. removing non-speech regions

The first step, classification of audio into speech and non-speech, uses Bent Schmidt Nielsen's algorithm. Each time audio comes in, the average signal level and the background noise level are updated, using the signal level of the current audio. If the average signal level is greater than the background noise level by a certain threshold value (configurable), then the current audio is marked as speech. Otherwise, it is marked as non-speech.

The second and third step of this endpointer are documented in the classes SpeechMarker and NonSpeechDataFilter.

See Also:
SpeechMarker

Field Summary
static java.lang.String PROP_ADJUSTMENT
          The SphinxProperty specifying the adjustment.
static java.lang.String PROP_FRAME_LENGTH_MS
          The SphinxProperty specifying the endpointing frame length in milliseconds.
static java.lang.String PROP_MIN_SIGNAL
          The SphinxProperty specifying the minimum signal level used to update the background signal level.
static java.lang.String PROP_THRESHOLD
          The SphinxProperty specifying the threshold.
 
Constructor Summary
SpeechClassifier()
           
 
Method Summary
 Data getData()
          Returns the next Data object.
 void initialize()
          Initializes this LevelTracker endpointer and DataProcessor predecessor.
 void newProperties(PropertySheet ps)
          This method is called when this configurable component needs to be reconfigured.
 
Methods inherited from class edu.cmu.sphinx.frontend.BaseDataProcessor
getPredecessor, getTimer, setPredecessor, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

PROP_FRAME_LENGTH_MS

@S4Integer(defaultValue=10)
public static final java.lang.String PROP_FRAME_LENGTH_MS
The SphinxProperty specifying the endpointing frame length in milliseconds.

See Also:
Constant Field Values

PROP_MIN_SIGNAL

@S4Double(defaultValue=0.0)
public static final java.lang.String PROP_MIN_SIGNAL
The SphinxProperty specifying the minimum signal level used to update the background signal level.

See Also:
Constant Field Values

PROP_THRESHOLD

@S4Double(defaultValue=10.0)
public static final java.lang.String PROP_THRESHOLD
The SphinxProperty specifying the threshold. If the current signal level is greater than the background level by this threshold, then the current signal is marked as speech. Therefore, a lower threshold will make the endpointer more sensitive, that is, mark more audio as speech. A higher threshold will make the endpointer less sensitive, that is, mark less audio as speech.

See Also:
Constant Field Values

PROP_ADJUSTMENT

@S4Double(defaultValue=0.0030)
public static final java.lang.String PROP_ADJUSTMENT
The SphinxProperty specifying the adjustment.

See Also:
Constant Field Values
Constructor Detail

SpeechClassifier

public SpeechClassifier()
Method Detail

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 LevelTracker endpointer and DataProcessor predecessor.

Specified by:
initialize in interface DataProcessor
Overrides:
initialize in class BaseDataProcessor

getData

public Data getData()
             throws DataProcessingException
Returns the next Data object.

Specified by:
getData in interface DataProcessor
Specified by:
getData in class BaseDataProcessor
Returns:
the next Data object, or null if none available
Throws:
DataProcessingException - if a data processing error occurs