主要内容

audioFeatureExtractor

简化音频特征提取

描述

audioFeatureExtractor将多个音频特征提取器封装到一个流线型和模块化实现中。

创建

描述

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

例子

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

属性

全部展开

主要特性

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

数据类型:|

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

数据类型:|

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

数据类型:|

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

数据类型:|

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

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

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

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

[audioIn, fs] = audioread (“计数-16-44p1-mono-15秒波形”);aFE = audioFeatureExtractor (“SampleRate”fs,...“SpectralDescriptorInput”,“barkSpectrum”,...“spectralCentroid”,真正的);audioIn barkSpectralCentroid =提取(aFE);
如果指定非默认值巴克谱使用setExtractorParams,则非默认的Bark谱为谱描述符的输入。例如,如果你打电话setExtractorParams (aFE“barkSpectrum”、“NumBands”,40)那么aFE返回40波段巴克光谱的质心。

setExtractorParams (aFE“barkSpectrum”,“麻木人”,40)BARK40光谱色阶=提取物(aFE,audioIn);

数据类型:字符|字符串

特征提取

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

设置线性光谱提取的参数,使用setExtractorParams:

setExtractorParams (aFE“linearSpectrum”,“名称”,值)
线性光谱提取的可设置参数为:

  • “FrequencyRange”——提取的频谱的频率范围,以Hz为单位,由逗号分隔的对组成“FrequencyRange”以及一个数字在[0,SampleRate/ 2)。如果未指定的,FrequencyRange默认为[0,SampleRate/ 2)

  • “频谱类型”——频谱类型,指定为逗号分隔的对,由“频谱类型”“权力”“级”。如果未指定的,SpectrumType默认为“权力”

  • “WindowNormalization”——应用窗口规范化,指定为逗号分隔的对“WindowNormalization”真正的。如果未指定的,窗口规范化默认为真正的

数据类型:符合逻辑的

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

要设置mel光谱提取的参数,请使用setExtractorParams:

setExtractorParams (aFE“光谱”,“名称”,值)
mel光谱提取的可设置参数为:

  • “FrequencyRange”——提取的频谱的频率范围,以Hz为单位,由逗号分隔的对组成“FrequencyRange”以及一个数字在[0,SampleRate/ 2)。如果未指定的,FrequencyRange默认为[0,SampleRate/ 2)

  • “频谱类型”——频谱类型,指定为逗号分隔的对,由“频谱类型”“权力”“级”。如果未指定的,SpectrumType默认为“权力”

  • “麻木人”——mel条带的数量,指定为逗号分隔对“麻木人”和一个整数。如果未指定的,麻木默认为32

  • “FilterBankNormalization”——应用于带通滤波器的归一化,指定为逗号分隔对组成“FilterBankNormalization”“带宽”,“区域”,或“没有”。如果未指定的,FilterBankNormalization默认为“带宽”

  • “WindowNormalization”——应用窗口规范化,指定为逗号分隔的对“WindowNormalization”真正的。如果未指定的,窗口规范化默认为真正的

  • “FilterBankDesignDomain”–设计过滤器组的域,指定为逗号分隔对,由FilterBankDesignDomain,要么“线性”“扭曲”。如果未指定的,FilterBankDesignDomain默认为“线性”

数据类型:符合逻辑的

提取单侧树皮光谱,具体如下:真正的

要设置树皮光谱提取的参数,请使用setExtractorParams:

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

  • “FrequencyRange”——提取的频谱的频率范围,以Hz为单位,由逗号分隔的对组成“FrequencyRange”以及一个数字在[0,SampleRate/ 2)。如果未指定的,FrequencyRange默认为[0,SampleRate/ 2)

  • “频谱类型”——频谱类型,指定为逗号分隔的对,由“频谱类型”“权力”“级”。如果未指定的,SpectrumType默认为“权力”

  • “麻木人”–树皮带的数量,指定为逗号分隔对,包括“麻木人”和一个整数。如果未指定的,麻木默认为32

  • “FilterBankNormalization”——应用于带通滤波器的归一化,指定为逗号分隔对组成“FilterBankNormalization”“带宽”,“区域”,或“没有”。如果未指定的,FilterBankNormalization默认为“带宽”

  • “WindowNormalization”——应用窗口规范化,指定为逗号分隔的对“WindowNormalization”真正的。如果未指定的,窗口规范化默认为真正的

  • “FilterBankDesignDomain”–设计过滤器组的域,指定为逗号分隔对,由FilterBankDesignDomain,要么“线性”“扭曲”。如果未指定的,FilterBankDesignDomain默认为“线性”

数据类型:符合逻辑的

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

设置ERB光谱提取的参数,使用setExtractorParams:

