主要内容

audioFeatureExtractor

流线音频特征提取

描述

audioFeatureExtractor将多个音频特征提取器封装成一个精简的模块化实现。

创建

描述

aFE= audioFeatureExtractor ()创建具有默认属性值的音频特征提取器。

例子

aFE= audioFeatureExtractor (名称=值的非默认属性aFE使用一个或多个名称-值参数。

属性

全部展开

主要特性

分析窗口,指定为实向量。

数据类型:|

相邻分析窗口的重叠长度,指定为[0,元素个数(窗口).

数据类型:|

FFT长度,指定为整数。的默认值。[]表示FFT长度等于窗口长度元素个数(窗口

数据类型:|

输入采样率(Hz),指定为正标量。

数据类型:|

输入到谱描述符,指定为“linearSpectrum”“melSpectrum”“barkSpectrum”,或“erbSpectrum”

受此属性影响的光谱描述符有:

频谱描述符的频谱输入与对应特征的输出相同:

例如,如果您设置SpectralDescriptorInput“barkSpectrum”,spectralCentroid真正的,然后aFE返回默认Bark谱的质心。

[audioIn,fs] = audioread(“Counting-16-44p1-mono-15secs.wav”);aFE = audioFeatureExtractor(SampleRate=fs,SpectralDescriptorInput =“barkSpectrum”spectralCentroid = true);barkSpectralCentroid = extract(aFE,audioIn);
如果指定为非默认barkSpectrum使用setExtractorParameters,则非默认的Bark谱是谱描述符的输入。例如,如果你打电话setExtractorParameters (aFE“barkSpectrum NumBands = 40),然后aFE返回40波段Bark光谱的质心。

setExtractorParameters (aFE“barkSpectrum”,NumBands=40) bark40SpectralCentroid = extract(aFE,audioIn);

数据类型:字符|字符串

该属性是只读的。

输出的特征总数提取对于当前对象配置,指定为正整数。FeatureVectorLength等于输出的第二个维度提取函数。

数据类型:|

要提取的特征

提取单侧线性谱,指定为真正的

要设置线性光谱提取的参数,使用setExtractorParameters

setExtractorParameters (aFE“linearSpectrum”名称=值)
线性光谱提取可设置的参数有:

  • FrequencyRange—以Hz为单位的提取频谱的频率范围,指定为在[0,SampleRate/ 2)。如果未指定的,FrequencyRange默认为[0,SampleRate/ 2)

  • SpectrumType——频谱类型,指定为“权力”“级”.如果未指定的,SpectrumType默认为“权力”

  • WindowNormalization——应用窗口规范化,指定为真正的.如果未指定的,WindowNormalization默认为真正的

数据类型:逻辑

提取单侧mel谱,指定为真正的

设置mel谱提取的参数,使用setExtractorParameters

setExtractorParameters (aFE“melSpectrum”名称=值)
mel光谱提取可设置的参数有:

  • FrequencyRange—以Hz为单位的提取频谱的频率范围,指定为在[0,SampleRate/ 2)。如果未指定的,FrequencyRange默认为[0,SampleRate/ 2)

  • SpectrumType——频谱类型,指定为“权力”“级”.如果未指定的,SpectrumType默认为“权力”

  • NumBands- mel频带的数量,指定为整数。如果未指定的,NumBands默认为32

  • FilterBankNormalization——归一化应用于带通滤波器,指定为“带宽”“区域”,或“没有”.如果未指定的,FilterBankNormalization默认为“带宽”

  • WindowNormalization——应用窗口规范化,指定为真正的.如果未指定的,WindowNormalization默认为真正的

  • FilterBankDesignDomain——滤波器组被设计在其中的域,指定为要么“线性”“扭曲”.如果未指定的,FilterBankDesignDomain默认为“线性”

数据类型:逻辑

提取单侧树皮光谱,指定为真正的

配置树皮谱提取的参数,使用setExtractorParameters

setExtractorParameters (aFE“barkSpectrum”名称=值)
树皮光谱提取可设置的参数有:

  • FrequencyRange—以Hz为单位的提取频谱的频率范围,指定为在[0,SampleRate/ 2)。如果未指定的,FrequencyRange默认为[0,SampleRate/ 2)

  • SpectrumType——频谱类型,指定为“权力”“级”.如果未指定的,SpectrumType默认为“权力”

  • NumBands—Bark频带的数量,指定为整数。如果未指定的,NumBands默认为32

  • FilterBankNormalization——归一化应用于带通滤波器,指定为“带宽”“区域”,或“没有”.如果未指定的,FilterBankNormalization默认为“带宽”

  • WindowNormalization——应用窗口规范化,指定为真正的.如果未指定的,WindowNormalization默认为真正的

  • FilterBankDesignDomain——滤波器组被设计在其中的域,指定为要么“线性”“扭曲”.如果未指定的,FilterBankDesignDomain默认为“线性”

数据类型:逻辑

提取单侧ERB谱,指定为真正的

要设置ERB谱提取的参数,使用setExtractorParameters

setExtractorParameters (aFE“erbSpectrum”名称=值)
ERB光谱提取的可设置参数有:

  • FrequencyRange—以Hz为单位的提取频谱的频率范围,指定为在[0,SampleRate/ 2)。如果未指定的,FrequencyRange默认为[0,SampleRate/ 2)

  • SpectrumType——频谱类型,指定为“权力”“级”.如果未指定的,SpectrumType默认为“权力”

  • NumBands——ERB频带数,指定为整数。如果未指定的,NumBands默认为(即:hz2erb(FrequencyRange (2))hz2erb(FrequencyRange (1)))

  • FilterBankNormalization——归一化应用于带通滤波器,指定为“带宽”“区域”,或“没有”.如果未指定的,FilterBankNormalization默认为“带宽”

  • WindowNormalization——应用窗口规范化,指定为真正的.如果未指定的,WindowNormalization默认为真正的

数据类型:逻辑

提取mel-frequency倒谱系数(MFCC),指定为真正的

要设置MFCC提取的参数,使用setExtractorParameters

setExtractorParameters (aFE“mfcc”名称=值)
MFCC提取可设置的参数有:

  • NumCoeffs—每个窗口返回的系数数,指定为正整数。如果未指定的,NumCoeffs默认为13

  • DeltaWindowLength增量窗口长度,指定为大于2的奇数。如果未指定的,DeltaWindowLength默认为9.此参数影响mfccDeltamfccDeltaDelta特性。

  • 整改——非线性整流类型,指定为“日志”“立方根”

mel-frequency倒谱系数是用melSpectrum

数据类型:逻辑

提取MFCC的delta,指定为真正的

基于提取的MFCC计算delta MFCC。参数设置为mfcc影响mfccDelta

数据类型:逻辑

提取MFCC的delta-delta,指定为真正的

基于提取的MFCC计算delta-delta MFCC。参数设置为mfcc影响mfccDeltaDelta

数据类型:逻辑

提取γ酮倒谱系数(GTCC),指定为真正的

要设置GTCC提取的参数,使用setExtractorParameters

setExtractorParameters (aFE“gtcc”名称=值)
GTCC提取的可设置参数有:

  • NumCoeffs—每个窗口返回的系数数,指定为正整数。如果未指定的,NumCoeffs默认为13

  • DeltaWindowLength增量窗口长度,指定为大于2的奇数。如果未指定的,DeltaWindowLength默认为9.此参数影响gtccDeltagtccDeltaDelta特性。

  • 整改——非线性整流类型,指定为“日志”“立方根”

伽玛酮倒谱系数是用erbSpectrum

数据类型:逻辑

提取GTCC的delta,指定为真正的

增量GTCC是基于提取的GTCC计算的。参数设置为gtcc影响gtccDelta

数据类型:逻辑

提取GTCC的delta-delta,指定为真正的

基于提取的GTCC计算delta-delta GTCC。参数设置为gtcc影响gtccDeltaDelta

数据类型:逻辑

提取光谱质心,指定为真正的

方法指定的光谱表示形式之一计算光谱质心SpectralDescriptorInput属性:

数据类型:逻辑

提取谱峰,指定为真正的

谱峰是在下列谱表示形式之一上计算的,由SpectralDescriptorInput属性:

数据类型:逻辑

提取光谱衰减,指定为真正的

在下列谱表示形式之一上计算谱减少SpectralDescriptorInput属性:

数据类型:逻辑

提取谱熵,指定为真正的

谱熵是在下列谱表示之一上计算的,由SpectralDescriptorInput属性:

数据类型:逻辑

提取光谱平坦度,指定为真正的

在下列光谱表示形式之一上计算光谱平坦度SpectralDescriptorInput属性:

数据类型:逻辑

提取光谱通量,指定为真正的

中的指定的下列光谱表示形式之一计算光谱通量SpectralDescriptorInput属性:

要设置谱通量提取的参数,请使用setExtractorParameters

setExtractorParameters (aFE“spectralFlux”名称=值)
光谱通量提取的可设置参数为:

  • NormType——用于计算光谱通量的规范类型,指定为12.如果未指定的,NormType默认为2

数据类型:逻辑

提取光谱峰度,指定为真正的

谱峰度是根据下列谱表示中的一种来计算的SpectralDescriptorInput属性:

数据类型:逻辑

提取频谱滚降点,指定为真正的

的频谱表示形式之一计算频谱滚降点SpectralDescriptorInput属性:

要设置谱滚降点提取的参数,请使用setExtractorParameters

setExtractorParameters (aFE“spectralRolloffPoint”名称=值)
光谱通量提取的可设置参数为:

  • 阈值—滚转点的阈值,指定为(0,1)范围内的标量。如果未指定,阈值默认为0.95

数据类型:逻辑

提取光谱偏度,指定为真正的

谱偏度是在下列谱表示之一上计算的,由SpectralDescriptorInput属性:

数据类型:逻辑

提取光谱斜率,指定为真正的

谱斜率是根据下列谱表示形式之一计算的,由SpectralDescriptorInput属性:

数据类型:逻辑

提取频谱扩展,指定为真正的

谱扩展是根据下列谱表示形式之一计算的,由SpectralDescriptorInput属性:

数据类型:逻辑

提取音调,指定为真正的

要设置基音提取的参数,使用setExtractorParameters

setExtractorParameters (aFE“节”名称=值)
基音提取可设置的参数有:

  • 方法—用于计算音高的方法,指定为“PEF”“NCF”“CEP”“韩”,或“SRH”.如果未指定的,方法默认为“NCF”.有关可用的基音提取方法的说明,请参见球场

  • 范围-范围内搜索以Hz为单位的音高,指定为一个递增值的双元素行向量。如果未指定的,范围默认为[50400]

  • MedianFilterLength—中值滤波器长度用于平滑音调估计随着时间的推移,指定为正整数。如果未指定的,MedianFilterLength默认为1(没有中值滤波)。

数据类型:逻辑

提取谐波比,指定为真正的

数据类型:逻辑

提取过零率,指定为真正的

要设置过零速率提取的参数,请使用setExtractorParameters

setExtractorParameters (aFE“zerocrossrate”名称=值)
过零率提取可设置的参数有:

  • 方法——计算过零率的方法,指定为“差异”“比较”.如果未指定的,方法,默认为“差异”.有关更多信息,请参见zerocrossrate

  • 水平——计算交叉速率的信号电平,指定为实标量。audioFeatureExtractor减去的水平值,然后找到零点交叉点。如果未指定的,水平默认为0

  • 阈值——门槛上下水平计算交叉速率的值,指定为实标量。audioFeatureExtractor设置输入范围内的所有值(- - - - - -阈值阈值]0然后找出零相交点。如果未指定的,阈值默认为0

  • TransitionEdge-在计数过零时包括过渡,指定为“下降”“上升”,或“两个”.如果你指定“下降”,则只计算负向转换。如果你指定“上升”,则只计算正向转换。如果未指定的,TransitionEdge默认为“两个”

  • ZeroPositive-符号约定,指定为逻辑标量。如果你指定ZeroPositive作为真正的,然后0被认为是积极的。如果你指定ZeroPositive作为,然后audioFeatureExtractor认为01,+ 1符号:按照惯例有不同的符号标志函数。如果未指定的,ZeroPositive默认为

数据类型:逻辑

提取短时间能量,指定为真正的.短时能量的计算方法为

sTE = sum(xbw.^2,1)

在哪里xbw是缓冲和加窗信号。

示例:Chirp Function

产生一个以1khz采样3秒的啁啾。瞬时频率为100hz t 0 穿过200赫兹 t 1 第二。将信号分成103个样本段,相邻片段之间有43个重叠样本。窗口每段都有一个周期性的汉明窗口。

Fs = 1e3;X = chirp(0:1/fs:3,100,1,200)';[au:]“周期”);Nover = 43;[xb,~] = buffer(x,length(win),nover);“nodelay”);XBW = xb.*win;

利用定义计算短时能量。

= sum(xbw.^2,1)';

使用audioFeatureExtractor计算短时能量。

EaFE = extract(audioFeatureExtractor(shortTimeEnergy) =true;SampleRate = fs,窗口=赢,OverlapLength =也不要),x);

验证两种方法给出相同的短时能量。

dff = max(abs(EaFE-Edef))
DFF = 0

数据类型:逻辑

对象的功能

提取 提取音频特征
setExtractorParameters 为单个特征提取器设置非默认参数值
信息 输出映射和单个特征提取器参数
generateMATLABFunction 创建MATLAB功能兼容C/ c++代码生成

例子

全部折叠

读入音频信号。

[audioIn,fs] = audioread(“Counting-16-44p1-mono-15secs.wav”);

创建一个audioFeatureExtractor对象,提取信号的MFCC、delta MFCC、delta-delta MFCC、节距、频谱质心、过零率和短时能量。使用30毫秒的分析窗口和20毫秒的重叠。

ae = audioFeatureExtractor(SampleRate = fs,窗口=汉明(圆(0.03 * fs),“周期”),OverlapLength = (0.02 * fs),mfcc = true,mfccDelta = true,mfccDeltaDelta = true,= true,spectralCentroid = true,zerocrossrate = true,shortTimeEnergy = true);

调用提取从音频信号中提取音频特征。

feature = extract(aFE,audioIn);

使用信息确定特征提取矩阵的哪一列对应于请求的基音提取。

idx = info(aFE)
idx =带有字段的结构体:mfcc: [1 23 4 5 6 7 8 9 10 11 12 13] mfccDelta: [14 15 16 17 18 19 20 21 22 23 24 25 26] mfccDeltaDelta: [27 28 29 30 31 32 33 34 35 36 37 37 38 39] spectralCentroid: 40 pitch: 41 zerocrosrate: 42 shortTimeEnergy: 43

绘制检测到的螺距随时间的变化。

t = linspace(0,size(audioIn,1)/fs,size(features,1));情节(t)特性(:,idx.pitch))标题(“节”)包含(“时间(s)”) ylabel (“频率(赫兹)”

图包含一个轴对象。标题为Pitch的axes对象包含一个line类型的对象。

绘制过零率随时间的变化。

情节(t)特性(:,idx.zerocrossrate))标题(“零点交叉率”)包含(“时间(s)”

图包含一个轴对象。标题为过零率的轴对象包含类型为line的对象。

画出短时能量随时间的变化。

情节(t)特性(:,idx.shortTimeEnergy))标题(“短时能量”)包含(“时间(s)”

图包含一个轴对象。标题为Short-Time Energy的坐标轴对象包含一个类型为line的对象。

创建指向audio Toolbox®中包含的音频样本的音频数据存储。

文件夹= fullfile(matlabroot,“工具箱”“音频”“样本”);ads = audioDatastore(文件夹);

找到所有与44.1 kHz采样率相对应的文件,然后子集数据存储。

keepFile = cellfun(@(x)包含(x),“44 p1”), ads.Files);ads =子集(ads,keepFile);

将数据转换为a数组中。数组只有在显式请求时才计算收集.MATLAB®通过最大限度地减少通过数据的次数来自动优化排队计算。如果您有Parallel Computing Toolbox™,您可以将计算分散到多个worker中。音频数据表示为- × 1高单元阵列,其中音频数据存储中的文件数。

adsTall = tall(广告)
使用“本地”配置文件启动并行池(parpool)…连接到平行池(工人数量:6)。adsTall = M×1高细胞数组{539648×1双}{227497×1双}{8000×1双}{685056×1双}{882688×2双}{1115760×2双}{505200×2双}{3195904×2双}::::

创建一个audioFeatureExtractor对象从每个音频文件中提取mel谱、Bark谱、ERB谱和线性谱。使用默认的分析窗口和重叠长度进行频谱提取。

aFE = audioFeatureExtractor(SampleRate= 44.13;melSpectrum = true,barkSpectrum = true,erbSpectrum = true,linearSpectrum = true);

定义一个cellfun函数,以便从tall数组的每个单元格中提取音频特征。调用收集求tall数组的值。

specsTall = cellfun(@(x)extract(aFE,x),adsTall,UniformOutput=false);specs = gather(specsTall);
使用并行池“local”评估tall表达式:-通过1 / 1:在14秒内完成评估在14秒内完成

规格从gather返回的变量是numFiles-by-1单元阵列,其中numFiles是数据存储中的文件数量。单元格数组的每个元素都是anumHops——- - - - - -numFeatures——- - - - - -numChannels数组,其中跳数和通道数取决于音频文件的长度和通道数,特征数是来自音频数据的请求特征数。

numFiles = numel(specs)
numFiles = 12
[numHops1,numFeaturesFile1,numChanelsFile1] = size(规格{1})
numHops1 = 1053
numFeaturesFile1 = 620
numChanelsFile1 = 1
[numHops2,numFeaturesFile2,numChanelsFile2] = size(规格{2})
numHops2 = 443
numFeaturesFile2 = 620
numChanelsFile2 = 1

算法

audioFeatureExtractor基于您选择的特性创建一个特性提取管道。为了减少计算量,audioFeatureExtractor重用中间表示,并输出一些中间表示作为特征。

例如,若要创建提取Bark频谱质心、Bark频谱通量、基音、谐波比和MFCC的delta-delta的对象,请指定audioFeatureExtractor如下。

ae = audioFeatureExtractor(SpectralDescriptorInput =“barkSpectrum”spectralCentroid = true,spectralFlux = true,= true,harmonicRatio = true,mfccDeltaDelta = true)
aFE = audioFeatureExtractor with properties: properties Window: [1024×1 double] OverlapLength: 512 SampleRate: 44100 FFTLength: [] SpectralDescriptorInput:'barkSpectrum'启用特性mfccDeltaDelta, spectralCentroid, spectralFlux, pitch, harmonicRatio禁用特性linearSpectrum, melSpectrum, barkSpectrum, erbSpectrum, mfcc, mfccDelta gtcc, gtccDelta, gtccDeltaDelta, spectralCrest, spectralreduce, spectralEntropy, spectralFlatness, spectralKurtosis, spectralRolloffPoint, spectralSkewness, spectralSlope, spectralSpread要提取一个特征,将相应的属性设置为true。例如,obj。mfcc=真正的,adds mfcc to the list of enabled features.
这个配置对应于突出显示的特征提取管道。

请注意

因为audioFeatureExtractor重用中间表示,从输出的特征audioFeatureExtractor可能与相应的单个特征提取器输出的特征的默认配置不对应。

扩展功能

版本历史

在R2019b中引入

全部展开

行为在R2020b中改变