基于深度神经网络的婴儿哭声识别算法

具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI
婴儿哭闹识别是一项具有挑战性的任务,因为很难确定能够让研究人员清楚区分不同类型哭闹的语音特征。然而,婴儿哭闹被视为一种不同的言语交流方式。利用适当的人工智能模型,利用梅尔倒谱系数(MFCC)可以区分婴儿哭闹的类型。堆叠受限玻尔兹曼机(RBN)在提供几层神经网络以将高维数据转换为低维数据以将输入数据微调为神经网络的更好的初始化权重方面是流行的。通常,RBN与另一个深度神经网络一起使用来形成深度信念网络(DBN),并且这一方向的研究正朝着卷积RBN变体的方向发展。同时,由于反向传播和主成分分析可以直接应用于卷积神经网络,因此对RBN预训练卷积神经网络(CNN)的研究很少。在本文中,我们描述了RBN和CNN之间的混合系统,用于利用梅尔频率倒谱系数的特征来学习婴儿哭声识别的特定类别特征。通过验证所提出的婴儿哭声识别模型,我们对5种类型的婴儿哭声的准确率为78.6%。

婴儿啼哭是向成年人反映婴儿生理机能的主要交流形式。检测婴儿哭闹的类型有助于了解婴儿的现状,有助于早期发现病理疾病[1]。科学家们认为,婴儿的哭声和成人的哭声一样,因此,对婴儿哭声识别的研究应参考成人的语音识别。婴儿哭闹的声学信息在不同类型的哭闹中显示出显著差异,这将有助于使用机器学习进行婴儿哭闹识别[2]。过去正在进行许多婴儿哭闹识别研究,可将其分为两大类,即使用声学参数的统计分析和分类研究以及与机器学习相关的婴儿哭闹辨识研究。在本文中,我们将建议使用机器学习方法来建立一个模型,该模型可用于对不同类型的婴儿哭声进行分类。成人语音识别中使用的机器学习类型可以在婴儿的哭声识别研究中重复,前提是不同类型哭声的声学特征有明确的边界。因此,婴儿的哭声识别实验过程与成人的语音识别研究过程相同。RBN和CNN是两种著名的深度学习神经网络模型,已用于图像和语音识别[3]。婴儿哭声的声学特征首先被转换为接近人类耳朵感知的数学模型,称为梅尔频率倒谱系数(MFCC)[4]。RBN具有分布式隐藏状态,可以对不同的婴儿哭声进行建模和分类。这可以确保馈送到RBN中的声学特征与不同类型的婴儿哭闹相关联,使得RBN可以将高维的原始数据定位为可以馈送到CNN中的相关的低维数据。由于隐藏层之间没有连接,RBN在很大程度上将原始MFCC分解为仅可见的隐藏连接,这意味着婴儿的哭声识别问题被转换为二分图问题,该问题可以使用RBN中的吉布斯采样或其他数学模型解决[5]。通过将RBN堆叠成几层,形成的深层信任网可以与CNN联系起来。CNN在图像识别中的应用是因为它能够很好地处理通常由曲线和边界形成的图像的原始数据的维度。然而,CNN不适合直接对MFCC本地频率进行模式化,因为在该CNN中存在卷积层,该卷积层具有以有限带宽对输入信号进行卷积的滤波器。为了解决这个问题,我们建议使用RBN作为CNN的预训练,使该MFCC像一个静态频谱一样,可以进行相关变换,并在相关的局部过程频谱中表示婴儿的哭声[6]。

婴儿的哭声样本是在医务人员的帮助下从马来亚大学医学中心采集的。通过将Olympus录音机放在距离哭闹婴儿口腔5厘米的地方,以16 kHz的采样率和8位分辨率记录样本。总共收集了500个婴儿啼哭声,每种啼哭类型都有100个啼哭样本。这些婴儿不到2周大。所有文件都以WAV文件格式记录。分别收集疼痛、寒冷、饥饿、尿布更换和不适(另一个未知的哭泣原因)这五种类型的哭泣。在婴儿接受常规注射时采集疼痛哭闹样本。喂食前采集饥饿哭闹样本。在婴儿进行常规沐浴时采集冷哭样本。换尿布时采集哭闹样本,对于其他未知的自发哭闹,则将其归类为因不适引起的哭闹。每个哭泣样本只对应一种类型或原因。MFCC是机器学习分类相关问题中最常用的特征之一。MFCC源于模拟人类听觉功能的梅尔尺度滤波器组。在这项研究中,只有婴儿哭声的有声部分考虑了将原始数据转换为MFCC。样本通过hamming窗口进行解析,然后只有浊音部分被考虑到分析窗口中。所使用的总窗口大小为145ms,25ms的静态移动窗口与10ms的窗口大小重叠。这创建了每个样本总共13帧((145−25)/10+1)。使用功率谱对数的短时间傅立叶变换来转换每个帧,以形成梅尔尺度滤波器组。然后通过离散傅立叶变换将它们转换为系数。每个帧将采用其原始的13阶MFCC,其一阶和二阶导数形成总共507(3913)个输入节点,这些节点将被馈送到RBN中。通过考虑重叠窗口,翘曲函数可以表示静态窗口中的变化,以便将哭声样本很好地表示为可训练的形式。每个哭声总共有100个样本,形成总共500个训练和测试样本。它们被分为5个交叉验证集,这将有助于下面描述的实验的推广。

