基于Matconvnet深度学习框架的方言分类(1)

背景

本文是基于Matconvnet深度学习框架对方言音频文件进行分类,介绍如下:

预处理数据

声谱图

预处理数据都是对音频文件进行处理,我们都知道 CNN 主要是针对二维数据做分类等,因此我们第一步需要做的是将一维的音频信号,通过调用specgram函数将音频文件转换成声谱图,我在实验中的采用过两种参数,分别如下:

  • [b,f,t] = specgram(x,512,fs,512,256);
  • [b,f,t] = specgram(x,1024,fs,1024,512);

两种参数生成的声谱图 [频谱图]虽然从肉眼的角度可以看出区别,但是从最后的实验结果上来看,可能对分类的结果影响不大。在下面的实验中我会以实验结果作说明。

改变尺寸

上述中提到的声谱图只是由 Matlab 自带函数生成的图片,生成的声谱图片中,存在边缘空白信息,为了提高我们最终的实验结果,我们首先要先将空白边缘信息使用 imcrop 函数进行裁剪,然后使用 imresize 函数对裁剪过的图片进行尺寸的缩放,通常我们需要将图片缩放成经典网络模型需要的尺寸,如:cifar经典数据集、vggnet、alexnet、imagenet等。本文中,我也是采用如下所述的4种尺寸,分别为:32*32、224*224、227*227、256*256.

实验准备

下载编译代码

由于我们使用的是可以在 Matlab 上运行的 Matconvnet 深度学习框架,因此首先要在 Matconvnet 官网上下载最新版本的 Matconvnet 代码,编译(编译的方法,可以参照matconvnet官网上的步骤进行)之后,当然在编译之前你需要选择一下c++编译器,如果你的电脑上没有,那么你需要安装一个,最好安装2013版本及以上,编译完成之后,在命令行窗口会提示编译完成。

运行demo

在上述编译完成之后,为了测试我们是否编译成功,我们可以运行 examples 文件夹下的 cnn_mnist 代码,可以直接运行 cnn_mnist_experiments.m 文件,代码运行的速度很快,即使是在cpu模式下,依然运行的很快,因为这个网络相对简单一些,数据库图片大小为28*28,图片大小比较小,因此训练和测试的速度都比较快。在一些新的版本代码里,运行结束之后,可能会报错,那是在画图的时候某一些参数已经不存在了,我们姑且不管这个,在运行结束之后,会生成一个pdf文件,我们可以打开着这个pdf文件观察实验结果,在这里我粘贴一个实验结果的截图(可能意义不大):

cnn_mnist运行结果截图

猜你喜欢

转载自blog.csdn.net/wlm_suzhou/article/details/78110299