简化音频特征提取
audioFeatureExtractor
封装多个音频特征提取到一个精简和模块化的实现。
创建具有默认属性值的音频特征提取。aFE
= audioFeatureExtractor ()
指定的非默认属性aFE
= audioFeatureExtractor (名称,值
)aFE
使用一个或多个名称 - 值对的参数。
窗口
- - - - - -分析窗口汉明(1024年,“周期性”)
(默认)|真正的矢量分析窗口,指定作为一个真正的载体。
数据类型:单
|双
OverlapLength
- - - - - -相邻分析窗口的重叠长度512
(默认)|范围[0,numel(窗口
)
)相邻的分析窗口的重叠长度,指定为在范围[0的整数,numel(窗口)
)。
数据类型:单
|双
FFTLength
- - - - - -FFT长度[]
(默认)|正整数FFT长度,指定为整数。默认的,[]
是指该FFT长度等于窗口长度,(numel(窗口)
)。
数据类型:单
|双
SampleRate
- - - - - -输入采样率(Hz)的44100
(默认)|非负标输入采样率,单位为Hz,指定为一个非负的标量。
数据类型:单
|双
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带巴克谱的质心。
setExtractorParams(AFE,“barkSpectrum”,“NumBands”,40) bark40SpectralCentroid提取(aFE,audioIn);
数据类型:烧焦
|字符串
linearSpectrum
- - - - - -提取线谱假
(默认)|真正
提取片面线性光谱,指定为真正
要么假
。
对设定参数的线谱进行提取,使用setExtractorParams
:
setExtractorParams(AFE,“linearSpectrum”,“名称”,值)
“FrequencyRange”
- 以Hz为单位提取的频谱的频率范围,指定为逗号分隔的一对组成的“FrequencyRange”
和一个在[0,SampleRate/ 2)。如果未指定的,频率范围
默认[0,
。SampleRate
/ 2)
“SpectrumType”
——频谱类型,指定为逗号分隔对组成的“SpectrumType”
和“权力”
要么“级”
。如果未指定的,SpectrumType
默认“权力”
。
数据类型:逻辑
melSpectrum
- - - - - -提取梅尔谱假
(默认)|真正
提取单边mel谱,指定为真正
要么假
。
要设置参数的mel光谱提取,请使用setExtractorParams
:
setExtractorParams(AFE,“melSpectrum”,“名称”,值)
“FrequencyRange”
- 以Hz为单位提取的频谱的频率范围,指定为逗号分隔的一对组成的“FrequencyRange”
和一个在[0,SampleRate/ 2)。如果未指定的,频率范围
默认[0,
。SampleRate
/ 2)
“SpectrumType”
——频谱类型,指定为逗号分隔对组成的“SpectrumType”
和“权力”
要么“级”
。如果未指定的,SpectrumType
默认“权力”
。
“NumBands”
- 数梅尔带,指定为逗号分隔的一对组成的“NumBands”
和一个整数。如果未指定的,NumBands
默认32
。
“正常化”
——归一化应用于带通滤波器,指定为由“正常化”
和“带宽”
,“区域”
, 要么“没有”
。如果未指定的,正常化
默认“带宽”
。
数据类型:逻辑
barkSpectrum
- - - - - -树皮中提取光谱假
(默认)|真正
提取单侧树皮光谱,指定为真正
要么假
。
要设置的巴克谱提取,使用参数setExtractorParams
:
setExtractorParams(AFE,“barkSpectrum”,“名称”,值)
“FrequencyRange”
- 以Hz为单位提取的频谱的频率范围,指定为逗号分隔的一对组成的“FrequencyRange”
和一个在[0,SampleRate/ 2)。如果未指定的,频率范围
默认[0,
。SampleRate
/ 2)
“SpectrumType”
——频谱类型,指定为逗号分隔对组成的“SpectrumType”
和“权力”
要么“级”
。如果未指定的,SpectrumType
默认“权力”
。
“NumBands”
——树皮带的数量,指定为逗号分隔的对组成“NumBands”
和一个整数。如果未指定的,NumBands
默认32
。
“正常化”
——归一化应用于带通滤波器,指定为由“正常化”
和“带宽”
,“区域”
, 要么“没有”
。如果未指定的,正常化
默认“带宽”
。
数据类型:逻辑
erbSpectrum
- - - - - -提取ERB谱假
(默认)|真正
提取单边ERB谱,指定为真正
要么假
。
到的ERB频谱提取,使用设定的参数setExtractorParams
:
setExtractorParams(AFE,“erbSpectrum”,“名称”,值)
“FrequencyRange”
- 以Hz为单位提取的频谱的频率范围,指定为逗号分隔的一对组成的“FrequencyRange”
和一个在[0,SampleRate/ 2)。如果未指定的,频率范围
默认[0,
。SampleRate
/ 2)
“SpectrumType”
——频谱类型,指定为逗号分隔对组成的“SpectrumType”
和“权力”
要么“级”
。如果未指定的,SpectrumType
默认“权力”
。
“NumBands”
——ERB频带数,指定为逗号分隔对,由“NumBands”
和一个整数。如果未指定的,NumBands
默认(即:
。hz2erb
(FrequencyRange(2)) -hz2erb
(FrequencyRange(1)))
“正常化”
——归一化应用于带通滤波器,指定为由“正常化”
和“带宽”
,“区域”
, 要么“没有”
。如果未指定的,正常化
默认“带宽”
。
数据类型:逻辑
MFCC
- - - - - -提取梅尔频率倒谱系数(MFCC)假
(默认)|真正
提取mel-频率倒谱系数(MFCC),指定为真正
要么假
。
设定MFCC萃取的参数,使用setExtractorParams
:
setExtractorParams(AFE,“mfcc”,“名称”,值)
“NumCoeffs”
——为每个窗口返回的系数数,指定为逗号分隔的对“NumCoeffs”
一个正整数。如果未指定的,NumCoeffs
默认13
。
“DeltaWindowLength”
——指定为逗号分隔的对组成的窗口长度“DeltaWindowLength”
和2
或一个奇整数。如果未指定的,DeltaWindowLength
默认2
。此参数影响mfccDelta
和mfccDeltaDelta
特征。
“整风”
- 类型非线性整流的,指定为逗号分隔的一对组成的“整风”
和“日志”
要么“立方根”
。
梅尔频率倒谱系数都使用计算出的melSpectrum。
数据类型:逻辑
mfccDelta
- - - - - -提取MFCC的delta假
(默认)|真正
提取MFCC的delta,指定为真正
要么假
。
增量MFCC是基于所提取的MFCC计算。参数设置MFCC
影响mfccDelta
。
数据类型:逻辑
mfccDeltaDelta
- - - - - -MFCC提取物三角洲三角洲假
(默认)|真正
提取MFCC的delta-delta,指定为真正
要么假
。
根据提取的MFCC值计算出了delta-delta的MFCC值。参数设置MFCC
影响mfccDeltaDelta
。
数据类型:逻辑
GTCC
- - - - - -伽马通提取倒谱系数(GTCC)假
(默认)|真正
提取伽玛酮倒谱系数(GTCC),指定为真正
要么假
。
要的GTCC提取,使用设定的参数setExtractorParams
:
setExtractorParams(AFE,“gtcc”,“名称”,值)
“NumCoeffs”
——为每个窗口返回的系数数,指定为逗号分隔的对“NumCoeffs”
一个正整数。如果未指定的,NumCoeffs
默认13
。
“DeltaWindowLength”
——指定为逗号分隔的对组成的窗口长度“DeltaWindowLength”
和2
或一个奇整数。如果未指定的,DeltaWindowLength
默认2
。此参数影响gtccDelta
和gtccDeltaDelta
特征。
“整风”
- 类型非线性整流的,指定为逗号分隔的一对组成的“整风”
和“日志”
要么“立方根”
。
该伽马通倒谱系数所使用的计算erbSpectrum。
数据类型:逻辑
gtccDelta
- - - - - -提取GTCC的增量假
(默认)|真正
GTCC的提取物增量,指定为真正
要么假
。
增量GTCC是基于提取的GTCC计算的。参数设置GTCC
影响gtccDelta
。
数据类型:逻辑
gtccDeltaDelta
- - - - - -GTCC提取物三角洲三角洲假
(默认)|真正
提取GTCC的delta,指定为真正
要么假
。
δ-增量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”
,“LHS”
, 要么“SRH”
。如果未指定的,方法
默认“NCF”
。有关可用的基音提取方法的描述,请参阅沥青
。
“范围”
——范围内搜索以Hz为单位的音高,指定为逗号分隔对组成“范围”
和一个值递增的二元行向量。如果未指定的,范围
默认[50400]
。
“MedianFilterLength”
- 平均滤波器长度用于随时间平滑音调估计,指定为逗号分隔的一对组成的“MedianFilterLength”
一个正整数。如果未指定的,MedianFilterLength
默认1
(无中值滤波)。
数据类型:逻辑
harmonicRatio
- - - - - -提取谐波比假
(默认)|真正
提取谐波比,指定为真正
要么假
。
数据类型:逻辑
提取 |
提取音频功能 |
setExtractorParams |
为单个特征提取器设置非默认参数值 |
信息 |
输出映射和单个特征提取器参数 |
读入音频信号。
[AUDIOIN,FS] = audioread(“计数-16-44p1单 - 15secs.wav”);
创建一个audioFeatureExtractor
提取音频信号的MFCC、MFCC、delta-delta MFCC、pitch和谱线质心的对象。使用一个有20ms重叠的30ms分析窗口。
aFE = audioFeatureExtractor (…“SampleRate”,FS,…“窗口”汉明(圆(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 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))标题(“节”)xlabel('时间(s)')ylabel(的频率(赫兹))
创建一个指向audio Toolbox®中包含的音频样本的音频数据存储。
夹=完整文件(matlabroot,'工具箱',“音频”,“样本”);广告= audioDatastore(文件夹);
找到所有对应于44.1 kHz采样率的文件,然后子集
数据存储。
keepFile = cellfun(@(X)含有(X,'44p1'),ads.Files);广告=子集(广告,keepFile);
转换数据到高
阵列。高
数组仅当您显式地使用收集
。MATLAB®自动优化排队计算,减少通过数据的次数。如果您拥有并行计算工具箱™,则可以将计算分散到多台计算机上。音频数据表示为米-乘1高单元数组,其中米是音频数据存储中的文件数。
adsTall =高(广告)
使用“本地”配置文件启动并行池(parpool)…连接到并行池(worker数量:4). adsTall = Mx1高cell array {539648x1 double} {227497x1 double} {8000x1 double} {685056x1 double} {882688x2 double} {1116283x2 double} {505726x2 double} {3195904x2 double}:::
创建一个audioFeatureExtractor
对象提取梅尔频谱,巴克谱,ERB频谱和线性频谱从每个音频文件。使用默认的分析窗口和重叠长度为频谱提取。
aFE = audioFeatureExtractor (“SampleRate”,44.1 e3,…“melSpectrum”,真正,…'barkSpectrum',真正,…“erbSpectrum”,真正,…“linearSpectrum”,真正的);
定义cellfun
函数使音频特征提取自每个单元格的高数组。调用收集
来计算高数组。
specsTall = cellfun(@(x)的提取物(AFE,X),adsTall,“UniformOutput”,假);规格=聚集(specsTall);
评估使用并行池“本地”高表达: - 的1遍1:在13秒评价完成在13秒完成
的规格
从收集返回的变量是一个numFiles-by-1单元数组,其中numFiles是数据存储中的文件数量。单元格数组的每个元素都是numHops-通过-numFeatures-通过-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
重用的中介表示。一些中间表示可以输出为特征:
例如,要创建一个对象来提取树皮光谱的质心、树皮光谱的通量、音调、谐波比和MFCC的deltaaudioFeatureExtractor
为:
aFE = audioFeatureExtractor (…“SpectralDescriptorInput”,“barkSpectrum”,…“spectralCentroid”,真正,…“spectralFlux”,真正,…“节”,真正,…“harmonicRatio”,真正,…“mfccDeltaDelta”,真正)
属性窗口:[1024×1双]OverlapLength: 512采样率: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
可以不通过相应的单独特征提取与特征输出的默认配置相对应。
你点击了一个链接,对应于这个MATLAB命令:
在MATLAB命令窗口中输入命令,运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以选择从下面的列表中的网站:
选择中国网站(中文或英文)以获得最佳网站表现。其他MathWorks国家站点不适合来自您所在位置的访问。