Yaafe 帮助命令
> yaafe.py -h
可用的音频特征和输出格式:
> yaafe.py -l
Available features: - AmplitudeModulation - AutoCorrelation - ComplexDomainOnsetDetection - Energy 能量 - Envelope - EnvelopeShapeStatistics - Frames - LPC 线性预测系数 - LSF 线性谱率 - Loudness 响度 - MFCC 梅尔系数 - MagnitudeSpectrum - OBSI - OBSIR - PerceptualSharpness 尖锐度 - PerceptualSpread - SpectralCrestFactorPerBand - SpectralDecrease - SpectralFlatness 谱平坦度 - SpectralFlatnessPerBand - SpectralFlux - SpectralRolloff 谱流量 - SpectralShapeStatistics - SpectralSlope - SpectralVariation - TemporalShapeStatistics - ZCR 过零率 Available feature transforms: - AutoCorrelationPeaksIntegrator - Cepstrum - Derivate - HistogramIntegrator - SlopeIntegrator - StatisticalIntegrator Available Output formats: - csv - h5
用-d可以查看描述
> yaafe.py -d MFCC
Compute the Mel-frequencies cepstrum coefficients. Parameters are : - CepsIgnoreFirstCoeff (default=1): 0 means to keep the first cepstral coeffcient, 1 means to ignore it - CepsNbCoeffs (default=13): Number of cepstral coefficient to keep. - FFTWindow (default=Hanning): Weighting window to apply before fft. Hanning|Hamming|None - MelMaxFreq (default=6854.0): Maximum frequency of the mel filter bank - MelMinFreq (default=130.0): Minimum frequency of the mel filter bank - MelNbFilters (default=40): Number of mel filters - blockSize (default=1024): output frames size - stepSize (default=512): step between consecutive frames
定义特征提取的语法如:
name: feature [param=value] [param=value] ... [> feature-transform [param=value] ... [> ...] ]
例如:
mfcc: MFCC blockSize=1024 stepSize=1024 CepsNbCoeffs=11 mfcc_d1: MFCC blockSize=1024 stepSize=1024 CepsNbCoeffs=11 > Derivate DOrder=1 mfcc_d2: MFCC blockSize=1024 stepSize=1024 CepsNbCoeffs=11 > Derivate DOrder=2
name用在输出文件中表示存储特征数据的表,参数可选,不填则设置默认
提取一种特征,可以用语句:
> yaafe -r 44100 -f "mfcc: MFCC blockSize=1024 stepSize=512" test.wav
-f选项是根据特征定义格式来计算特征。可能需要用到很多次-f选项。-r选项定义预期采样率。
提取多数特征,可以在文件中每行写一种特征:
lx: Loudness psp: PerceptualSpread psh: PerceptualSharpness ss: SpectralSlope sv: SpectralVariation sd: SpectralDecrease sf: SpectralFlatness sss: SpectralShapeStatistics mfcc: MFCC blockSize=512 stepSize=256 CepsNbCoeffs=11 lpc: LPC LPCNbCoeffs=3 obsi: OBSI obsir: OBSIR am: AmplitudeModulation blockSize=30720 stepSize=15360
提取所有的特征可以用-c选项
> yaafe.py -c featureplan -r 32000 file1.wav
可以通过多种音频文件作为参数传递给yaafe.py脚本,但你也可以使用-i选项来指定每行包含一个文件名的文本文件。每个音频文件必须具有相同的采样率。
yaafe提供了自动转换输入音频采样率的功能,来满足所需要的分析采样率的可能性。这要用到smarc包,在yaafe中作为额外的包。
默认行为是不执行任何采样率转换(不同的采样率的音频文件被忽略)。为了使输入音频采样率转换,使用--resample选项。
信号标准化
Yaafe可以标准化的输入信号。标准化的信号的意思是等于0和最大绝对值等于通过--normalize-MAX选项给定的值。
-n 使正常化。 --normalize-max 最大绝对值,默认为0.98。
我们假设上计算一个信号帧的特征值与帧的中心的时间相关联。当计算用的b号帧大小(块大小)和步骤在s号帧(步骤大小)之间的特征,帧迭代操作如下:
第一帧是集中在第一信号采样(用b / 2零左)(with b/2 zeros at left)
以下帧中心信号取样S,2 * S,3 * S等
最后的帧以最后s的信号样本为样本。它可能包含了最多的b / 2零右。(at most b/2 zeros at right)
例如,提取MFCC,blockSize=1024,stepSize=512超过1000的信号样本将会有如下帧:
frame 0 : [ -512 511] -> centered on sample 0, padded with 0 on the left frame 1 : [ 0 1023] -> centered on sample 512 frame 2 : [ 512 1535] -> centered on sample 1024 frame 3 : [ 1024 2047] -> centered on sample 1536 ... frame 18 : [ 8704 9727] -> centered on sample 9216 frame 19 : [ 9216 10239] -> centered on sample 9728, padded with 0 on the right
这个帧迭代保证与同一stepSize的参数,所有功能将始终一致,即使他们有不同的blockSize的参数。
可以使用-o选项选择一种输出格式。可用的输出格式可以列出-l选项。 CSV是默认格式。其他输出格式取决于编译选项,例如HDF5。每个输出格式都有自己的参数,你可以使用-d选项列表。要设置参数,使用-p选项。例如:
> yaafe.py -c featureplan -r 44100 audio.wav -o csv -p Precision=8 -p Metadata=False
每个特征都有以下数据:
sampleRate | 输入音频文件的采样率 |
blockSize | 样品的帧大小 frame size in number of sample |
stepSize | 样品中连续帧的步骤 step between consecutive frames, in number of sample |
version | yaafe的版本,用于计算功能 |
inputfile | 输入文件的名称 |
normalize | 标准花参数(--normalize-max值),或-1,如果没有标准化就使用 |
yaafedefinition | yaafe特征定义 |
CSV输出格式
> yaafe.py -d csv [csv] Creates one CSV file per feature and input file. Parameters are: - Metadata (default=True): If 'True' then write metadata as comments at the beginning of the csv file. If 'False', do not write metadata - Precision (default=6): precision of output floating point number.
Yaafe输出特征值的CSV文件,每个特征创建一个CSV文件。元数据被写入在文件开始的注释中,但是可以忽略参数Metadata=False
HDF5输出格式
> yaafe.py -d h5 [h5] Creates one H5 file per input file, containing one dataset per features. Parameters are: - Mode (default=update): 'overwrite' force overwrite already existing dataset, 'update' overwrite already existing dataset only if feature parameters have changed, 'create' fails if dataset already exists
Yaafe输出特征值在一个HDF5文件中。 HDF5是设计用于大量的科学数据的高效存储的二进制格式。 Yaafe为每个输入音频文件创建一个H5文件,并在不同的数据集中存储各自提取的特征。元数据被存储在数据集的属性中。
如果你正在使用MATLAB,Yaafe提供了一些Matlab的脚本从H5文件加载特征数据。
如果你正在使用Python,可以使用h5py包操纵特征数据(其它Python包也存在)。
-b选项可以指定输出文件的基本目录