简化音频特征提取
audioFeatureExtractor
将多个音频特征提取器封装到一个流线型和模块化实现中。
创建带有默认属性值的音频特征提取器。aFE
= audioFeatureExtractor ()
指定的非默认属性aFE
= audioFeatureExtractor (名称,值
)aFE
使用一个或多个名称-值对参数。
窗口
—分析窗口汉明(1024年,“周期性”)
(默认)|真正的向量分析窗口,指定为实向量。
数据类型:单
|双
OverlapLength
—相邻分析窗口重叠长度512
(默认)|范围为[0,元素个数(窗口
)
)相邻分析窗口的重叠长度,指定为范围[0,元素个数(窗口)
).
数据类型:单
|双
FFTLength
—FFT长度[]
(默认)|正整数FFT长度,指定为整数。默认的,[]
,表示FFT长度等于窗口长度,(元素个数(窗口)
).
数据类型:单
|双
SampleRate
—输入采样率(Hz)44100
(默认)|负的标量输入采样率(Hz),指定为非负标量。
数据类型:单
|双
SpectralDescriptorInput
—输入光谱描述符“linearSpectrum”
(默认)|“光谱”
|“barkSpectrum”
|“erbSpectrum”
输入光谱描述符,指定为“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);
数据类型:字符
|字符串
linearSpectrum
—提取线性光谱假
(默认)|真正的
提取单侧线性谱,指定为真正的
或假
。
设置线性光谱提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“linearSpectrum”,“名称”,值)
“FrequencyRange”
——提取的频谱的频率范围,以Hz为单位,由逗号分隔的对组成“FrequencyRange”
以及一个数字在[0,SampleRate/ 2)。如果未指定的,FrequencyRange
默认为[0,
。SampleRate
/ 2)
“频谱类型”
——频谱类型,指定为逗号分隔的对,由“频谱类型”
和“权力”
或“级”
。如果未指定的,SpectrumType
默认为“权力”
。
“WindowNormalization”
——应用窗口规范化,指定为逗号分隔的对“WindowNormalization”
和真正的
或假
。如果未指定的,窗口规范化
默认为真正的
。
数据类型:符合逻辑的
melSpectrum
—提取梅尔频谱假
(默认)|真正的
提取单侧mel光谱,指定为真正的
或假
。
要设置mel光谱提取的参数,请使用setExtractorParams
:
setExtractorParams (aFE“光谱”,“名称”,值)
“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
默认为“线性”
。
数据类型:符合逻辑的
erbSpectrum
—提取ERB频谱假
(默认)|真正的
提取单侧ERB谱,指定为真正的
或假
。
设置ERB光谱提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“erbSpectrum”,“名称”,值)
“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)假
(默认)|真正的
提取梅尔频率倒频谱系数(MFCC),指定为真正的
或假
。
设置MFCC提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“mfcc”,“名称”,值)
“NumCoeffs”
–为每个窗口返回的系数数,指定为逗号分隔对,由“NumCoeffs”
一个正整数。如果未指定的,NumCoeffs
默认为13
。
“DeltaWindowLength”
——增量窗口长度,指定为逗号分隔的对,由“DeltaWindowLength”
和大于2的奇数整数。如果未指定,三角窗长度
默认为9
。此参数影响mfccDelta
和mfccDeltaDelta
特性。
“整改”
——非线性整流的类型,指定为逗号分隔对,由“整改”
和“日志”
或“立方根”
。
计算了梅尔频率倒频谱系数melSpectrum。
数据类型:符合逻辑的
mfccDelta
—MFCC的delta提取假
(默认)|真正的
提取MFCC的delta,指定为真正的
或假
。
delta MFCC是根据提取的MFCC计算出来的。参数设置mfcc
影响mfccDelta
。
数据类型:符合逻辑的
mfccDeltaDelta
—提取MFCC的delta-delta假
(默认)|真正的
提取MFCC的delta-delta,指定为真正的
或假
。
增量MFCC是基于提取的MFCC计算的。参数设置为mfcc
影响mfccDeltaDelta
。
数据类型:符合逻辑的
gtcc
—提取伽玛酮倒谱系数(GTCC)假
(默认)|真正的
提取伽玛酮倒谱系数(GTCC),指定为真正的
或假
。
设置GTCC提取的参数,请使用setExtractorParams
:
setExtractorParams (aFE“gtcc”,“名称”,值)
“NumCoeffs”
–为每个窗口返回的系数数,指定为逗号分隔对,由“NumCoeffs”
一个正整数。如果未指定的,NumCoeffs
默认为13
。
“DeltaWindowLength”
——增量窗口长度,指定为逗号分隔的对,由“DeltaWindowLength”
和大于2的奇数整数。如果未指定,三角窗长度
默认为9
。此参数影响gtccDelta
和gtccDeltaDelta
特性。
“整改”
——非线性整流的类型,指定为逗号分隔对,由“整改”
和“日志”
或“立方根”
。
伽玛通倒谱系数是用erbSpectrum。
数据类型:符合逻辑的
gtccDelta
—提取GTCC的delta假
(默认)|真正的
提取GTCC的delta,指定为真正的
或假
。
增量GTCC是根据提取的GTCC计算出来的。参数设置gtcc
影响gtccDelta
。
数据类型:符合逻辑的
gtccDeltaDelta
—提取GTCC的delta-delta假
(默认)|真正的
提取GTCC的增量,指定为真正的
或假
。
delta-delta GTCC是根据提取的GTCC计算出来的。参数设置gtcc
影响gtccDeltaDelta
。
数据类型:符合逻辑的
spectralCentroid
—提取频谱质心假
(默认)|真正的
spectralCrest
—提取光谱波峰假
(默认)|真正的
spectralDecrease
—提取光谱减少假
(默认)|真正的
spectralEntropy
—提取谱熵假
(默认)|真正的
spectralFlatness
—提取光谱平坦假
(默认)|真正的
spectralFlux
—提取谱通量假
(默认)|真正的
提取光谱通量,指定为真正的
或假
。
根据以下光谱表示之一计算光谱通量,如SpectralDescriptorInput属性:
要设置光谱通量提取的参数,请使用setExtractorParams
:
setExtractorParams (aFE“spectralFlux”,“名称”,值)
“NormType”
——用于计算谱通量的Norm类型,指定为逗号分隔对组成“NormType”
和一个1.
或2.
。如果未指定的,NormType
默认为2.
。
数据类型:符合逻辑的
幽灵性荨麻疹
—提取光谱峰态假
(默认)|真正的
spectralRolloffPoint
—提取光谱滚动点假
(默认)|真正的
提取光谱rolrolff点,指定为真正的
或假
。
根据以下光谱表示之一计算光谱衰减点,如SpectralDescriptorInput属性:
要设置光谱滚点提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“spectralRolloffPoint”,“名称”,值)
“阈值”
——rolrolpoint的阈值,指定为逗号分隔的对“阈值”
和范围(0,1)中的标量。如果未指定,阈值
默认为0.95
。
数据类型:符合逻辑的
spectralSkewness
—提取光谱偏态假
(默认)|真正的
光谱坡度
—提取光谱斜率假
(默认)|真正的
spectralSpread
—提取频谱扩展假
(默认)|真正的
球场
—提取音高假
(默认)|真正的
提取音高,指定为真正的
或假
。
要设置基音提取的参数,请使用setExtractorParams
:
setExtractorParams (aFE“音高”,“名称”,值)
“方法”
——用于计算音高的方法,指定为由逗号分隔的对组成“方法”
和“PEF”
,“NCF”
,“CEP”
,“韩”
,或“SRH”
。如果未指定的,方法
默认为“NCF”
。有关可用的音高提取方法的描述,请参见球场
。
“范围”
–搜索以Hz为单位的基音的范围,指定为逗号分隔的对,包括“范围”
和一个两元素行向量,其值递增。如果没有说明,范围
默认为[50,400]
。
“MedianFilterLength”
——中值滤波器长度,用于随时间平滑的基音估计,指定为逗号分隔对组成“MedianFilterLength”
一个正整数。如果未指定的,MedianFilterLength
默认为1.
(无中值滤波)。
数据类型:符合逻辑的
harmonicRatio
—提取谐波比率假
(默认)|真正的
提取谐波比率,指定为真正的
或假
。
数据类型:符合逻辑的
提取 |
提取音频功能 |
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中改变
这个audioDelta
函数现在用于计算mfccDelta
,mfccDeltaDelta
,gtccDelta
,gtccDeltaDelta
。这个audioDelta
算法的启动行为与之前的算法不同。用于计算增量的默认窗口长度已从2.
来9
。的窗长2.
已不再支持。金宝app
使用注意事项及限制:
您不能直接从audioFeatureExtractor
。通过返回的函数可以生成C/ c++代码generateMATLABFunction
。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区站点不适合您所在位置的访问。