AbstractFeatureExtractor API

来源:互联网 发布:怎么写销售数据分析表? 编辑:程序博客网 时间:2024/06/03 22:39
[java] view plain copy
print?
  1. <span style=“font-size:24px;”>public abstract class AbstractFeatureExtractor extends BaseDataProcessor  
  2. 本类对于紧挨着信号的doubledata数据对象是需要特殊处理的,有此类型的doubledata数据的前或者后是没有doubledata数据对象的,对于前没有doubledata数据的情况,我们应该根据所需的特征,在其前加上相同的所需的double对象。对于后没有的doubledata对象,我们把此对象的前一doubledata对象复制入前后,复制的次数按需来确定。  
  3. 本类为一个窗口特征提取的基本抽象类。像DeltasFeatureExtractor, ConcatFeatureExtractor,S3FeatureExtractor都是此类的具体类(子类)。本类的主要作用是收集倒谱帧的窗口长度在缓存中的,并进行特征提取计算。  
  4. 本类的属性;  
  5. @S4Integer(defaultValue = 3)  
  6. public static final String PROP_FEATURE_WINDOW = “windowSize”; 为计算特征时所需的即当前data数据的可能的前或后的帧数。  
  7. private int bufferPosition;为cepstraBuffer数组中所存doubledata数据的个数,即当前cepstraBuffer数组中含有的所有数据对象的长度。  
  8. private Signal pendingSignal;  
  9. private LinkedList<Data> outputQueue;输出列队。  
  10. protected int cepstraBufferEdge; 等于cepstraBufferSize - (window * 2 + 2)  
  11. protected int window;  
  12. protected int currentPosition;为所需进行特征计算的数据在倒谱数组中的位置。  
  13. protected int cepstraBufferSize;为cepstraBuffer数组的长度。为256;  
  14. protected DoubleData[] cepstraBuffer;用来存储从输入得到的doubledata数据,数组中的基本元素是doubledata对象。  
  15. 本类的构造方法:  
  16.   public AbstractFeatureExtractor( int window );根据输入的参数,创建对象。  
  17. public AbstractFeatureExtractor();空的构造方法  
  18. 本类的方法:  
  19. public void newProperties(PropertySheet ps);进行属性设置。  
  20. public void initialize();设置了前一处理器,倒谱缓存的长度,倒谱缓存数组,倒谱缓存边缘,输出列队,缓存的当前位置,当前位置。  
  21. private void reset();设置缓存位置和当前位置为0;  
  22. private Data getNextData();从前一处理器输入数据,如果输入数据为SpeechStartSignal信号,则会把此信号存入输出列队中后,会接着从前一处理器获取数据,直到不是数据不为SpeechStartSignal,读取的SpeechStartSignal信号都会放入进输入列队中。  
  23. private void addCepstrum(DoubleData cepstrum);把输入的DoubleData中的数据都放入倒谱缓存数组中。并bufferPosition %= cepstraBufferSize;计算了缓存的位置为缓存位置来整除倒谱缓存数组的长度。  
  24. private void computeFeatures(int totalFeatures);把倒谱缓存中的倒谱数据转换成一个特征帧。输入totalFeatures为将要产生的特征矢量的数量(个数)。  
  25. private void computeFeature();计算特征,并把计算出来的特征加入输出列队中。  
  26. protected abstract Data computeNextFeature();计算下一特征,由子类去实现。  
  27. private int replicateLastCepstrum();作用是对结束信号的前一个doubledata数据进行处理,这也是个特殊数据。复制当前倒谱doubledata对象的前一对象入cepstraBuffer的当前倒谱对象的位置的后续window个位置中。返回的是window。  
  28.  private int processFirstCepstrum(Data cepstrum);用来对第一个的doubledata数据进行处理,在特征计算时,这是需要特殊考的一个数据。对此数据,我们会把window加一个此数据存入倒谱数组中。即在即在此数据的前再加特征计算所需的相同的此数据。  
  29.  public Data getData();根据输出列队中是否存在数据来进行处理,有的话,从输出列队的队首移除一个data数据。没有的话,从前一处理器读取数据,根据读取数据的类型进行相应的处理。  
  30. </span>  

转:http://blog.csdn.net/taiyb/article/details/46336265

原创粉丝点击