主要内容

audioFeatureExtractor

简化音频特征提取

描述

audioFeatureExtractor将多个音频功能提取器封装到一个简化的模块化实现中。

创造

描述

aFE=音频特征提取程序()使用默认属性值创建音频功能提取器。

例子

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

性质

全部展开

主要特性

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

数据类型:仅有一个的|双重的

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

数据类型:仅有一个的|双重的

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

数据类型:仅有一个的|双重的

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

数据类型:仅有一个的|双重的

光谱描述符的输入,指定为“linearSpectrum”,“melSpectrum”,“巴克谱”“erbSpectrum”

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

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

例如,如果你设置“光谱描述输入”“巴克谱”,“光谱阵”真正的,然后aFE返回默认Bark谱的质心。

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);aFE=音频特征提取程序(“SampleRate”fs,...“光谱描述输入”,“巴克谱”,...“光谱阵”,真正的);audioIn barkSpectralCentroid =提取(aFE);
如果指定非默认值barkSpectrum使用setExtractorParams,则非默认的Bark谱为谱描述符的输入。例如,如果你打电话setExtractorParams (aFE“barkSpectrum”、“NumBands”,40),然后aFE返回40波段巴克光谱的质心。

setExtractorParams (aFE“巴克谱”,“NumBands”bark40SpectralCentroid = extract(aFE,audioIn);

数据类型:字符|一串

此属性是只读的。

从中输出的要素总数摘录对于当前对象配置,指定为正整数。FeatureVectorLength等于摘录函数。

数据类型:仅有一个的|双重的

特征提取

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

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

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

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

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

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

数据类型:逻辑

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

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

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

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

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

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

  • “过滤器组规范化”–标准化应用于带通滤波器,指定为逗号分隔对,由“过滤器组规范化”“带宽”,“区域”“没有”.如果未指定的,FilterBankNormalization默认为“带宽”

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

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

数据类型:逻辑

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

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

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

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

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

  • “NumBands”——树皮带的数量,指定为逗号分隔的对,由“NumBands”和一个整数。如果未指定的,NumBands默认为32

  • “过滤器组规范化”–标准化应用于带通滤波器,指定为逗号分隔对,由“过滤器组规范化”“带宽”,“区域”“没有”.如果未指定的,FilterBankNormalization默认为“带宽”

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

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

数据类型:逻辑

提取单侧ERB光谱,具体如下真正的

要设置ERB频谱提取的参数,请使用setExtractorParams

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

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

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

  • “NumBands”——ERB带的个数,指定为逗号分隔对“NumBands”和一个整数。如果未指定的,NumBands默认为细胞(hz2erb(FrequencyRange (2))hz2erb(频率范围(1)))

  • “过滤器组规范化”–标准化应用于带通滤波器,指定为逗号分隔对,由“过滤器组规范化”“带宽”,“区域”“没有”.如果未指定的,FilterBankNormalization默认为“带宽”

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

数据类型:逻辑

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

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

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

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

  • “DeltaWindowLength”–Delta窗口长度,指定为逗号分隔对,由“DeltaWindowLength”和一个大于2的奇数。如果未指定的,DeltaWindowLength默认为9。此参数影响mfccDeltamfccDeltaDelta特性。

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

计算了梅尔频率倒频谱系数熔化光谱

数据类型:逻辑

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

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

数据类型:逻辑

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

delta-delta MFCC是根据提取的MFCC进行计算的。参数设置mfcc影响mfccDeltaDelta

数据类型:逻辑

提取gammatone倒谱系数(GTCC),具体如下真正的

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

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

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

  • “DeltaWindowLength”–Delta窗口长度,指定为逗号分隔对,由“DeltaWindowLength”和一个大于2的奇数。如果未指定的,DeltaWindowLength默认为9。此参数影响gtccDeltagtccDeltaDelta特性。

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

gammatone倒谱系数是使用erbSpectrum

数据类型:逻辑

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

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

数据类型:逻辑

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

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

数据类型:逻辑

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

方法指定的下列光谱表示之一计算谱心光谱描述输入财产:

数据类型:逻辑

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

根据下列光谱表示之一计算光谱波峰,如光谱描述输入财产:

数据类型:逻辑

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

根据以下光谱表示之一计算光谱减少,如光谱描述输入财产:

数据类型:逻辑

提取光谱熵,记为真正的

谱熵是根据下列谱表示之一计算的,如光谱描述输入财产:

数据类型:逻辑

提取光谱平坦度,具体为真正的

谱平坦度是根据下列的谱表示之一计算的,如光谱描述输入财产:

数据类型:逻辑

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

根据下列光谱表示之一计算光谱通量,如光谱描述输入财产:

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

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

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

数据类型:逻辑

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

根据以下光谱表示之一计算光谱峰度,如光谱描述输入财产:

数据类型:逻辑

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

谱的滚动点是根据下列的谱表示之一计算的,如光谱描述输入财产:

要设置光谱衰减点提取的参数,请使用setExtractorParams

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

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

数据类型:逻辑

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

根据下列光谱表示之一计算光谱偏度,如光谱描述输入财产:

数据类型:逻辑

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

根据下列光谱表示之一计算光谱斜率,如光谱描述输入财产:

数据类型:逻辑

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

的指定的下列光谱表示之一计算光谱扩展光谱描述输入财产:

数据类型:逻辑

提取节距,指定为真正的

设置音高提取的参数,使用setExtractorParams

setExtractorParams (aFE“节”,“名称”,值)
俯仰提取的可设置参数为:

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

  • “范围”——在Hz范围内搜索音调,指定为逗号分隔的对,由“范围”以及一个值递增的两元素行向量。如果未指定的,范围默认为[50400]

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

数据类型:逻辑

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

数据类型:逻辑

对象的功能

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

例子

全部折叠

读入音频信号。

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

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

aFE=音频特征提取程序(...“SampleRate”fs,...“窗口”汉明(圆(0.03 * fs),“周期”),...“OverlapLength”而圆(0.02 * fs),...“mfcc”符合事实的...“mfccDelta”符合事实的...“mfccDeltaDelta”符合事实的...“节”符合事实的...“光谱阵”,真正的);

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

特点=提取(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))标题(“投球”)xlabel(“时间(s)”) ylabel (的频率(赫兹)

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

创建指向audio Toolbox®附带的音频样本的音频数据存储。

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

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

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

将数据转换为数组中。仅当使用显式请求数组时,才会对其求值收集.MATLAB®自动优化的排队计算,通过最小化的次数通过数据。如果您有Parallel Computing Toolbox™,则可以将计算分散到多台计算机上。音频数据表示为-by-1高单元阵列,其中是音频数据存储中的文件数。

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

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

aFE=音频特征提取程序(“采样器”, 44.1 e3,...“melSpectrum”符合事实的...“barkSpectrum”符合事实的...“erbSpectrum”符合事实的...“linearSpectrum”,真正的);

定义一个cellfun函数,以便从高数组的每个单元中提取音频特征。调用收集以评估高阵列。

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

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

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

算法

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

例如,要创建提取Bark谱的质心、Bark谱的通量、音调、谐波比和MFCC的delta-delta的对象,请指定audioFeatureExtractor作为:

aFE=音频特征提取程序(...“光谱描述输入”,“巴克谱”,...“光谱阵”符合事实的...“光谱通量”符合事实的...“节”符合事实的...“harmonicRatio”符合事实的...“mfccDeltaDelta”,对)
aFE = audioFeatureExtractor with properties: properties Window: [1024×1 double] OverlapLength: 512 SampleRate: 44100 FFTLength: [] SpectralDescriptorInput:'barkSpectrum' Enabled Features mfccDeltaDelta, spectrum centroid, spectrum flux, pitch, harmonicRatio Disabled Features linearSpectrum, melSpectrum, barkSpectrum, erbSpectrum, mfcc, mfccDelta gtcc, gtccDelta, gtccDelta, gtccadelta, spectrum crest, spectrum decrease, spectrum entropy spectrum flatness, spectrum峰度,spectrum rolloffpoint, spectrum skewness,频谱偏斜度在提取特征时,将其属性设置为true。例如,obj。mfcc= true, adds mfcc to the list of enabled features.
这个配置对应突出显示的特征提取管道:

请注意

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

兼容性的考虑

全部展开

行为在R2020b中改变

扩展能力

介绍了R2019b