setExtractorParams (aFE“erbSpectrum”,“名称”,值)
ERB频谱提取的可设置参数如下:

  • “FrequencyRange”——提取的频谱的频率范围,以Hz为单位,由逗号分隔的对组成“FrequencyRange”以及一个数字在[0,SampleRate/ 2)。如果未指定的,FrequencyRange默认为[0,SampleRate/ 2)

  • “频谱类型”——频谱类型,指定为逗号分隔的对,由“频谱类型”“权力”“级”。如果未指定的,SpectrumType默认为“权力”

  • “麻木人”–ERB带的数量,指定为逗号分隔对,由“麻木人”和一个整数。如果未指定的,麻木默认为(即:hz2erb(FrequencyRange (2))hz2erb(FrequencyRange (1)))

  • “FilterBankNormalization”——应用于带通滤波器的归一化,指定为逗号分隔对组成“FilterBankNormalization”“带宽”,“区域”,或“没有”。如果未指定的,FilterBankNormalization默认为“带宽”

  • “WindowNormalization”——应用窗口规范化,指定为逗号分隔的对“WindowNormalization”真正的。如果未指定的,窗口规范化默认为真正的

数据类型:符合逻辑的

提取梅尔频率倒频谱系数(MFCC),指定为真正的

设置MFCC提取的参数,使用setExtractorParams:

setExtractorParams (aFE“mfcc”,“名称”,值)
MFCC萃取的可设置参数为:

  • “NumCoeffs”–为每个窗口返回的系数数,指定为逗号分隔对,由“NumCoeffs”一个正整数。如果未指定的,NumCoeffs默认为13

  • “DeltaWindowLength”——增量窗口长度,指定为逗号分隔的对,由“DeltaWindowLength”和大于2的奇数整数。如果未指定,三角窗长度默认为9。此参数影响mfccDeltamfccDeltaDelta特性。

  • “整改”——非线性整流的类型,指定为逗号分隔对,由“整改”“日志”“立方根”

计算了梅尔频率倒频谱系数melSpectrum

数据类型:符合逻辑的

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

delta MFCC是根据提取的MFCC计算出来的。参数设置mfcc影响mfccDelta

数据类型:符合逻辑的

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

增量MFCC是基于提取的MFCC计算的。参数设置为mfcc影响mfccDeltaDelta

数据类型:符合逻辑的

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

设置GTCC提取的参数,请使用setExtractorParams:

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

  • “NumCoeffs”–为每个窗口返回的系数数,指定为逗号分隔对,由“NumCoeffs”一个正整数。如果未指定的,NumCoeffs默认为13

  • “DeltaWindowLength”——增量窗口长度,指定为逗号分隔的对,由“DeltaWindowLength”和大于2的奇数整数。如果未指定,三角窗长度默认为9。此参数影响gtccDeltagtccDeltaDelta特性。

  • “整改”——非线性整流的类型,指定为逗号分隔对,由“整改”“日志”“立方根”

伽玛通倒谱系数是用erbSpectrum

数据类型:符合逻辑的

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

增量GTCC是根据提取的GTCC计算出来的。参数设置gtcc影响gtccDelta

数据类型:符合逻辑的

提取GTCC的增量,指定为真正的

delta-delta GTCC是根据提取的GTCC计算出来的。参数设置gtcc影响gtccDeltaDelta

数据类型:符合逻辑的

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

方法指定的下列光谱表示之一计算谱心SpectralDescriptorInput属性:

数据类型:符合逻辑的

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

根据以下光谱表示之一计算光谱波峰,如SpectralDescriptorInput属性:

数据类型:符合逻辑的

提取光谱降低值,具体为真正的

在下列光谱表示形式之一上计算谱降,如SpectralDescriptorInput属性:

数据类型:符合逻辑的

提取光谱熵,指定为真正的

谱熵是根据下列谱表示之一计算的,如SpectralDescriptorInput属性:

数据类型:符合逻辑的

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

谱平坦度是根据下列的谱表示之一计算的,如SpectralDescriptorInput属性:

数据类型:符合逻辑的

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

根据以下光谱表示之一计算光谱通量,如SpectralDescriptorInput属性:

要设置光谱通量提取的参数,请使用setExtractorParams:

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

  • “NormType”——用于计算谱通量的Norm类型,指定为逗号分隔对组成“NormType”和一个1.2.。如果未指定的,NormType默认为2.

数据类型:符合逻辑的

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

谱峰度是根据下列的谱表示之一计算的,如SpectralDescriptorInput属性:

数据类型:符合逻辑的

提取光谱rolrolff点,指定为真正的

根据以下光谱表示之一计算光谱衰减点,如SpectralDescriptorInput属性:

要设置光谱滚点提取的参数,使用setExtractorParams:

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

  • “阈值”——rolrolpoint的阈值,指定为逗号分隔的对“阈值”和范围(0,1)中的标量。如果未指定,阈值默认为0.95

数据类型:符合逻辑的

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

根据下列光谱表示之一计算光谱偏度,如SpectralDescriptorInput属性:

数据类型:符合逻辑的

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

根据下列光谱表示之一计算光谱斜率,如SpectralDescriptorInput属性:

数据类型:符合逻辑的

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

根据以下光谱表示之一计算光谱扩展,如SpectralDescriptorInput属性:

