主要内容

vggishFeatures

(删除)提取VGGish特性

    vggishFeatures函数将在未来的版本中被删除。使用vggishEmbeddings代替。有关更多信息,请参见兼容性的考虑

    描述

    例子

    嵌入的= vggishFeatures (audioIn,fs)返回VGGish功能嵌入的音频输入audioIn与采样率fs。列的输入被视为个人渠道。

    例子

    嵌入的= vggishFeatures (audioIn,fs,名称,值)使用一个或多个指定选项名称,值参数。例如,嵌入= vggishFeatures (fs, audioIn ApplyPCA,真的)应用主成分分析(PCA)转换音频嵌入。

    这个函数需要音频工具箱™和深度学习工具箱™。

    例子

    全部折叠

    下载并解压缩音频工具箱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”))

    读入一个音频文件。

    [audioIn, fs] = audioread (“MainStreetOne-16-16-mono-12secs.wav”);

    调用vggishFeatures函数与音频采样率提取VGGish功能嵌入的音频。

    featureVectors = vggishFeatures (audioIn, fs);

    vggishFeatures128 -元素函数返回一个矩阵的特征向量。

    [numHops, numElementsPerHop numChannels] =大小(featureVectors)
    numHops = 23
    numElementsPerHop = 128
    numChannels = 1

    创建一个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特性。

    [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特性”)

    下载并解压缩空气压缩机的录音数据集,该数据集由空气压缩机在健康状态或错误的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)

    下载并解压缩空气压缩机数据集[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));

    每个文件的验证:

    1. 提取VGGish特性。

    2. 对于每个VGGish特征向量在一个文件中,使用训练分类器预测机器是否健康的或错误的。

    3. 每个文件的预测模式。

    预测= [];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。

    输入参数

    全部折叠

    输入信号,指定为一个列向量或矩阵。如果您指定一个矩阵,vggishFeatures把矩阵的列作为单独的音频通道。

    的持续时间audioIn必须等于或大于0.975秒。

    数据类型:|

    输入信号的采样率Hz,指定为一个积极的标量。

    数据类型:|

    名称-值参数

    指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

    R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

    例子:“OverlapPercentage”, 75年

    重叠比例连续音频帧,指定为一个标量范围(0100)。

    数据类型:|

    国旗PCA变换应用于音频嵌入,指定为真正的

    数据类型:逻辑

    输出参数

    全部折叠

    音频数据的紧凑表示,作为一个返回l由- - - - - - - 128N数组,地点:

    • l——代表帧的数量划分为音频信号。这是确定的OverlapPercentage

    • 128年,代表了音频嵌入长度。

    • N——代表通道的数量。

    算法

    全部折叠

    vggishFeatures函数使用VGGish提取功能嵌入的音频。的vggishFeatures函数进行预处理的音频,VGGish所需的格式,可以在映射进行后处理。

    进行预处理

    1. 重新取样audioIn16千赫,单精度。

    2. 计算一个片面的短时傅里叶变换使用25 ms周期性损害与10 ms跳窗,DFT和512点。音频目前由一个257 -,-表示l数组,其中257是片面的光谱垃圾箱的数量,和l取决于输入的长度。

    3. 把复杂的光谱值大小和丢弃相位信息。

    4. 片面的级频谱穿过64 -带mel-spaced滤波器银行,然后和每个乐队的大小。音频目前由一个64的l梅尔·声谱图。

    5. 梅尔·声谱图转换为对数尺度。

    6. 缓冲区的梅尔·声谱图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. 减去预计1 - 128年- PCA的平均向量K通过- 128特性矩阵,然后自左乘结果预计128 - 128年- PCA的矩阵。

    2. 剪辑之间的转换和增白嵌入的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。

    扩展功能

    版本历史

    介绍了R2020b

    全部展开

    不推荐在R2022a开始