主要内容

openl3Preprocess

对OpenL3特征提取音频进行预处理

    描述

    例子

    特性= openl3Preprocess (audioInfs生成光谱图audioIn可以输入到OpenL3预训练网络。

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

    例子

    全部折叠

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

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

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

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

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

    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函数返回一个由30个频谱图组成的数组,FFT长度为512。

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

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

    features = openl3Preprocess(audioIn,fs,“SpectrumType”“线性”);[posFFTbinsOvLap90,numHopsOvLap90,~,numSpectOvLap90] = size(features)
    posFFTbinsOvLap90 = 257
    numHopsOvLap90 = 197
    numSpectOvLap90 = 146

    随机地想象一个光谱图。

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

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

    Net = openl3(“SpectrumType”“线性”);

    提取并可视化音频嵌入。

    嵌入=预测(网络,特征);冲浪(嵌入的,“EdgeColor”“没有”view([90,-90]) axis([1 numSpectOvLap90 1 numSpectOvLap90])“嵌入长度”) ylabel (的光谱数)标题(“OpenL3特性嵌入”)轴

    输入参数

    全部折叠

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

    数据类型:|

    输入信号的采样率(以Hz为单位),指定为正标量。

    数据类型:|

    名称-值参数

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

    在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

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

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

    数据类型:|

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

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

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

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

    数据类型:字符|字符串

    输出参数

    全部折叠

    生成的光谱图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

    数据类型:

    参考文献

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

    扩展功能

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

    版本历史

    R2021a中引入