vggishFeatures
(删除)提取VGGish特性
的vggishFeatures
函数将在未来的版本中被删除。使用vggishEmbeddings
代替。有关更多信息,请参见兼容性的考虑。
描述
例子
下载vggishFeatures
功能
下载并解压缩音频工具箱VGGish™模型。
类型vggishFeatures
在命令行中。如果音频VGGish工具箱模型没有安装,那么函数提供了一个链接到网络权值的位置。下载模式,点击链接。将文件解压缩到一个位置在MATLAB的道路。
另外,执行以下命令来下载并解压缩VGGish模型到你的临时目录中。
downloadFolder = fullfile (tempdir,“VGGishDownload”);loc = websave (downloadFolder,“https://ssd.mathworks.com/金宝appsupportfiles/audio/vggish.zip”);VGGishLocation = tempdir;VGGishLocation解压(loc)目录(fullfile (VGGishLocation,“vggish”))
提取VGGish嵌入
读入一个音频文件。
[audioIn, fs] = audioread (“MainStreetOne-16-16-mono-12secs.wav”);
调用vggishFeatures
函数与音频采样率提取VGGish功能嵌入的音频。
featureVectors = vggishFeatures (audioIn, fs);
的vggishFeatures
128 -元素函数返回一个矩阵的特征向量。
[numHops, numElementsPerHop numChannels] =大小(featureVectors)
numHops = 23
numElementsPerHop = 128
numChannels = 1
提高时间分辨率VGGish特性
创建一个10秒粉红噪声信号,然后提取VGGish特性。的vggishFeatures
函数从梅尔谱图提取特征有50%的重叠。
fs = 16 e3;大调的= 10;audioIn = pinknoise(大调的* fs, 1“单一”);特点= vggishFeatures (audioIn, fs);
随着时间的推移情节VGGish特性。
冲浪(特性,“EdgeColor”,“没有”)视图([65])轴紧包含(“功能指数”)ylabel (“帧”)包含(“特征值”)标题(“VGGish特性”)
增加的分辨率VGGish特性随着时间的推移,指定百分比梅尔·色之间的重叠。策划的结果。
overlapPercentage =75年;特点= vggishFeatures (audioIn fs,“OverlapPercentage”,overlapPercentage);冲浪(特性,“EdgeColor”,“没有”)视图([65])轴紧包含(“功能指数”)ylabel (“帧”)zlabel (“特征值”)标题(“VGGish特性”)
主成分分析应用到VGGish嵌入
读入一个音频文件,听它,然后从音频提取VGGish特性。
[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);声音(audioIn fs)特性= vggishFeatures (audioIn fs);
随着时间的推移可视化VGGish特性。许多个人的特性是新鲜感,不包含有用的信息。
冲浪(特性,“EdgeColor”,“没有”)视图((90、-90))轴紧包含(“功能指数”)ylabel (“帧索引”)标题(“VGGish特性”)
您可以应用主成分分析(PCA)的特征向量映射到一个空间,强调变化之间的嵌入。调用vggishFeatures
函数又指定ApplyPCA
作为真正的
。主成分分析后可视化VGGish特性。
特点= vggishFeatures (audioIn fs,“ApplyPCA”,真正的);冲浪(特性,“EdgeColor”,“没有”)视图((90、-90))轴紧包含(“功能指数”)ylabel (“帧索引”)标题(“+ PCA VGGish特性”)
使用VGGish嵌入深度学习
下载并解压缩空气压缩机的录音数据集,该数据集由空气压缩机在健康状态或错误的7个州之一。
url =“//www.tatmou.com/金宝appsupportfiles/audio/AirCompressorDataset/AirCompressorDataset.zip”;downloadFolder = fullfile (tempdir,“aircompressordataset”);datasetLocation = tempdir;如果~ (fullfile (tempdir,存在“AirCompressorDataSet”),“dir”)loc = websave (downloadFolder url);解压缩(loc fullfile (tempdir“AirCompressorDataSet”))结束
创建一个audioDatastore
对象来管理数据并把它分割为训练集和验证集。
广告= audioDatastore (downloadFolder,“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);[adsTrain, adsValidation] = splitEachLabel(广告,0.8,0.2);
从数据存储读取一个音频文件并保存采样率以备后用。重置数据存储返回的指针指向的数据集的开始阅读。听音频信号,信号在时域的阴谋。
[x, fileInfo] =阅读(adsTrain);fs = fileInfo.SampleRate;重置(adsTrain)声音(x, fs)图t =(0:大小(x, 1) 1) / fs;情节(t, x)包含(“时间(s)”)标题(“国家=”+字符串(fileInfo.Label)轴紧
提取VGGish训练集和验证集的特性。转置的特性,这样时间是沿着行。
trainFeatures =细胞(1,元素个数(adsTrain.Files));为idx = 1:元素个数(adsTrain.Files) [audioIn fileInfo] =阅读(adsTrain);特点= vggishFeatures (audioIn fileInfo.SampleRate);trainFeatures {idx} =功能”;结束validationFeatures =细胞(1,元素个数(adsValidation.Files));为idx = 1:元素个数(adsValidation.Files) [audioIn fileInfo] =阅读(adsValidation);特点= vggishFeatures (audioIn fileInfo.SampleRate);validationFeatures {idx} =功能”;结束
定义一个长期短期记忆网络(深度学习工具箱)网络。
层= [sequenceInputLayer (128) lstmLayer(100年“OutputMode”,“最后一次”)fullyConnectedLayer (8) softmaxLayer classificationLayer];
定义训练选项,使用trainingOptions
(深度学习工具箱)。
miniBatchSize = 64;validationFrequency = 5 *地板(元素个数(trainFeatures) / miniBatchSize);选择= trainingOptions (“亚当”,…“MaxEpochs”12…“MiniBatchSize”miniBatchSize,…“阴谋”,“训练进步”,…“洗牌”,“every-epoch”,…“LearnRateSchedule”,“分段”,…“LearnRateDropPeriod”6…“LearnRateDropFactor”,0.1,…“ValidationData”{validationFeatures, adsValidation.Labels},…“ValidationFrequency”validationFrequency,…“详细”、假);
训练网络,使用trainNetwork
(深度学习工具箱)。
网= trainNetwork (trainFeatures、adsTrain.Labels层,选项)
网= SeriesNetwork属性:层:[5×1 nnet.cnn.layer.Layer] InputNames: {“sequenceinput”} OutputNames: {“classoutput”}
可视化的混淆矩阵验证集。
predictedClass =分类(净,validationFeatures);confusionchart (adsValidation.Labels predictedClass)
对机器学习使用VGGish嵌入
下载并解压缩空气压缩机数据集[1]。这个数据集由空气压缩机的录音在健康状态或错误的7个州之一。
url =“//www.tatmou.com/金宝appsupportfiles/audio/AirCompressorDataset/AirCompressorDataset.zip”;downloadFolder = fullfile (tempdir,“aircompressordataset”);datasetLocation = tempdir;如果~ (fullfile (tempdir,存在“AirCompressorDataSet”),“dir”)loc = websave (downloadFolder url);解压缩(loc fullfile (tempdir“AirCompressorDataSet”))结束
创建一个audioDatastore
对象来管理数据并把它分割为训练集和验证集。
广告= audioDatastore (downloadFolder,“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);
在本例中,您将为健康的或错误的信号。所有的错误的标签合并成一个单一的标签。把数据存储分成训练集和验证集。
标签= ads.Labels;标签(标签~ =分类(“健康”))=分类(“错误”);ads.Labels = removecats(标签);[adsTrain, adsValidation] = splitEachLabel(广告,0.8,0.2);
从训练集提取VGGish特性。每个音频文件对应于多个VGGish特性。复制标签,这样他们是一一对应的特性。
trainFeatures = [];trainLabels = [];为idx = 1:元素个数(adsTrain.Files) [audioIn fileInfo] =阅读(adsTrain);特点= vggishFeatures (audioIn fileInfo.SampleRate);trainFeatures = (trainFeatures;功能);trainLabels = [trainLabels; repelem (fileInfo.Label大小(功能,1))');结束
火车一立方支持向量机(SVM金宝app)使用fitcsvm
(统计和机器学习的工具箱)。探索其他分类器及其性能,使用分类学习者(统计和机器学习的工具箱)。
faultDetector = fitcsvm (…trainFeatures,…trainLabels,…“KernelFunction”,多项式的,…“PolynomialOrder”3,…“KernelScale”,“汽车”,…“BoxConstraint”,1…“标准化”,真的,…“类名”类别(trainLabels));
每个文件的验证:
提取VGGish特性。
对于每个VGGish特征向量在一个文件中,使用训练分类器预测机器是否健康的或错误的。
每个文件的预测模式。
预测= [];为idx = 1:元素个数(adsValidation.Files) [audioIn fileInfo] =阅读(adsValidation);特点= vggishFeatures (audioIn fileInfo.SampleRate);predictionsPerFile =分类(预测(faultDetector、特点));预测=[预测;模式(predictionsPerFile)];结束
使用confusionchart
(统计和机器学习的工具箱)显示分类器的性能。
精度= = = adsValidation.Labels(预测)和/元素个数(adsValidation.Labels);cc = confusionchart(预测,adsValidation.Labels);cc.Title = sprintf (的精度= % 0.2 f % '、准确性* 100);
引用
[1]Verma Nishchal K。,Rahul Kumar Sevakula, Sonal Dixit, and Al Salour. 2016. “Intelligent Condition Based Monitoring Using Acoustic Signals for Air Compressors.”IEEE可靠性65 (1):291 - 309。https://doi.org/10.1109/TR.2015.2459684。
输入参数
audioIn
- - - - - -输入信号
列向量|矩阵
输入信号,指定为一个列向量或矩阵。如果您指定一个矩阵,vggishFeatures
把矩阵的列作为单独的音频通道。
的持续时间audioIn
必须等于或大于0.975秒。
数据类型:单
|双
fs
- - - - - -采样率(赫兹)
积极的标量
输入信号的采样率Hz,指定为一个积极的标量。
数据类型:单
|双
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:“OverlapPercentage”, 75年
OverlapPercentage
- - - - - -比例连续音频帧之间的重叠
50
(默认)|标量范围(0100)
重叠比例连续音频帧,指定为一个标量范围(0100)。
数据类型:单
|双
ApplyPCA
- - - - - -国旗PCA变换应用于音频嵌入
假
(默认)|真正的
国旗PCA变换应用于音频嵌入,指定为真正的
或假
。
数据类型:逻辑
输出参数
嵌入的
音频数据的,紧凑的表示
l由- - - - - - - 128N数组
音频数据的紧凑表示,作为一个返回l由- - - - - - - 128N数组,地点:
l——代表帧的数量划分为音频信号。这是确定的
OverlapPercentage
。128年,代表了音频嵌入长度。
N——代表通道的数量。
算法
的vggishFeatures
函数使用VGGish提取功能嵌入的音频。的vggishFeatures
函数进行预处理的音频,VGGish所需的格式,可以在映射进行后处理。
进行预处理
重新取样
audioIn
16千赫,单精度。计算一个片面的短时傅里叶变换使用25 ms周期性损害与10 ms跳窗,DFT和512点。音频目前由一个257 -,-表示l数组,其中257是片面的光谱垃圾箱的数量,和l取决于输入的长度。
把复杂的光谱值大小和丢弃相位信息。
片面的级频谱穿过64 -带mel-spaced滤波器银行,然后和每个乐队的大小。音频目前由一个64的l梅尔·声谱图。
梅尔·声谱图转换为对数尺度。
缓冲区的梅尔·声谱图96光谱重叠部分组成的。音频现在代表由96 - 64 - 1 - - - - - - -K数组,其中96是个体梅尔的光谱谱图,64是梅尔乐队的数量,和声音(间距为兼容VGGish模型的四维空间。梅尔·色的数量,K,取决于输入长度和
OverlapPercentage
。
特征提取
通过96 - 64 - 1 - - - - - - -K一系列通过VGGish返回梅尔·色K128年——矩阵。VGGish的输出是每个0.975秒帧的功能嵌入相应的音频数据。
后处理
如果ApplyPCA
被设置为真正的
,功能嵌入的位相匹配的后处理AudioSet嵌入的释放。VGGish模式被释放,预先计算的主成分分析(PCA)矩阵和向量应用PCA变换和美白在推理。后处理包括应用PCA、美白和量化。
减去预计1 - 128年- PCA的平均向量K通过- 128特性矩阵,然后自左乘结果预计128 - 128年- PCA的矩阵。
剪辑之间的转换和增白嵌入的2,2,然后量化结果值可以表示为
uint8
。
引用
[1]Gemmeke, Jort F。,Daniel P. W. Ellis, Dylan Freedman, Aren Jansen, Wade Lawrence, R. Channing Moore, Manoj Plakal, and Marvin Ritter. 2017. “Audio Set: An Ontology and Human-Labeled Dataset for Audio Events.” In2017年IEEE国际会议音响、演讲和信号处理(ICASSP),776 - 80。新奥尔良,LA: IEEE。https://doi.org/10.1109/ICASSP.2017.7952261。
[2]好时,肖恩,微酸的乔杜里,丹尼尔·p·w·埃利斯Jort f . Gemmeke Jansen, r·钱宁摩尔Manoj Plakal,等。2017。“CNN架构对大规模音频分类。“在2017年IEEE国际会议音响、演讲和信号处理(ICASSP)131 - 35。新奥尔良,LA: IEEE。https://doi.org/10.1109/ICASSP.2017.7952132。
扩展功能
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
这个函数完全支持GPU数组。金宝app有关更多信息,请参见运行在GPU MATLAB函数(并行计算工具箱)。
版本历史
介绍了R2020bR2022a:vggishFeatures
将被删除
不推荐在R2022a开始
的vggishFeatures
函数将在未来的版本中被删除。使用vggishEmbeddings
代替。现有的电话vggishFeatures
继续运行。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。