简化音频特征提取
audioFeatureExtractor
多个音频特征提取器封装到一个精简和模块化的实现。
创建一个音频特征提取器默认属性值。aFE
= audioFeatureExtractor ()
指定默认的属性aFE
= audioFeatureExtractor (名称,值
)aFE
使用一个或多个名称-值对参数。
窗口
- - - - - -分析窗口汉明(1024年,“周期性”)
(默认)|真正的向量分析窗口中,指定为一个真正的向量。
数据类型:单
|双
OverlapLength
- - - - - -重叠相邻分析窗口的长度512年
(默认)|整数范围在[0,元素个数(窗口
)
)重叠相邻的长度分析窗口,指定为一个整数范围在[0,元素个数(窗口)
)。
数据类型:单
|双
FFTLength
- - - - - -FFT长度[]
(默认)|正整数FFT长度指定为一个整数。默认的,[]
,意味着FFT长度等于窗口长度,(元素个数(窗口)
)。
数据类型:单
|双
SampleRate
- - - - - -输入采样率(赫兹)44100年
(默认)|负的标量输入采样率在赫兹,指定为负的标量。
数据类型:单
|双
SpectralDescriptorInput
- - - - - -输入谱描述符“linearSpectrum”
(默认)|“melSpectrum”
|“barkSpectrum”
|“erbSpectrum”
输入谱描述符指定为“linearSpectrum”
,“melSpectrum”
,“barkSpectrum”
,或“erbSpectrum”
。
光谱描述符影响这个属性是:
光谱谱描述符的输入输出相应的功能是一样的:
例如,如果您设置“SpectralDescriptorInput”
来“barkSpectrum”
,“spectralCentroid”
来真正的
,然后aFE
返回默认的质心树皮频谱。
[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);aFE = audioFeatureExtractor (“SampleRate”fs,…“SpectralDescriptorInput”,“barkSpectrum”,…“spectralCentroid”,真正的);audioIn barkSpectralCentroid =提取(aFE);
barkSpectrum
使用setExtractorParams
,那么默认的树皮光谱谱描述符的输入。例如,如果您的电话setExtractorParams (aFE“barkSpectrum”、“NumBands”, 40)
,然后aFE
返回40-band树皮频谱的重心。
setExtractorParams (aFE“barkSpectrum”,“NumBands”,40)bark40SpectralCentroid =提取(aFE audioIn);
数据类型:字符
|字符串
linearSpectrum
- - - - - -提取线性光谱假
(默认)|真正的
提取的线性范围,指定为真正的
或假
。
设置参数的线性光谱提取、使用setExtractorParams
:
setExtractorParams (aFE“linearSpectrum”,“名称”,值)
“FrequencyRange”
——在赫兹频率提取的光谱范围,指定为逗号分隔组成的“FrequencyRange”
双元素向量和越来越多的范围(0,SampleRate/ 2)。如果未指定的,FrequencyRange
默认为[0,
。SampleRate
/ 2)
“SpectrumType”
——光谱类型,指定为逗号分隔组成的“SpectrumType”
和“权力”
或“级”
。如果未指定的,SpectrumType
默认为“权力”
。
“WindowNormalization”
——应用标准化窗口,指定为逗号分隔组成的“WindowNormalization”
和真正的
或假
。如果未指定的,WindowNormalization
默认为真正的
。
数据类型:逻辑
melSpectrum
- - - - - -提取梅尔频谱假
(默认)|真正的
提取片面梅尔频谱,指定为真正的
或假
。
梅尔的设置参数谱提取、使用setExtractorParams
:
setExtractorParams (aFE“melSpectrum”,“名称”,值)
“FrequencyRange”
——在赫兹频率提取的光谱范围,指定为逗号分隔组成的“FrequencyRange”
双元素向量和越来越多的范围(0,SampleRate/ 2)。如果未指定的,FrequencyRange
默认为[0,
。SampleRate
/ 2)
“SpectrumType”
——光谱类型,指定为逗号分隔组成的“SpectrumType”
和“权力”
或“级”
。如果未指定的,SpectrumType
默认为“权力”
。
“NumBands”
——梅尔乐队的数量,指定为逗号分隔组成的“NumBands”
和一个整数。如果未指定的,NumBands
默认为32
。
“FilterBankNormalization”
——标准化应用于带通滤波器,指定为逗号分隔组成的“FilterBankNormalization”
和“带宽”
,“区域”
,或“没有”
。如果未指定的,FilterBankNormalization
默认为“带宽”
。
“WindowNormalization”
——应用标准化窗口,指定为逗号分隔组成的“WindowNormalization”
和真正的
或假
。如果未指定的,WindowNormalization
默认为真正的
。
“FilterBankDesignDomain”
——域的滤波器组设计,指定为逗号分隔组成的FilterBankDesignDomain
,要么“线性”
或“扭曲”
。如果未指定的,FilterBankDesignDomain
默认为“线性”
。
数据类型:逻辑
barkSpectrum
- - - - - -树皮中提取光谱假
(默认)|真正的
树皮中提取的光谱,指定为真正的
或假
。
树皮的设置参数谱提取、使用setExtractorParams
:
setExtractorParams (aFE“barkSpectrum”,“名称”,值)
“FrequencyRange”
——在赫兹频率提取的光谱范围,指定为逗号分隔组成的“FrequencyRange”
双元素向量和越来越多的范围(0,SampleRate/ 2)。如果未指定的,FrequencyRange
默认为[0,
。SampleRate
/ 2)
“SpectrumType”
——光谱类型,指定为逗号分隔组成的“SpectrumType”
和“权力”
或“级”
。如果未指定的,SpectrumType
默认为“权力”
。
“NumBands”
——树皮乐队的数量,指定为逗号分隔组成的“NumBands”
和一个整数。如果未指定的,NumBands
默认为32
。
“FilterBankNormalization”
——标准化应用于带通滤波器,指定为逗号分隔组成的“FilterBankNormalization”
和“带宽”
,“区域”
,或“没有”
。如果未指定的,FilterBankNormalization
默认为“带宽”
。
“WindowNormalization”
——应用标准化窗口,指定为逗号分隔组成的“WindowNormalization”
和真正的
或假
。如果未指定的,WindowNormalization
默认为真正的
。
“FilterBankDesignDomain”
——域的滤波器组设计,指定为逗号分隔组成的FilterBankDesignDomain
,要么“线性”
或“扭曲”
。如果未指定的,FilterBankDesignDomain
默认为“线性”
。
数据类型:逻辑
erbSpectrum
- - - - - -提取ERB频谱假
(默认)|真正的
提取片面ERB频谱,指定为真正的
或假
。
设置参数ERB光谱提取、使用setExtractorParams
:
setExtractorParams (aFE“erbSpectrum”,“名称”,值)
“FrequencyRange”
——在赫兹频率提取的光谱范围,指定为逗号分隔组成的“FrequencyRange”
双元素向量和越来越多的范围(0,SampleRate/ 2)。如果未指定的,FrequencyRange
默认为[0,
。SampleRate
/ 2)
“SpectrumType”
——光谱类型,指定为逗号分隔组成的“SpectrumType”
和“权力”
或“级”
。如果未指定的,SpectrumType
默认为“权力”
。
“NumBands”
——ERB乐队的数量,指定为逗号分隔组成的“NumBands”
和一个整数。如果未指定的,NumBands
默认为(即:
。hz2erb
(FrequencyRange (2))hz2erb
(FrequencyRange (1)))
“FilterBankNormalization”
——标准化应用于带通滤波器,指定为逗号分隔组成的“FilterBankNormalization”
和“带宽”
,“区域”
,或“没有”
。如果未指定的,FilterBankNormalization
默认为“带宽”
。
“WindowNormalization”
——应用标准化窗口,指定为逗号分隔组成的“WindowNormalization”
和真正的
或假
。如果未指定的,WindowNormalization
默认为真正的
。
数据类型:逻辑
mfcc
- - - - - -提取mel-frequency cepstral系数(MFCC)假
(默认)|真正的
提取mel-frequency cepstral系数(MFCC),指定为真正的
或假
。
设置MFCC参数提取、使用setExtractorParams
:
setExtractorParams (aFE“mfcc”,“名称”,值)
“NumCoeffs”
——返回系数的数量为每个窗口中,指定为一双的逗号分隔组成的“NumCoeffs”
和一个正整数。如果未指定的,NumCoeffs
默认为13
。
“DeltaWindowLength”
——三角洲窗口长度指定为逗号分隔组成的“DeltaWindowLength”
和一个奇数大于2。如果未指定的,DeltaWindowLength
默认为9
。这个参数影响mfccDelta
和mfccDeltaDelta
特性。
“整改”
——类型的非线性整流,指定为逗号分隔组成的“整改”
和“日志”
或“立方根”
。
的mel-frequency cepstral系数计算使用melSpectrum。
数据类型:逻辑
mfccDelta
- - - - - -提取δ(MFCC假
(默认)|真正的
δ(MFCC提取,指定为真正的
或假
。
三角洲MFCC计算基于提取的MFCC。参数设置mfcc
影响mfccDelta
。
数据类型:逻辑
mfccDeltaDelta
- - - - - -的MFCC提取δ假
(默认)|真正的
MFCC提取δ,指定为真正的
或假
。
δ的MFCC计算基于提取的MFCC。参数设置mfcc
影响mfccDeltaDelta
。
数据类型:逻辑
gtcc
- - - - - -提取gammatone cepstral系数(GTCC)假
(默认)|真正的
提取gammatone cepstral系数(GTCC),指定为真正的
或假
。
GTCC的设置参数提取、使用setExtractorParams
:
setExtractorParams (aFE“gtcc”,“名称”,值)
“NumCoeffs”
——返回系数的数量为每个窗口中,指定为一双的逗号分隔组成的“NumCoeffs”
和一个正整数。如果未指定的,NumCoeffs
默认为13
。
“DeltaWindowLength”
——三角洲窗口长度指定为逗号分隔组成的“DeltaWindowLength”
和一个奇数大于2。如果未指定的,DeltaWindowLength
默认为9
。这个参数影响gtccDelta
和gtccDeltaDelta
特性。
“整改”
——类型的非线性整流,指定为逗号分隔组成的“整改”
和“日志”
或“立方根”
。
的gammatone cepstral系数计算使用erbSpectrum。
数据类型:逻辑
gtccDelta
- - - - - -提取GTCC的δ假
(默认)|真正的
提取GTCC的三角洲,指定为真正的
或假
。
三角洲GTCC基于提取的GTCC的计算。参数设置gtcc
影响gtccDelta
。
数据类型:逻辑
gtccDeltaDelta
- - - - - -提取GTCC的δ假
(默认)|真正的
提取GTCC的δ,指定为真正的
或假
。
的δGTCC基于提取的GTCC的计算。参数设置gtcc
影响gtccDeltaDelta
。
数据类型:逻辑
spectralCentroid
- - - - - -提取频谱质心假
(默认)|真正的
spectralCrest
- - - - - -提取光谱波峰假
(默认)|真正的
spectralDecrease
- - - - - -提取光谱减少假
(默认)|真正的
spectralEntropy
- - - - - -提取谱熵假
(默认)|真正的
spectralFlatness
- - - - - -提取光谱平坦假
(默认)|真正的
spectralFlux
- - - - - -提取谱通量假
(默认)|真正的
提取谱通量,指定为真正的
或假
。
谱通量计算的光谱表征后,指定的SpectralDescriptorInput属性:
谱通量的设置参数提取、使用setExtractorParams
:
setExtractorParams (aFE“spectralFlux”,“名称”,值)
“NormType”
——规范类型用来计算谱通量,指定为逗号分隔组成的“NormType”
和一个1
或2
。如果未指定的,NormType
默认为2
。
数据类型:逻辑
spectralKurtosis
- - - - - -提取光谱峰态假
(默认)|真正的
spectralRolloffPoint
- - - - - -提取光谱滚边点假
(默认)|真正的
提取光谱滚边点,指定为真正的
或假
。
光谱滚边点计算的光谱表征后,指定的SpectralDescriptorInput属性:
设置参数的光谱滚边点提取、使用setExtractorParams
:
setExtractorParams (aFE“spectralRolloffPoint”,“名称”,值)
“阈值”
——滚边点阈值,指定为逗号分隔组成的“阈值”
和一个标量范围(0,1)。如果未指定的,阈值
默认为0.95
。
数据类型:逻辑
spectralSkewness
- - - - - -提取光谱偏态假
(默认)|真正的
spectralSlope
- - - - - -提取光谱斜率假
(默认)|真正的
spectralSpread
- - - - - -提取光谱扩散假
(默认)|真正的
球场
- - - - - -提取音高假
(默认)|真正的
提取音高,指定为真正的
或假
。
设置参数的提取,使用setExtractorParams
:
setExtractorParams (aFE“节”,“名称”,值)
“方法”
——方法用于计算,指定为逗号分隔组成的“方法”
和“PEF”
,“NCF”
,“CEP”
,“韩”
,或“SRH”
。如果未指定的,方法
默认为“NCF”
。可用沥青萃取方法的描述,请参阅球场
。
“范围”
——范围内搜索赫兹的音高,指定为逗号分隔组成的“范围”
双元素行向量和增加价值。如果未指定的,范围
默认为[50400]
。
“MedianFilterLength”
——中值滤波器长度用来光滑音高估计随着时间的推移,指定为逗号分隔组成的“MedianFilterLength”
和一个正整数。如果未指定的,MedianFilterLength
默认为1
(无中值滤波)。
数据类型:逻辑
harmonicRatio
- - - - - -提取谐波比率假
(默认)|真正的
提取谐波比率,指定为真正的
或假
。
数据类型:逻辑
提取 |
提取音频功能 |
setExtractorParams |
为个人特征提取器设置默认的参数值 |
信息 |
输出映射器参数和个人特性 |
generateMATLABFunction |
创建MATLAB功能兼容C / c++代码生成 |
读入一个音频信号。
[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);
创建一个audioFeatureExtractor
对象,提取MFCC,δMFCC,δMFCC,音高,音频信号的频谱质心。使用30 ms分析窗口与20 ms重叠。
aFE = audioFeatureExtractor (…“SampleRate”fs,…“窗口”汉明(圆(0.03 * fs),“周期”),…“OverlapLength”而圆(0.02 * fs),…“mfcc”,真的,…“mfccDelta”,真的,…“mfccDeltaDelta”,真的,…“节”,真的,…“spectralCentroid”,真正的);
调用提取
提取音频信号的音频特性。
特点=提取(aFE audioIn);
使用信息
特征提取的确定哪些列矩阵对应请求的音高提取。
idx = info (aFE)
idx =结构体字段:mfcc:(1 2 3 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节:41
随着时间的推移情节发现音高。
t = linspace(0,大小(audioIn 1) / fs,大小(功能,1));情节(t)特性(:,idx.pitch))标题(“节”)包含(“时间(s)”)ylabel (的频率(赫兹))
创建一个音频数据存储指向音频样本包含音频工具箱®。
文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);
找到所有的文件对应44.1 kHz的采样率子集
数据存储。
keepFile = cellfun (@ (x)包含(x,“44 p1”),ads.Files);广告=子集(广告,keepFile);
将数据转换成高
数组中。高
数组是只有当您显式地请求它们使用评估收集
。MATLAB®自动优化计算排队通过最小化通过数据的数量。如果你有并行计算工具箱™,你可以计算分布到多台机器。音频数据的表示米1高单元阵列,米在音频数据存储文件的数量。
adsTall =高(广告)
开始平行池(parpool)使用“本地”概要文件…连接到平行池(工人数量:6)。adsTall = M×1高细胞数组{539648×1双}{227497×1双}{8000×1双}{685056×1双}{882688×2双}{1115760×2双}{505200×2双}{3195904×2双}::::
创建一个audioFeatureExtractor
对象提取梅尔谱、树皮频谱ERB光谱,从每个音频文件和线性光谱。使用默认的窗口和重叠长度频谱分析提取。
aFE = audioFeatureExtractor (“SampleRate”,44.1 e3,…“melSpectrum”,真的,…“barkSpectrum”,真的,…“erbSpectrum”,真的,…“linearSpectrum”,真正的);
定义一个cellfun
函数,以便从每个细胞中提取音频特性的高数组。调用收集
评价高的数组。
specsTall = cellfun (@ (x)提取(aFE x), adsTall,“UniformOutput”、假);规格=收集(specsTall);
评估高表达式使用并行池“当地”:通过1对1:在12秒完成评估在12秒完成
的规格
变量收集回来numFiles1单元阵列,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属性:属性窗口:[1024×1双]OverlapLength: 512 SampleRate: 44100 FFTLength: [] SpectralDescriptorInput:‘barkSpectrum mfccDeltaDelta启用功能,spectralCentroid, spectralFlux,音高,harmonicRatio linearSpectrum禁用功能,melSpectrum, barkSpectrum, erbSpectrum, mfcc, mfccDelta gtcc、gtccDelta, gtccDeltaDelta, spectralCrest, spectralDecrease, spectralEntropy spectralFlatness, spectralKurtosis, spectralRolloffPoint, spectralSkewness, spectralSlope, spectralSpread提取功能,设置相应的属性为true。例如,obj。mfcc= true, adds mfcc to the list of enabled features.
请注意
因为audioFeatureExtractor
重用中介表示,输出的特性audioFeatureExtractor
可能不符合缺省配置相应的个人特征提取器的输出特性。
行为改变R2020b
的audioDelta
函数是用于计算mfccDelta
,mfccDeltaDelta
,gtccDelta
,gtccDeltaDelta
。的audioDelta
算法有不同的创业行为比之前的算法。所使用的默认窗口长度计算增量已经改变了2
来9
。δ窗口的长度2
不再支持。金宝app
使用笔记和限制:
你不能直接生成代码audioFeatureExtractor
。你可以生成的C / c++代码从函数返回generateMATLABFunction
。
다음MATLAB명령에해당하는링크를클릭했습니다。
명령을실행하려면MATLAB명령창에입력하십시오。웹브라우저는MATLAB명령을지원하지않습니다。
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。