主要内容

openl3Preprocess

预处理音频用于OpenL3特征提取

    描述

    例子

    特性= openl3Preprocess (audioIn,fs声音来自audioIn可以馈送到OpenL3预训练网络。

    特性= openl3Preprocess (audioIn,fs,名称,值使用一个或多个指定选项名称,值参数。例如,特点= openl3Preprocess (fs, audioIn OverlapPercentage, 75)在生成光谱图的连续帧之间应用75%的重叠。

    例子

    全部折叠

    下载并解压缩OpenL3的Audio Toolbox™模型。

    类型openl3在命令窗口。如果未安装OpenL3的Audio Toolbox模型,该功能提供网络权重位置的链接。要下载模型,请单击链接。解压文件到MATLAB路径上的一个位置。

    或者,执行这些命令将OpenL3模型下载并解压缩到临时目录中。

    downloadFolder = fullfile (tempdir,“OpenL3Download”);loc = websave (downloadFolder,“https://ssd.mathworks.com/金宝appsupportfiles/audio/openl3.zip”);OpenL3Location = tempdir;OpenL3Location解压(loc)目录(fullfile (OpenL3Location,“openl3”))

    输入以下命令,检查安装是否成功openl3在命令窗口。如果网络已安装,则该函数返回aDAGNetwork(深度学习工具箱)对象。

    openl3
    ans = DAGNetwork with properties: Layers: [30×1 nnet.cnn.layer.Layer] Connections: [29×2 table] InputNames: {'in'} OutputNames: {'out'}

    使用openl3Preprocess从音频信号中提取嵌入信息。

    读入音频信号。

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

    要从音频中提取声谱图,调用openl3Preprocess功能与音频和采样率。使用50%的重叠,并设置频谱类型为线性。的openl3Preprocess函数返回使用FFT长度512生成的30个光谱图数组。

    特点= openl3Preprocess (audioIn fs,“OverlapPercentage”, 50岁,“SpectrumType”,“线性”);[posFFTbinsOvLap50 numHopsOvLap50, ~, numSpectOvLap50] =大小(特性)
    posFFTbinsOvLap50 = 257
    numHopsOvLap50 = 197
    numSpectOvLap50 = 30

    调用openl3Preprocess同样,这次使用默认的90%重叠。的openl3Preprocess函数现在返回一个包含146个谱图的数组。

    特点= openl3Preprocess (audioIn fs,“SpectrumType”,“线性”);[posFFTbinsOvLap90 numHopsOvLap90, ~, numSpectOvLap90] =大小(特性)
    posFFTbinsOvLap90 = 257
    numHopsOvLap90 = 197
    numSpectOvLap90 = 146

    随机可视化其中一张光谱图。

    randSpect =兰迪(numSpectOvLap90);viewRandSpect =特性(:,:,:,randSpect);N =大小(viewRandSpect 2);binsToHz = (0: N - 1) * fs / N;nyquistBin =圆(N / 2);semilogx (binsToHz (1: nyquistBin), mag2db (abs (viewRandSpect (1: nyquistBin))))包含(的频率(赫兹)) ylabel (“权力(dB)”);标题([num2str (randSpect),“th声谱图”])轴网格

    使用相同的工具创建一个OpenL3网络(这需要深度学习工具箱)“SpectrumType”

    网= openl3 (“SpectrumType”,“线性”);

    提取和可视化音频嵌入。

    嵌入=预测(净、特点);冲浪(嵌入的,“EdgeColor”,“没有”) view([90,-90]) axis([1 numSpectOvLap90 1 numSpectOvLap90]) xlabel(“嵌入长度”) ylabel (的光谱数)标题(“OpenL3功能嵌入”)轴

    输入参数

    全部折叠

    输入信号,指定为列向量或矩阵。如果你指定一个矩阵,openl3Preprocess将矩阵的列视为单独的音频通道。

    数据类型:|

    输入信号的采样率(Hz),指定为一个正标量。

    数据类型:|

    名称-值参数

    指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

    例子:openl3Preprocess (audioIn fs,‘SpectrumType’,‘mel256’)

    连续光谱图之间的重叠百分比,指定为范围[0,100)中的标量。

    数据类型:|

    由音频生成的频谱类型,用作神经网络的输入,指定为其中之一:

    • “mel128”—使用128个mel波段生成mel光谱图。

    • “mel256”使用256个mel波段生成mel光谱图。

    • “线性”——使用FFT长度512生成正的单边谱图。

    数据类型:字符|字符串

    输出参数

    全部折叠

    谱图产生audioIn,返回为N——- - - - - --by-1-by -K数组中。

    当你指定“SpectrumType”作为其中之一:

    • “mel128”——尺寸是128——- - - - - -199——- - - - - -1——- - - - - -K,在那里128MEL波段的数量是多少199是时间跳变的次数。

    • “mel256”——尺寸是256——- - - - - -199——- - - - - -1——- - - - - -K,在那里256MEL波段的数量是多少199是时间跳变的次数。

    • “线性”——尺寸是257——- - - - - -197——- - - - - -1——- - - - - -K,在那里257是正的单边FFT长度和197是时间跳变的次数。

    • K表示谱图的个数,取决于谱图的长度audioIn,通道的数量audioIn,以及OverlapPercentage

    数据类型:

    参考文献

    克莱默,杰森,等。“看,听,并了解更多:深度音频嵌入的设计选择。”在IEEE声学、语音和信号处理国际会议(ICASSP), IEEE, 2019, 3852-56页。DOI.org (Crossref), doi: 10.1109 / / ICASSP.2019.8682475。

    扩展功能

    C / c++代码生成
    使用MATLAB®Coder™生成C和c++代码。

    介绍了R2021a