主要内容

vggishEmbeddings

提取VGGish功能嵌入

自从R2022a

    描述

    例子

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

    例子

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

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

    例子

    全部折叠

    下载并解压缩音频工具箱VGGish™模型。

    类型vggishEmbeddings在命令行中。如果音频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”);

    调用vggishEmbeddings函数与音频采样率提取VGGish功能嵌入的音频。使用vggishEmbeddings函数需要安装pretrained VGGish网络。如果网络没有安装,功能提供了一个链接到下载pretrained模型。

    嵌入= vggishEmbeddings (audioIn, fs);

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

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

    创建一个10秒粉红噪声信号,然后提取VGGish嵌入。的vggishEmbeddings函数从梅尔谱图提取特征嵌入有50%的重叠。使用vggishEmbeddings函数需要安装pretrained VGGish网络。如果网络没有安装,功能提供了一个链接到下载pretrained模型。

    fs = 16 e3;大调的= 10;audioIn = pinknoise(大调的* fs, 1“单身”);嵌入= vggishEmbeddings (audioIn, fs);

    随着时间的推移情节VGGish功能嵌入。

    冲浪(嵌入EdgeColor =“没有”)视图([65])轴包含(“功能指数”)ylabel (“帧”)包含(“特征值”)标题(“VGGish功能嵌入”)

    增加的分辨率VGGish功能嵌入的随着时间的推移,指定百分比梅尔重叠谱图。策划的结果。

    overlapPercentage =75年;嵌入= vggishEmbeddings (fs, audioIn OverlapPercentage = OverlapPercentage);冲浪(嵌入EdgeColor =“没有”)视图([65])轴包含(“功能指数”)ylabel (“帧”)zlabel (“特征值”)标题(“VGGish功能嵌入”)

    读入一个音频文件,听它,然后提取VGGish功能嵌入的音频。使用vggishEmbeddings函数需要安装pretrained VGGish网络。如果网络没有安装,功能提供了一个链接到下载pretrained模型。

    [audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);声音(audioIn fs)嵌入= vggishEmbeddings (audioIn fs);

    随着时间的推移可视化VGGish功能嵌入。许多个人的特性是新鲜感,不包含有用的信息。

    冲浪(嵌入EdgeColor =“没有”)视图((90、-90))轴包含(“功能指数”)ylabel (“帧索引”)标题(“VGGish功能嵌入”)

    您可以应用主成分分析(PCA)的特征向量映射到一个空间,强调变化之间的嵌入。调用vggishEmbeddings函数又指定ApplyPCA作为真正的。可视化VGGish PCA后功能嵌入。

    嵌入= vggishEmbeddings (fs, audioIn ApplyPCA = true);冲浪(嵌入EdgeColor =“没有”)视图((90、-90))轴包含(“功能指数”)ylabel (“帧索引”)标题(“VGGish特性+ PCA”)

    下载并解压缩空气压缩机的录音数据集,该数据集由空气压缩机在健康状态或错误的7个州之一。

    zipFile = matlab.internal.examples.download金宝appSupportFile (“音频”,“AirCompressorDataset / AirCompressorDataset.zip”);解压缩(zipFile tempdir) dataLocation = fullfile (tempdir,“AirCompressorDataset”);

    创建一个audioDatastore对象来管理数据并把它分割为训练集和验证集。

    广告= audioDatastore (dataLocation IncludeSubfolders = true,LabelSource =“foldernames”);[adsTrain, adsValidation] = splitEachLabel(广告,0.8);

    从数据库读取一个音频文件。重置数据存储返回的指针指向的数据集的开始阅读。听音频信号,信号在时域的阴谋。

    [x, fileInfo] =阅读(adsTrain);fs = fileInfo.SampleRate;重置(adsTrain)声音(x, fs)图t =(0:大小(x, 1) 1) / fs;情节(t, x)包含(“时间(s)”)标题(“国家= "+字符串(fileInfo.Label)轴

    提取VGGish功能训练集和验证集的嵌入。使用vggishEmbeddings函数需要安装pretrained VGGish网络。如果网络没有安装,功能提供了一个链接到下载pretrained模型。为每一个音频文件有多个嵌入向量。复制标签,这样他们是一一对应的映射进行向量。

    trainFeatures = [];trainLabels = [];hasdata (adsTrain) [audioIn fileInfo] =阅读(adsTrain);特点= vggishEmbeddings (audioIn fileInfo.SampleRate,OverlapPercentage = 75);numFeatureVecs =大小(功能,1);trainFeatures =猫(1 trainFeatures功能);trainLabels =猫(1 trainLabels repelem (fileInfo.Label numFeatureVecs) ');结束validationFeatures = [];validationLabels = [];segmentsPerFile = 0(元素个数(adsValidation.Files), 1);idx = 1;hasdata (adsValidation) [audioIn fileInfo] =阅读(adsValidation);特点= vggishEmbeddings (audioIn fileInfo.SampleRate,OverlapPercentage = 75);numFeatureVecs =大小(功能,1);validationFeatures =猫(1 validationFeatures功能);validationLabels validationLabels =猫(1,repelem (fileInfo.Label numFeatureVecs) ');segmentsPerFile (idx) = numFeatureVecs;idx = idx + 1;结束

    与两个完全连接层定义一个简单的网络。

    层= [featureInputLayer (128) fullyConnectedLayer (32) reluLayer fullyConnectedLayer (8) softmaxLayer classificationLayer);

    定义训练选项,使用trainingOptions(深度学习工具箱)

    miniBatchSize = 128;选择= trainingOptions (“亚当”,MaxEpochs = 20,MiniBatchSize = MiniBatchSize,洗牌=“every-epoch”,ValidationData = {validationFeatures, validationLabels},ValidationFrequency = 50,情节=“训练进步”,Verbose = false);

    训练网络,使用trainNetwork(深度学习工具箱)

    网= trainNetwork (trainFeatures、trainLabels层,选项)

    图培训进展(自2022年7月22日- 12:59:39)包含2轴uigridlayout类型的对象和另一个对象。坐标轴对象1包含9块类型的对象,文本行。坐标轴对象2包含9块类型的对象,文本行。

    网= SeriesNetwork属性:层:[6×1 nnet.cnn.layer.Layer] InputNames:{“输入”}OutputNames: {“classoutput”}

    每个音频文件分成几个部分饲料进入网络。结合预测每个文件的验证集使用少数服从多数原则决定。

    validationPredictions =分类(净,validationFeatures);idx = 1;validationPredictionsPerFile =分类;2 = 1:元素个数(adsValidation.Files) validationPredictionsPerFile (2, 1) =模式(validationPredictions (idx: idx + segmentsPerFile (ii) 1));idx = idx + segmentsPerFile (ii);结束

    可视化的混淆矩阵验证集。

    图confusionchart (adsValidation.Labels validationPredictionsPerFile,标题= sprintf (“验证数据混淆矩阵\ nAccuracy = % 0.2 f % % ",意思是(validationPredictionsPerFile = = adsValidation.Labels) * 100))

    下载并解压缩空气压缩机数据集[1]。这个数据集由空气压缩机的录音在健康状态或错误的7个州之一。

    datasetZipFile = matlab.internal.examples.download金宝appSupportFile (“音频”,“AirCompressorDataset / AirCompressorDataset.zip”);datasetFolder = fullfile (fileparts (datasetZipFile),“AirCompressorDataset”);如果~存在(datasetFolder“dir”)解压缩(datasetZipFile fileparts (datasetZipFile));结束

    创建一个audioDatastore对象来管理数据并把它分割为训练集和验证集。

    广告= audioDatastore (datasetFolder IncludeSubfolders = true, LabelSource =“foldernames”);

    在本例中,您将为健康的或错误的信号。所有的错误的标签合并成一个单一的标签。把数据存储分成训练集和验证集。

    标签= ads.Labels;标签(标签~ =分类(“健康”))=分类(“错误”);ads.Labels = removecats(标签);[adsTrain, adsValidation] = splitEachLabel(广告,0.8,0.2);

    从训练集提取VGGish功能嵌入。每个音频文件对应于多个VGGish特性。复制标签,这样他们是一一对应的特性。使用vggishEmbeddings函数需要安装pretrained VGGish网络。如果网络没有安装,功能提供了一个链接到下载pretrained模型。

    trainFeatures = [];trainLabels = [];idx = 1:元素个数(adsTrain.Files) [audioIn fileInfo] =阅读(adsTrain);嵌入= vggishEmbeddings (audioIn fileInfo.SampleRate);trainFeatures = (trainFeatures;嵌入的);trainLabels = [trainLabels; repelem (fileInfo.Label大小(嵌入的,1))');结束

    火车一立方支持向量机(SVM金宝app)使用fitcsvm(统计和机器学习的工具箱)。探索其他分类器及其性能,使用分类学习者(统计和机器学习的工具箱)

    faultDetector = fitcsvm (trainFeatures,trainLabels,KernelFunction =“多项式”,PolynomialOrder = 3,KernelScale =“汽车”,BoxConstraint = 1,规范= true,一会=类别(trainLabels));

    每个文件的验证:

    1. 提取嵌入VGGish特性。

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

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

    预测= [];idx = 1:元素个数(adsValidation.Files) [audioIn fileInfo] =阅读(adsValidation);嵌入= vggishEmbeddings (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。

    输入参数

    全部折叠

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

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

    数据类型:|

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

    数据类型:|

    名称-值参数

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

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

    例子:OverlapPercentage = 75

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

    数据类型:|

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

    数据类型:逻辑

    输出参数

    全部折叠

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

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

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

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

    算法

    全部折叠

    vggishEmbeddings函数使用VGGish提取功能嵌入的音频。的vggishEmbeddings函数进行预处理的音频,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。

    扩展功能

    版本历史

    介绍了R2022a