AbstractFeatureExtractor API

  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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章