AbstractFeatureExtractor API

本文介绍了一个用于语音信号处理的抽象类AbstractFeatureExtractor,详细解释了该类的属性、构造方法及关键方法的功能,如特征计算、数据处理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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.youkuaiyun.com/taiyb/article/details/46336265

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值