AbstractFeatureExtractor API

<span style="font-size:24px;">public abstract class AbstractFeatureExtractor extends BaseDataProcessor
本类对于紧挨着信号的doubledata数据对象是需要特殊处理的,有此类型的doubledata数据的前或者后是没有doubledata数据对象的,对于前没有doubledata数据的情况,我们应该根据所需的特征,在其前加上相同的所需的double对象。对于后没有的doubledata对象,我们把此对象的前一doubledata对象复制入前后,复制的次数按需来确定。
本类为一个窗口特征提取的基本抽象类。像DeltasFeatureExtractor, ConcatFeatureExtractor,S3FeatureExtractor都是此类的具体类(子类)。本类的主要作用是收集倒谱帧的窗口长度在缓存中的,并进行特征提取计算。
本类的属性;
@S4Integer(defaultValue = 3)
public static final String PROP_FEATURE_WINDOW = "windowSize"; 为计算特征时所需的即当前data数据的可能的前或后的帧数。
private int bufferPosition;为cepstraBuffer数组中所存doubledata数据的个数,即当前cepstraBuffer数组中含有的所有数据对象的长度。
private Signal pendingSignal;
private LinkedList<Data> outputQueue;输出列队。
protected int cepstraBufferEdge; 等于cepstraBufferSize - (window * 2 + 2)
protected int window;
protected int currentPosition;为所需进行特征计算的数据在倒谱数组中的位置。
protected int cepstraBufferSize;为cepstraBuffer数组的长度。为256;
protected DoubleData[] cepstraBuffer;用来存储从输入得到的doubledata数据,数组中的基本元素是doubledata对象。
本类的构造方法:
  public AbstractFeatureExtractor( int window );根据输入的参数,创建对象。
public AbstractFeatureExtractor();空的构造方法
本类的方法:
public void newProperties(PropertySheet ps);进行属性设置。
public void initialize();设置了前一处理器,倒谱缓存的长度,倒谱缓存数组,倒谱缓存边缘,输出列队,缓存的当前位置,当前位置。
private void reset();设置缓存位置和当前位置为0;
private Data getNextData();从前一处理器输入数据,如果输入数据为SpeechStartSignal信号,则会把此信号存入输出列队中后,会接着从前一处理器获取数据,直到不是数据不为SpeechStartSignal,读取的SpeechStartSignal信号都会放入进输入列队中。
private void addCepstrum(DoubleData cepstrum);把输入的DoubleData中的数据都放入倒谱缓存数组中。并bufferPosition %= cepstraBufferSize;计算了缓存的位置为缓存位置来整除倒谱缓存数组的长度。
private void computeFeatures(int totalFeatures);把倒谱缓存中的倒谱数据转换成一个特征帧。输入totalFeatures为将要产生的特征矢量的数量(个数)。
private void computeFeature();计算特征,并把计算出来的特征加入输出列队中。
protected abstract Data computeNextFeature();计算下一特征,由子类去实现。
private int replicateLastCepstrum();作用是对结束信号的前一个doubledata数据进行处理,这也是个特殊数据。复制当前倒谱doubledata对象的前一对象入cepstraBuffer的当前倒谱对象的位置的后续window个位置中。返回的是window。
 private int processFirstCepstrum(Data cepstrum);用来对第一个的doubledata数据进行处理,在特征计算时,这是需要特殊考的一个数据。对此数据,我们会把window加一个此数据存入倒谱数组中。即在即在此数据的前再加特征计算所需的相同的此数据。
 public Data getData();根据输出列队中是否存在数据来进行处理,有的话,从输出列队的队首移除一个data数据。没有的话,从前一处理器读取数据,根据读取数据的类型进行相应的处理。
</span>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值