数据类型:符合逻辑的

提取音高,指定为真正的

要设置基音提取的参数,请使用setExtractorParams:

setExtractorParams (aFE“音高”,“名称”,值)
可设置的螺距提取参数有:

  • “方法”——用于计算音高的方法,指定为由逗号分隔的对组成“方法”“PEF”,“NCF”,“CEP”,“韩”,或“SRH”。如果未指定的,方法默认为“NCF”。有关可用的音高提取方法的描述,请参见球场

  • “范围”–搜索以Hz为单位的基音的范围,指定为逗号分隔的对,包括“范围”和一个两元素行向量,其值递增。如果没有说明,范围默认为[50,400]

  • “MedianFilterLength”——中值滤波器长度,用于随时间平滑的基音估计,指定为逗号分隔对组成“MedianFilterLength”一个正整数。如果未指定的,MedianFilterLength默认为1.(无中值滤波)。

数据类型:符合逻辑的

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

数据类型:符合逻辑的

对象的功能

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

例子

全部折叠

读入音频信号。

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

创建一个audioFeatureExtractor对象提取音频信号的MFCC、delta MFCC、delta-delta MFCC、音调和谱心。使用30毫秒的分析窗口,20毫秒重叠。

aFE = audioFeatureExtractor (...“SampleRate”fs,...“窗口”,汉明(圆形(0.03*fs),“定期”),...“重叠长度”而圆(0.02 * fs),...“mfcc”,真的,...“mfccDelta”,真的,...“mfccDeltaDelta”,真的,...“音高”,真的,...“spectralCentroid”,真正的);

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

特征=提取(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 38 39] spectralCentroid: 40 pitch: 41

绘制检测到的俯仰随时间的变化。

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

图中包含一个坐标轴。具有标题间距的轴包含一个铅字线对象。

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

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

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

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

将数据转换为高的数组中。高的只有当您使用显式请求数组时,才会计算它们聚集. MATLAB®通过最小化通过数据的次数自动优化排队计算。如果你有并行计算工具箱™, 您可以将计算分散到多台计算机上。音频数据表示为M-by-1高单元阵列,其中M是音频数据存储中文件的数量。

adsTall =高(广告)
正在使用“本地”配置文件启动并行池(parpool)。。。已连接到并行池(工作线程数:6)。adsTall=M×1高单元阵列{539648×1 double}{227497×1 double}{8000×1 double}{685056×1 double}{882688×2 double}{1115760×2 double}{505200×2 double}{3195904×2 double}::

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

aFE = audioFeatureExtractor (“SampleRate”,44.1e3,...“梅尔斯波谱”,真的,...“barkSpectrum”,真的,...“erbSpectrum”,真的,...“线性光谱”,真正的);

定义一个cellfun函数,以便从阵列的每个单元提取音频特征。呼叫聚集求高数组的值。

specsTall = cellfun (@ (x)提取(aFE x), adsTall,“统一输出”、假);规格=收集(specsTall);
使用Parallel Pool 'local'计算tall表达式:- Pass 1 of 1: Completed in 12 sec

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

numFiles =元素个数(规格)
numFiles = 12
[numHops1, numFeaturesFile1 numChanelsFile1] =大小(规格{1})
numHops1 = 1053
numFeaturesFile1 = 620
numChanelsFile1 = 1
[numHops2, numFeaturesFile2 numChanelsFile2] =大小(规格{2})
numHops2 = 443
numFeaturesFile2 = 620
numChanelsFile2 = 1

算法

这个audioFeatureExtractor基于选定的要素创建要素提取管道。为了减少计算量,audioFeatureExtractor重用的中介表示。一些中间表示可以作为特性输出:

例如,要创建提取树皮光谱的质心、树皮光谱的流量、节距、谐波比率和MFCC的增量的对象,请指定audioFeatureExtractor为:

aFE = audioFeatureExtractor (...“SpectralDescriptorInput”,“barkSpectrum”,...“spectralCentroid”,真的,...“spectralFlux”,真的,...“音高”,真的,...“harmonicRatio”,真的,...“mfccDeltaDelta”,真正的)
aFE=具有属性的audioFeatureExtractor:properties窗口:[1024×1双]重叠长度:512采样器:44100 FFT长度:[]光谱描述输入:“巴克斯谱”启用功能包括mfccDeltaDelta、光谱矩阵、光谱通量、音高、和声禁用功能包括线性光谱、melSpectrum、巴克斯谱、erbSpectrum、mfcc、mfccDelta gtcc、gtccDelta、gtccDeltaDelta、光谱REST、光谱衰减、光谱平面度、光谱荨麻疹、光谱滚动fPoint、spectralSkewness、spectralSlope、spectralSpread要提取特征,请将相应的属性设置为true。例如,obj.mfcc=true,将mfcc添加到已启用特征的列表中。
这个配置对应突出显示的特征提取管道:

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

兼容性的考虑

全部展开

行为在R2020b中改变

扩展功能

在R2019b中引入