使用RBM模型对输入信号的频谱可变性进行建模。在这项研究中,我们使用的RBM只与可见节点和隐藏节点之间的连接有关。RBM中不存在可见-可见连接和隐藏-隐藏连接。每个可见-隐藏连接都由具有权重和偏差值的能量函数表示。由于婴儿的哭声被认为是一个时间序列问题,因此使用的RBM类型是条件RBM,因为它能够通过将可见节点分组为一组来对序列数据进行建模,然后执行条件时间步长从一组移动到另一组。通过这样做,婴儿哭闹的动态可以在喂入隐藏层的下一层之前很好地建模。这里,帧组的总数是13,其中每个组包含39个节点(由转换为MFCC的窗口的每个帧表示)。由于隐藏单元内没有连接,所有隐藏节点都有条件地相互独立。对于实验,我们正在评估不同数量的隐藏节点,它们是200、500、1000或2000。隐藏节点的数量将改变CNN的结构,但是对于应用于CNN输入的具有不同缩放的所有不同数量的隐藏节点,CNN的输入节点的分组方法是相似的。

CNN层由卷积层和最大池化层组成。RBM输出连接到作为卷积层的CNN的输入层。为了简单起见,我们使用一个输入层和一个隐藏层。卷积层将滤波器应用于RBN的输出层,其中每个滤波器沿着输入空间广义化。在这项研究中,我们评估了滤波器大小为4个波段的卷积层,每个波段的总滤波器为100个。RBM中使用的200、500、1000或2000个输出节点与100个滤波器进行卷积。每个带都有自己的共享权重,该共享权重连接到卷积层的隐藏层,每个带都用共享权重卷积到隐藏层,这减少了混合系统中的节点总数,从而减少了可能在CNN层中产生的过拟合。对于最大池化层,我们正在评估最大池化的不同频带大小(1-8)的使用,以确定哪种最适合混合系统。CNN的输出层是一个有五个节点的层,也相当于婴儿哭闹的总数。当每个频带向输出层汇集时,顶层中的较低数量提供了CNN训练的收敛性。RBM-NN混合的整个架构如图所示。1。V和h分别是可见和隐藏的权重连接,B是添加到连接的偏置。

可见隐藏的每个连接都使用与softmax相同的能量函数来建模婴儿哭泣的联合概率函数[7]。能量连接功能如下。

隐藏层的概率公式化为

其中v和h分别表示可见节点和隐藏节点;i和j分别表示可见节点和隐藏节点的权重连接;b表示偏差;z是概率常数。为了有效地训练形成的RBM,因为隐藏层是条件独立的,并且条件RBM的结构是我们将可见节点分组到不同的组中的,我们将使用吉布斯采样,将一个可见层组的采样值交替到隐藏层,然后重复它,使用下面的分布将能量函数的另一可见层组映射到能量函数的其他可见层组。

通过使用负对数似然的随机梯度下降求解方程二来更新能量函数的权重和偏差,如下所示,其中ais是学习率(在本研究中仅使用0.01),m是平滑权重和偏差更新的动量。与其他使用RBM进行分类的研究相比,这些研究使用可见隐藏连接上梯度的收敛-发散(CD)近似,本研究中使用的CD公式是一个简化版本,其中通过吉布斯采样器对样本进行广义化,将婴儿的哭声动态数据公式化为实值特征向量。最后,为了加快训练速度并避免RBM过拟合,在训练过程中添加了以下生成和判别优化器。对于CNN层,使用Adam优化器的随机梯度下降和30%的丢失率来训练所有连接。所有可见层和隐藏层都以共享权重连接,因此权重的更新与所有共享权重并行发生[8]。

婴儿的哭声识别平均结果如表1所示。结果表明,RBM中隐藏层节点数量呈增加趋势,提高了精度。最佳结果是具有2000个隐藏节点的RBM,CNN带大小为4,在五次交叉验证中实现了78.6%的平均准确率。根据该设置,五次交叉验证中的最高准确率为82%。最佳识别精度的混淆矩阵如表2所示。我们可以看到换尿布和不舒服的哭声是两种稍微混淆的哭声。然而,我们也注意到,将频带大小从1更改为8确实不会给结果带来任何重大变化(变化小于1%)。

posted @ 2024-05-20 19:15  mcu-ai-com  阅读(555)  评论(3编辑  收藏  举报