crepePostprocess
CREPE深度学习网络的后处理输出
描述
例子
下载绉网络
下载并解压CREPE的Audio Toolbox™模型。
类型绉
在命令窗口。如果未安装CREPE的Audio Toolbox模型,则该函数提供指向网络权重位置的链接。要下载模型,请单击链接并将文件解压缩到MATLAB路径上的某个位置。
或者,执行以下命令将CREPE模型下载并解压到临时目录。
downloadFolder = fullfile (tempdir,“crepeDownload”);loc = websave (downloadFolder,“https://ssd.mathworks.com/supportfiles/audio/crepe.zip”);crepeLocation = tempdir;crepeLocation解压(loc)目录(fullfile (crepeLocation,“绉”))
输入命令检查安装是否成功绉
在命令窗口。如果网络已安装,则函数返回aDAGNetwork
(深度学习工具箱)对象。
绉
ans = DAGNetwork属性:Layers: [34×1 nnet.cnn.layer.Layer] Connections: [33×2 table] InputNames: {'input'} OutputNames: {'pitch'}
加载预训练的CREPE网络
加载预训练的CREPE卷积神经网络并检查层和类。
使用绉
加载预训练的CREPE网络。输出网
是一个DAGNetwork
(深度学习工具箱)对象。
网=绉
net = DAGNetwork属性:Layers: [34×1 nnet.cnn.layer.Layer] Connections: [33×2 table] InputNames: {'input'} OutputNames: {'pitch'}
查看网络架构层
财产。这个网络有34层。有13个具有可学习权值的层,其中6个是卷积层,6个是批处理归一化层,1个是完全连接层。
网层
ans = 34×1带有图层的图层数组:1' input' Image input 1024×1×1 images 2' conv1' Convolution 1024 512×1×1 convolutions with stride [4 1] and padding 'same' 3 'conv1_relu' ReLU 4 'conv1- bn ' Batch Normalization Batch Normalization with 1024通道5 'conv1-maxpool' Max Pooling 2×1 Max Pooling with stride [2 1] and padding [0 0 0 0 0] 6 'conv1- Dropout ' Dropout 25% Dropout 7 'conv2' Convolution 128 64×1×1024 convolutions with stride [1 1] and padding 'same' 8 'conv2_relu' ReLU ReLU 9 'conv2- bn ' Batch Normalization Batch正常化128个频道10“conv2-maxpool”马克斯池2×1马克斯池步(2 - 1)和填充[0 0 0 0]11的conv2-dropout辍学25%辍学12 conv3卷积128×64×128旋转步[1]和填充“相同”13”conv3_relu ReLU ReLU 14“conv3-BN”批量标准化批量标准化与128个频道15“conv3-maxpool”马克斯池2×1马克斯池步(2 - 1)和填充[0 0 0 0]16“conv3-dropout”辍学25%辍学17 conv4卷积12864×1×128 convolutions with stride[1 1]和padding 'same' 18 'conv4_relu' ReLU ReLU 19 'conv4-BN' Batch Normalization Batch Normalization with 128通道20 'conv4-maxpool'最大Pooling 2×1 Max Pooling with stride[2 1]和padding [0 0 0 0 0] 21 'conv4-dropout' Dropout 25% Dropout 22 'conv5' Convolution 256 64×1×128 convolutions with stride[1 1]和padding 'same' 23 'conv5_relu' ReLU ReLU 24 'conv5- bn ' Batch Normalization Batch Normalization with 256通道25 'conv5-maxpool'最大Pooling2×1马克斯池步(2 - 1)和填充[0 0 0 0]26“conv5-dropout”辍学25%辍学27 conv6卷积512 64×1×256旋转步[1]和填充“相同”28日的conv6_relu ReLU ReLU 29“conv6-BN”批量标准化批量正常化30 512个频道“conv6-maxpool”马克斯池2×1马克斯池步(2 - 1)和填充[0 0 0 0]31“conv6-dropout”辍学25%辍学32“分类”完全连接360完全连接层33 classifier_sigmoid乙状结肠sigmoid 34 'pitch'回归输出均方误差
使用analyzeNetwork
(深度学习工具箱)以可视化的方式探索网络。
analyzeNetwork(净)
使用CREPE网络估计节距
CREPE网络要求您对音频信号进行预处理,以生成缓冲的、重叠的和规范化的音频帧,这些音频帧可以用作网络的输入。这个例子演示了使用crepePreprocess
而音频后处理用的是基音估计crepePostprocess
.的pitchnn
函数为您执行这些步骤。
读入音频信号进行音高估计。想象并听音频。音频片段中有9个声音。
[audioIn, fs] = audioread (“SingingAMajor-16-mono-18secs.ogg”);sounddsc (audioIn,fs) T = 1/fs;t = 0: t:(长度(audioIn)* t) - t;情节(t, audioIn);网格在轴紧包含(“时间(s)”) ylabel (“Ampltiude”)标题(《大调歌唱》)
使用crepePreprocess
将音频划分为1024个样本帧,连续MEL谱图之间有85%的重叠。沿着第四维度放置框架。
(框架,loc) = crepePreprocess (audioIn fs);
创建一个CREPE网络ModelCapacity
设置为小
.如果你叫绉
在下载模型之前,一个错误被打印到带有下载链接的命令窗口中。
netTiny =绉(“ModelCapacity”,“小”);
预测网络激活。
activationsTiny =预测(netTiny、帧);
使用crepePostprocess
以产生以赫兹为单位的基频距估计。通过设置禁用置信度阈值ConfidenceThreshold
来0
.
f0Tiny = crepePostprocess (activationsTiny,“ConfidenceThreshold”, 0);
随着时间的推移,可视化音高估计。
情节(loc f0Tiny)网格在轴紧包含(“时间(s)”) ylabel (“音高估计(Hz)”)标题('CREPE网络频率估计-阈值设置已禁用')
禁用了置信度阈值后,crepePostprocess
为每一帧提供一个音高估计。增加了ConfidenceThreshold
来0.8
.
f0Tiny = crepePostprocess (activationsTiny,“ConfidenceThreshold”, 0.8);
随着时间的推移,可视化音高估计。
情节(loc f0Tiny,“线宽”3)网格在轴紧包含(“时间(s)”) ylabel (“音高估计(Hz)”)标题('CREPE网络频率估计-启用阈值')
创建一个新的CREPE网络ModelCapacity
设置为完整的
.
netFull =绉(“ModelCapacity”,“全部”);
预测网络激活。
activationsFull =预测(netFull、帧);f0Full = crepePostprocess (activationsFull,“ConfidenceThreshold”, 0.8);
可视化音高估计。有九个主要的音高估计组,每一组对应于九个发声中的一个。
情节(loc f0Full,“线宽”3)网格在包含(“时间(s)”) ylabel (“音高估计(Hz)”)标题(“CREPE网络频率估计-全部”)
找出与最后一个发音相对应的时间元素。
roundedLocVec =圆(loc), 2);lastUtteranceBegin = find(roundedLocVec == 16);lastUtteranceEnd = find(roundedLocVec == 18);
为简单起见,我们将发声组中最频繁出现的音高估计作为该时间跨度的基本频率估计。生成一个纯音调,其频率与最后一次发声的音高估计相匹配。
lastUtteranceEstimation =模式(f0Full (lastUtteranceBegin: lastUtteranceEnd))
lastUtteranceEstimation =单217.2709
的值lastUtteranceEstimate
的217.3
赫兹。对应于注释A3。把合成的音调叠加在最后一个发声的声音上,以便在声音上比较两者。
lastVocalUtterance = audioIn (fs * 16: fs * 18);新时期= 0:T: 2;compareTone = cos(2 *π* lastUtteranceEstimation *新时期)。”;soundsc (lastVocalUtterance + compareTone, fs);
调用光谱图
更仔细地检查歌唱的频率内容。使用的帧大小为250
样本和重叠的225
样品或90%。使用4096
DFT点进行变换。的光谱图
揭示了声乐录音实际上是由多个频率组成的一组复杂的谐音。
光谱图(fs audioIn, 250225年,4096年,“桠溪”)
输入参数
输出参数
f0
-估计基频
N——- - - - - -1
向量
估计基频,单位为赫兹,返回为N——- - - - - -1
向量,N生成的帧数。
数据类型:单
参考文献
[1]金,钟旭,贾斯汀·萨拉蒙,彼得·李,胡安·巴勃罗·贝罗。《可绉:音调估计的卷积表示》在2018 IEEE声学、语音和信号处理国际会议(ICASSP), 161 - 65。卡尔加里,AB: IEEE, 2018。https://doi.org/10.1109/ICASSP.2018.8461329。
扩展功能
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
该功能完全支持GPU阵列。有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
介绍了R2021a
另请参阅
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。