一、项目概述

本文是婴儿哭声分类识别系统化的主体部分,主要解决智能音频分类的问题。基于此目标,本文查找了大量资料,并做了大量实验,最后获得了一个婴儿哭声分类识别准确率相对较高的深度学习模型——迁移学习Urbansound数据模型。

本文将从问题出发,提出问题、分析问题、解决问题,讲解如何一步步地解决该问题,并最终获得满意的结果。

二、项目规划

1. 项目要点问题

  • 婴儿哭声数据集——去哪找?
  • 音频数据如何预处理?
  • 音频如何分类?
  • 神经网络结构如何设计?(DNN、DNN+CNN、迁移学习)
  • 实验如何设计?
  • .....

2. 项目开发工具

  • 模型训练(GPU)——Colab
  • 本地环境管理——Anaconda
  • 本地开发——Pycharm

3.项目涉及代码

  • DNN模型;
  • DNN迁移Urbansound模型;
  • CNN模型;
  • CNN迁移Urbansound模型;
  • 迁移vggish模型。

三、项目要点

1.婴儿哭声数据集

本项目遇到的第一个关键问题是数据集去哪里找?起初在网上找到一个音频共享网站,在这里找到了很多婴儿哭声的音频,但是,数量依旧还是很有限的,而且音频分类的标签是否准确也具有一定的不确定性,所以转而去找有没有现成的婴儿哭声数据集。

各大机器学习比赛网站、各个数据集网站、国内外音频分类相关论文等。终于,在飞桨数据集中找到了有标签的婴儿啼哭数据集。打开数据集可以看到train和test两个文件夹,如图1所示。由于test文件夹中的音频没有标签,所以只能使用train文件夹数据进行训练,数据集类别如图2所示。

图1 数据集文件

图2 (train文件夹)训练集
  • 训练集中共有数据918条,音频格式为wav,数据长度5s~30s不等。

2.音频处理

2.1 音频问题

解决了数据集问题,下一步就需要考虑音频数据问题:

  • 数据量是否足够训练出符合要求的模型?
  • 数据长度是否符合神经网络需要?
  • 数据应该如何送入网络
  • ......

2.2 解决音频问题

小编在研究生阶段研究的是图像处理,图像可以被看成是一个多维矩阵,具有长宽高,自然可以送入神经网络中,音频该如何处理呢?

查找资料发现,音频实际是以波的形式存在,若以时间为横轴、振幅为纵轴绘制图像,则如图3所示。

图3 波形图

通过查看原始音频文件数据存储发现,虽然音频文件同样可表现为张量数据(如图4所示),但在深度学习方面通常不会将其直接放入网络,通常的做法是将音频转换为频谱图(如图5所示)。频谱图是音频波的简洁“快照”,因为它是图像,所以非常适合输入到为处理图像而开发的基于CNN的架构中。图6展示了音频深度学习流程图。

图4 音频文件

图5 频谱图(spectrogram)

图6 音频深度学习流程图

3.深度学习网络结构

针对本项目,小编考虑了几种可能的深度学习网络结构,如全连接神经网络(DNN)、卷积神经网络(CNN+DNN)、迁移学习(vggish)。

4.音频数据

  • 婴儿哭声音频

大家不难发现,其实,本文所使用的婴儿哭声数据集并不是标准的数据集,而且数据量也很小,在判断网络模型优劣方面并不具有权威性,所以本文将使用婴儿哭声测试集作为评估模型的一个参考,同时使用标准音频分类数据集(Urbansound8K)对模型进行辅助评估,并最终找到识别效果较好的深度学习分类模型。

  • 实验数据集

本项目希望音频的最大长度不超过10s,故针对所使用的数据需要经过裁剪处理,并映射到指定长度。

Urbansound8K是包含10类声音的数据集,包括狗叫、汽车喇叭等声音,音频长度均在10s以内;

Babysound是一类包含6类声音的数据集,包括饿了、想睡觉等声音,音频长度为5s~30s不等(如图7所示),本项目将通过裁剪、分割不符合条件的音频,最终音频如图8所示。

图7 原始婴儿哭声音频

图8 分割之后的婴儿哭声音频数据
  • 关于婴儿哭声数据集的测试集

由于分割后的婴儿哭声数据集数量依然很小(共2184条),并不足以满足训练集、验证集、测试集的各部分需求,所以本项目采用随机从原始婴儿哭声数据集中(长度5s~30s的数据)抽取一定量的数据,并随机对抽到的每条数据进行裁剪,使得每条数据长度为10s,由此获得的有标签的294条音频数据将作为最终的婴儿哭声测试集。

四、实验

1. DNN网络

  • DNN网络结构如图9所示;

图9 DNN网络结构
  • Urbansound数据集在该网络中的表现如图10所示;

图10 Urbansound数据集在DNN网络中的表现
  • 图11为Babysound数据集在该网络中的表现;

图11 Babysound数据集在DNN网络中的表现
  • 图12为该模型在Babysound测试集上的准确率(0.8163265306122449)。

图12 婴儿哭声测试集在该模型上的准确率

2. DNN+CNN

  • CNN卷积神经网络结构如图13所示;

图13 CNN卷积神经网络结构
  • Urbansound数据在CNN网络中的表现如图14所示;

图14 Urbansound数据在CNN网络中的表现
  • Babysound数据在CNN网络中的表现如图15所示;

图15 Babysound数据在CNN网络中的表现
  • CNN网络模型在Babysound测试上的准确率(0.9081632653061225)如图16所示;

图16 Babysound测试集在CNN网络模型中的准确率
  • 在此网络结构下,通过迁移学习Urbansound数据集训练的模型,Babysound数据在此网络结构下的表现如图17所示;

图17 Babysound数据在迁移学习Urbansound数据模型的表现
  • 迁移学习Urbansound模型在Babysound测试集上的准确率(0.9931972789115646)如图18所示。

图18 Babysound测试集在迁移学习Urbansound模型上的准确率

3. 迁移学习Vggish模型

Vggish模型是在YouTube的AudioSet数据预训练得到模型,VGGish支持从音频波形中提取具有语义的128维embedding特征向量,网络结构如图19所示。

图19 vggish网络结构

在迁移学习vggish模型的基础上,实验在网络后添加长短时记忆网络(Long Short Term Memory Network, LSTM)和一个全连接,最终将婴儿哭声数据分成6类,网络结构如图20所示。

图20 在vggish网络后添加短时记忆网络并添加一层全连接

图21展示了实验相关参数和实验结果;

图21 Babysound数据在迁移学习vggish网络模型上的表现

图22为vggish迁移模型在Babysound测试集上的准确率(0.8639455782312925)。

图22 Babysound测试集在迁移学习vggish模型上的准确率

4.实验结果汇总

表1 各模型在Babysound测试集中的准确率
深度网络 在Babysound测试集中的准确率
DNN网络模型 0.8163265306122449
迁移学习Urbansound的DNN网络模型 0.5578231292517006
CNN网络模型 0.9081632653061225
迁移学习Urbansound数据集的CNN网络模型 0.9931972789115646
迁移学习vggish模型 0.8639455782312925

五、总结与下期预告

本文所述实验内容是婴儿哭声分类识别系统的主体部分,该部分涉及5种网络模型,分别是DNN深度学习模型迁移学习Urbansound的DNN网络模型CNN深度学习模型迁移学习Urbansound数据模型迁移学习Vggish模型,其中迁移学习Urbansound数据模型在婴儿哭声测试集上的准确率最高,为0.9931972789115646

在之后的学习中,小编会将完整婴儿哭声分类识别系统(如图23所示)发布,敬请期待: