流线型音频特征提取
audioFeatureExtractor
将多个音频特征提取器封装到一个流线型和模块化实现中。
创建带有默认属性值的音频特征提取器。aFE
= audioFeatureExtractor ()
的非默认属性aFE
=音频特征提取程序(名称、值
)aFE
使用一个或多个名称-值对参数。
窗口
- - - - - -分析窗口汉明(1024年,“周期性”)
(默认)|实向量分析窗口,指定为实向量。
数据类型:单
|双
OverlapLength
- - - - - -相邻分析窗口重叠长度512
(默认)|范围为[0,努梅尔(窗口
)
)相邻分析窗口的重叠长度,指定为范围[0,努梅尔(窗口)
).
数据类型:单
|双
FFTLength
- - - - - -FFT长度[]
(默认)|正整数FFT长度,指定为整数。默认值为,[]
,表示FFT长度等于窗口长度(努梅尔(窗口)
).
数据类型:单
|双
SampleRate
- - - - - -输入采样率(Hz)44100
(默认)|非负标量以Hz为单位的输入采样率,指定为非负标量。
数据类型:单
|双
SpectralDescriptorInput
- - - - - -输入光谱描述符“线性光谱”
(默认)|“melSpectrum”
|“barkSpectrum”
|“erbSpectrum”
输入光谱描述符,指定为“线性光谱”
,“melSpectrum”
,“barkSpectrum”
,或“erbSpectrum”
.
受此属性影响的光谱描述符包括:
输入到光谱描述符的光谱与对应特征的输出相同:
例如,如果你设置“SpectralDescriptorInput”
来“barkSpectrum”
和“spectralCentroid”
来符合事实的
,然后aFE
返回默认Bark谱的质心。
[audioIn,fs]=音频读取(“Counting-16-44p1-mono-15secs.wav”);aFE = audioFeatureExtractor (“SampleRate”,财政司司长,...“SpectralDescriptorInput”,“barkSpectrum”,...“spectralCentroid”,对);Barkspectrocalcentroid=提取物(aFE,audioIn);
barkSpectrum
使用setExtractorParams
,则非默认的Bark谱为谱描述符的输入。例如,如果你打电话setExtractorParams(aFE,“巴克光谱”,“麻木”,40)
,然后aFE
返回40波段巴克光谱的质心。
setExtractorParams (aFE“barkSpectrum”,“NumBands”bark40SpectralCentroid = extract(aFE,audioIn);
数据类型:字符
|字符串
FeatureVectorLength
- - - - - -从抽取中输出的特征数linearSpectrum
- - - - - -提取线性光谱错误的
(默认)|符合事实的
提取单侧线性谱,指定为符合事实的
或错误的
.
设置线性光谱提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“线性光谱”,“姓名”,值)
“FrequencyRange”
–以Hz为单位的提取频谱的频率范围,指定为逗号分隔对,包括“FrequencyRange”
以及一个数字在[0,SampleRate/ 2)。如果未指定的,FrequencyRange
默认为[0,
.SampleRate
/ 2)
“SpectrumType”
——频谱类型,指定为逗号分隔的对,由“SpectrumType”
和“权力”
或“级”
.如果未指定的,SpectrumType
默认为“权力”
.
“窗口规范化”
——应用窗口规范化,指定为逗号分隔的对“窗口规范化”
和符合事实的
或错误的
.如果未指定的,WindowNormalization
默认为符合事实的
.
数据类型:逻辑
melSpectrum
- - - - - -提取梅尔频谱错误的
(默认)|符合事实的
提取单侧mel光谱,指定为符合事实的
或错误的
.
设置mel光谱提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“melSpectrum”,“姓名”,值)
“FrequencyRange”
–以Hz为单位的提取频谱的频率范围,指定为逗号分隔对,包括“FrequencyRange”
以及一个数字在[0,SampleRate/ 2)。如果未指定的,FrequencyRange
默认为[0,
.SampleRate
/ 2)
“SpectrumType”
——频谱类型,指定为逗号分隔的对,由“SpectrumType”
和“权力”
或“级”
.如果未指定的,SpectrumType
默认为“权力”
.
“NumBands”
——mel条带的数量,指定为逗号分隔对“NumBands”
和一个整数。如果未指定的,NumBands
默认为32
.
“FilterBankNormalization”
——应用于带通滤波器的归一化,指定为逗号分隔对组成“FilterBankNormalization”
和“带宽”
,“区域”
,或“没有”
.如果未指定的,滤波器组归一化
默认为“带宽”
.
“窗口规范化”
——应用窗口规范化,指定为逗号分隔的对“窗口规范化”
和符合事实的
或错误的
.如果未指定的,WindowNormalization
默认为符合事实的
.
“FilterBankDesignDomain”
——设计滤波器组的域,指定为逗号分隔对,由FilterBankDesignDomain
,要么“线性”
或“扭曲”
.如果未指定的,FilterBankDesignDomain
默认为“线性”
.
数据类型:逻辑
barkSpectrum
- - - - - -树皮中提取光谱错误的
(默认)|符合事实的
提取单侧树皮光谱,指定为符合事实的
或错误的
.
要设置树皮光谱提取的参数,请使用setExtractorParams
:
setExtractorParams (aFE“barkSpectrum”,“姓名”,值)
“FrequencyRange”
–以Hz为单位的提取频谱的频率范围,指定为逗号分隔对,包括“FrequencyRange”
以及一个数字在[0,SampleRate/ 2)。如果未指定的,FrequencyRange
默认为[0,
.SampleRate
/ 2)
“SpectrumType”
——频谱类型,指定为逗号分隔的对,由“SpectrumType”
和“权力”
或“级”
.如果未指定的,SpectrumType
默认为“权力”
.
“NumBands”
——树皮带的数量,指定为逗号分隔的对,由“NumBands”
和一个整数。如果未指定的,NumBands
默认为32
.
“FilterBankNormalization”
——应用于带通滤波器的归一化,指定为逗号分隔对组成“FilterBankNormalization”
和“带宽”
,“区域”
,或“没有”
.如果未指定的,滤波器组归一化
默认为“带宽”
.
“窗口规范化”
——应用窗口规范化,指定为逗号分隔的对“窗口规范化”
和符合事实的
或错误的
.如果未指定的,WindowNormalization
默认为符合事实的
.
“FilterBankDesignDomain”
——设计滤波器组的域,指定为逗号分隔对,由FilterBankDesignDomain
,要么“线性”
或“扭曲”
.如果未指定的,FilterBankDesignDomain
默认为“线性”
.
数据类型:逻辑
铒波谱
- - - - - -提取ERB频谱错误的
(默认)|符合事实的
提取单侧ERB谱,指定为符合事实的
或错误的
.
设置ERB光谱提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“erbSpectrum”,“姓名”,值)
“FrequencyRange”
–以Hz为单位的提取频谱的频率范围,指定为逗号分隔对,包括“FrequencyRange”
以及一个数字在[0,SampleRate/ 2)。如果未指定的,FrequencyRange
默认为[0,
.SampleRate
/ 2)
“SpectrumType”
——频谱类型,指定为逗号分隔的对,由“SpectrumType”
和“权力”
或“级”
.如果未指定的,SpectrumType
默认为“权力”
.
“NumBands”
——ERB带的个数,指定为逗号分隔对“NumBands”
和一个整数。如果未指定的,NumBands
默认为(即:
.hz2erb
(频率范围(2))-hz2erb
(FrequencyRange (1)))
“FilterBankNormalization”
——应用于带通滤波器的归一化,指定为逗号分隔对组成“FilterBankNormalization”
和“带宽”
,“区域”
,或“没有”
.如果未指定的,滤波器组归一化
默认为“带宽”
.
“窗口规范化”
——应用窗口规范化,指定为逗号分隔的对“窗口规范化”
和符合事实的
或错误的
.如果未指定的,WindowNormalization
默认为符合事实的
.
数据类型:逻辑
mfcc
- - - - - -提取mel频率倒谱系数(MFCC)错误的
(默认)|符合事实的
提取梅尔频率倒频谱系数(MFCC),指定为符合事实的
或错误的
.
设置MFCC提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“mfcc”,“姓名”,值)
“Numcoefs”
——每个窗口返回的系数的数量,指定为逗号分隔的对“Numcoefs”
一个正整数。如果未指定的,NumCoeffs
默认为13
.
“DeltaWindowLength”
——增量窗口长度,指定为逗号分隔的对,由“DeltaWindowLength”
和一个大于2的奇数。如果未指定的,DeltaWindowLength
默认为9
.此参数影响mfccDelta
和mfccDeltaDelta
特征。
“整改”
–非线性校正类型,指定为逗号分隔对,包括“整改”
和“日志”
或“立方根”
.
mel频率倒谱系数使用melSpectrum.
数据类型:逻辑
mfccDelta
- - - - - -提取MFCC的delta错误的
(默认)|符合事实的
提取MFCC的delta,指定为符合事实的
或错误的
.
delta MFCC是根据提取的MFCC计算出来的。参数设置mfcc
影响mfccDelta
.
数据类型:逻辑
mfccDeltaDelta
- - - - - -提取MFCC的delta错误的
(默认)|符合事实的
提取MFCC的delta-delta,指定为符合事实的
或错误的
.
delta-delta MFCC是根据提取的MFCC进行计算的。参数设置mfcc
影响mfccDeltaDelta
.
数据类型:逻辑
gtcc
- - - - - -提取伽玛酮倒谱系数(GTCC)错误的
(默认)|符合事实的
提取伽玛酮倒谱系数(GTCC),指定为符合事实的
或错误的
.
要设置GTCC提取的参数,请使用setExtractorParams
:
setExtractorParams (aFE“gtcc”,“姓名”,值)
“Numcoefs”
——每个窗口返回的系数的数量,指定为逗号分隔的对“Numcoefs”
一个正整数。如果未指定的,NumCoeffs
默认为13
.
“DeltaWindowLength”
——增量窗口长度,指定为逗号分隔的对,由“DeltaWindowLength”
和一个大于2的奇数。如果未指定的,DeltaWindowLength
默认为9
.此参数影响gtccDelta
和gtccDeltaDelta
特征。
“整改”
–非线性校正类型,指定为逗号分隔对,包括“整改”
和“日志”
或“立方根”
.
伽玛通倒谱系数是用铒波谱.
数据类型:逻辑
gtccDelta
- - - - - -提取GTCC的delta错误的
(默认)|符合事实的
提取GTCC的增量,指定为符合事实的
或错误的
.
增量GTCC是根据提取的GTCC计算出来的。参数设置gtcc
影响gtccDelta
.
数据类型:逻辑
gtccDeltaDelta
- - - - - -提取GTCC的delta-delta错误的
(默认)|符合事实的
提取GTCC的delta-delta,指定为符合事实的
或错误的
.
delta-delta GTCC是根据提取的GTCC计算出来的。参数设置gtcc
影响gtccDeltaDelta
.
数据类型:逻辑
spectralCentroid
- - - - - -提取频谱质心错误的
(默认)|符合事实的
spectralCrest
- - - - - -提取波峰错误的
(默认)|符合事实的
光谱减退
- - - - - -提取光谱减少错误的
(默认)|符合事实的
spectralEntropy
- - - - - -提取光谱熵错误的
(默认)|符合事实的
spectralFlatness
- - - - - -提取光谱平坦错误的
(默认)|符合事实的
光谱通量
- - - - - -提取谱通量错误的
(默认)|符合事实的
提取光谱通量,指定为符合事实的
或错误的
.
根据下列光谱表示之一计算光谱通量,如SpectralDescriptorInput属性:
要设置光谱通量提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“spectralFlux”,“姓名”,值)
“标准类型”
——用于计算谱通量的Norm类型,指定为逗号分隔对组成“标准类型”
和1
或2
.如果未指定的,NormType
默认为2
.
数据类型:逻辑
spectralKurtosis
- - - - - -提取光谱峰态错误的
(默认)|符合事实的
光谱衰减点
- - - - - -提取光谱滚动点错误的
(默认)|符合事实的
提取光谱rolrolff点,指定为符合事实的
或错误的
.
谱的滚动点是根据下列的谱表示之一计算的,如SpectralDescriptorInput属性:
要设置光谱滚点提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“spectralRolloffPoint”,“姓名”,值)
“阈值”
——rolrolpoint的阈值,指定为逗号分隔的对“阈值”
和范围(0,1)中的标量。如果未指定,阈值
默认为0.95
.
数据类型:逻辑
spectralSkewness
- - - - - -提取光谱偏态错误的
(默认)|符合事实的
spectralSlope
- - - - - -提取光谱斜率错误的
(默认)|符合事实的
光谱分布
- - - - - -提取光谱扩散错误的
(默认)|符合事实的
抛
- - - - - -提取音高错误的
(默认)|符合事实的
提取音高,指定为符合事实的
或错误的
.
设置音高提取的参数,使用setExtractorParams
:
setExtractorParams (aFE“节”,“姓名”,值)
“方法”
–用于计算节距的方法,指定为逗号分隔对,包括“方法”
和“PEF”
,“NCF”
,“CEP”
,“LHS”
,或“SRH”
.如果未指定的,方法
默认为“NCF”
.有关可用基音提取方法的说明,请参阅抛
.
“范围”
——在Hz范围内搜索音调,指定为逗号分隔的对,由“范围”
以及一个值递增的两元素行向量。如果未指定的,范围
默认为[50400]
.
“MedianFilterLength”
–用于随时间平滑基音估计的中值滤波器长度,指定为逗号分隔对,包括“MedianFilterLength”
一个正整数。如果未指定的,MedianFilterLength
默认为1
(无中值滤波)。
数据类型:逻辑
和声
- - - - - -提取谐波比率错误的
(默认)|符合事实的
提取谐波比,指定为符合事实的
或错误的
.
数据类型:逻辑
提取 |
提取音频功能 |
setExtractorParams |
为单个特征提取器设置非默认参数值 |
信息 |
输出映射和单个特征提取参数 |
generateMATLABFunction |
创建MATLAB函数兼容C/ c++代码生成 |
读入音频信号。
[audioIn,fs]=音频读取(“计数-16-44p1-mono-15秒波形”);
创建一个audioFeatureExtractor
对象提取音频信号的MFCC、delta MFCC、delta-delta MFCC、音调和谱心。使用30毫秒的分析窗口,20毫秒重叠。
aFE = audioFeatureExtractor (...“SampleRate”,财政司司长,...“窗口”汉明(圆(0.03 * fs),“周期”),...“OverlapLength”而圆(0.02 * fs),...“mfcc”,真的,...“mfccDelta”,真的,...“mfccDeltaDelta”,真的,...“节”,真的,...“spectralCentroid”,真正的);
调用提取
从音频信号中提取音频特征。
特点=提取(aFE audioIn);
使用信息
确定特征提取矩阵的哪一列对应于所要求的基音提取。
idx=信息(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 26]mfccDeltaDelta:[27 28 29 30 31 32 33 34 35 36 37 38 39]光谱色:40音高:41
绘制探测到的音高随时间变化的曲线。
t=linspace(0,大小(audioIn,1)/fs,大小(features,1));情节(t,特征(:,idx.pitch))标题(“节”)包含(‘时间’)伊拉贝尔(‘频率(Hz)’)
创建一个音频数据存储,指向audio Toolbox®中包含的音频样本。
folder=fullfile(matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);
找到所有对应于采样率为44.1 kHz的文件,然后子集
数据存储。
keepFile = cellfun (@ (x)包含(x,‘44p1’), ads.Files);广告=子集(广告,keepFile);
将数据转换为高
大堆高
只有当您使用显式请求数组时,才会计算它们收集
.MATLAB®自动优化的排队计算,通过最小化的次数通过数据。如果您有Parallel Computing Toolbox™,则可以将计算分散到多台计算机上。音频数据表示为米-by-1高单元阵列,其中米是音频数据存储中文件的数量。
adsTall =高(广告)
使用“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 = audioFeatureExtractor (“SampleRate”, 44.1 e3,...“melSpectrum”,真的,...“巴克光谱”,真的,...“erbSpectrum”,真的,...“linearSpectrum”,真正的);
定义一个cellfun
函数,以便从高数组的每个单元中提取音频特征。调用收集
求高数组的值。
specsTall=cellfun(@(x)提取(aFE,x),adsTall,“UniformOutput”,false);等级库=聚集(等级库);
使用Parallel Pool 'local'计算tall表达式:- Pass 1 of 1: Completed in 12 sec
的规格
从gather返回的变量是numFiles-by-1 cell array,其中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
重用的中介表示。一些中间表示可以作为特性输出:
例如,要创建提取Bark谱的质心、Bark谱的通量、音调、谐波比和MFCC的delta-delta的对象,请指定audioFeatureExtractor
为:
aFE = audioFeatureExtractor (...“SpectralDescriptorInput”,“barkSpectrum”,...“spectralCentroid”,真的,...“spectralFlux”,真的,...“节”,真的,...“口琴”,真的,...“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中的行为发生了变化
的audioDelta
函数现在用于计算mfccDelta
,mfccDeltaDelta
,gtccDelta
和gtccDeltaDelta
.的audioDelta
算法的启动行为与前一个算法不同。用于计算增量的默认窗口长度已从更改为2
来9
.三角窗长度为2
不再支持。金宝app
使用注意事项及限制:
不能直接从生成代码audioFeatureExtractor
。您可以从返回的函数生成C/C++代码generateMATLABFunction
.
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。