基于多状态跳转模型的场景独立音频 事件检测方法*
2019-03-22王健飞张卫强
王健飞,张卫强,刘 加
(清华大学电子工程系,北京 100084)
音频事件检测任务(sound event detection, SED) 在近10年里得到学界的广泛关注。其检测内容主要包含两部分:检出音频中含有事件片段的起止位置;识别事件片段的具体内容。音频事件检测的应用已在多个领域展开,包括公共安全监测领域[1]、智能生活领域[2]、医学研究领域[3]、体育竞技领域[4]等等。
音频事件检测的研究方向分为两种:基于场景 (scene-dependent) 的音频事件检测和场景独立 (scene-independent) 的音频事件检测。基于场景的音频事件检测任务中[4-5],待检测事件和场景具有相关性,事件种类有限,场景噪声单一,用于通过关键事件的检测实现对场景状态的监控。场景独立的音频事件检测任务中[6],待检测事件与场景没有必然联系,事件种类任意,场景噪声复杂,研究重点在于理解事件特性和建模方法。
研究场景独立的音频事件检测需要解决4个基本问题:1) 数据不均衡。事件发生的重要性往往和发生频率成反比,关注事件一般难以通过正常方式进行大量采集,例如枪击声、爆炸声等。但是考虑到事件发生的场景有多种可能,需要采集大量的场景音频作为负样例,造成正负训练样例不均衡。2) 混叠事件检测。在现实生活中经常出现多类事件重叠发生的情况。音频重叠方式为事件波形相互叠加,增大了待检测事件之间的相互干扰。3) 复杂背景噪声。检测系统需在多种背景噪声中检出事件音频,要求系统具备较强抗噪性。4) 音频事件较大的类内差异。音频事件定义往往基于任务需求和人的认知,具有更高层的抽象意义,造成同类事件的物理实现具有较大差异,例如警笛声中救护车警笛和消防车警笛的频域能量分布和时域变化规律均有较大差异。
对于前两个问题,通过数据增强方法和人为简化研究对象已得到缓解。例如对于数据不均衡问题,采用数据合成、背景填充和多权重训练等技术调节。对于混叠事件检测问题,将音频事件检测分为单类音频事件检测 (monophonic SED, MSED) 和多类音频事件检测 (polyphonic SED, PSED)。在MSED任务中,人为控制事件同时发生数量不大于1。
本文主要研究复杂噪声环境下的MSED问题。该问题在国际上主要有两种技术路线:1) 基于最大化类间区分能力,表现为重视特征提取方法的研究。传统的特征提取方法由于设计复杂、可扩展性差等原因,近年来少有人研究。基于卷积非负矩阵分解[7](convolution non-negative matrix factorization, CNMF) 的特征提取思路仍有部分人在研究,其难点主要在于对字典的准确提取。基于深度学习的特征提取方法由于方法简单、效果突出,是目前较为活跃的研究热点[8-9]。2) 基于最小化类内差异,表现为构建符合事件基本特征的鉴别模型。事件之间的差异表现在模型类型和参数的不同,因此该方法的关键在于模型对事件分布的描述能力。基于隐马尔科夫模型 (hidden Markov model, HMM) 的系统被广泛引入音频事件检测领域[10-12]。该类系统根据事件在时域的变化规律,将其离散化为有限状态跳转序列,将对事件建模的问题转化为对事件状态建模,可以有效降低音频事件建模难度。
在本文中,我们提出基于多状态跳转模型的音频事件检测系统,多状态跳转模型针对现有较为单一的状态跳转模型进行改进。状态建模部分采用DNN和CNN两种网络。对DNN网络训练采用迁移学习和多任务学习以加强系统性能。多状态跳转模型在两种状态建模的系统上均取得有效的性能提升,并在基于CNN的系统上达到国际先进水平。
1 音频事件检测系统主要框架
音频事件检测系统主要由数据准备模块、特征提取模块、状态对齐模块、状态模型训练模块、状态发生概率检测模块和后处理模块组成(如图1所示)。
图1 SED系统框架图Fig.1 SED system framework
1.1 数据准备模块
数据准备阶段用于合成训练数据,抑制数据不均衡问题。考虑在各种场景的任意时间段发生事件的情形,我们将事件与场景进行随机地叠加以合成与背景噪声同量级的训练数据[13]。由于合成音频中有大量重复背景音频,合成后需要执行事件截取操作,只保留事件部分,另选取一定长度的场景音频作为负样例。
1.2 特征提取模块
SED系统使用梅尔频率倒谱系数 (Mel frequency cepstral coeficients, MFCC) 和对数梅尔能量 (log mel filter bank) 两种特征。采用300和22 050 Hz作为上下截止频率,设置帧长为40 ms,帧移50%。MFCC增加一阶差分和二阶差分共计60维,作为状态对齐模块的输入。对数梅尔能量特征维度为40维,作为状态模型训练和状态概率检测模块的输入。由于DNN无法学习到局部时序特征,因此使用时对前后各5帧特征进行拼接共计440维。提取特征后再对特征文件进行倒谱均值方差归一化。
1.3 状态对齐模块
状态对齐模块采用GMM-HMM生成模型进行对齐训练,将人工校对的事件级标注分解为状态级标注序列,同时训练事件的多状态跳转模型参数。
默认将每个事件设置为3状态跳转模型,将场景设置为单状态模型,并增加3状态静音模型和单状态短停顿模型分别用于吸收较长的静音片段和短暂停顿。模型训练基于Baum-Welch算法,该模块使用HTK[注]http://htk.eng.cam.ac.uk/实现。
1.4 状态模型训练模块和状态发生概率检测模块
状态模型训练模块用于训练各个事件状态的网络模型,可以使用DNN和CNN进行建模。状态发生概率检测模块用于计算帧级别的状态发生概率P(s|ο,λ),λ为模型参数,o为特征输入,s为音频事件状态。
在训练数据较少的情况下,使用预训练的方式训练DNN可以获得较好的网络收敛效果[14]。预训练部分训练深度置信网络(deep belief network, DBN),DBN由多个受限玻尔兹曼机(restrict Boltzmann machine,RBM) 堆叠而成。每层RBM的更新过程采用对比散度算法[15](contrastive divergence)。我们训练3层RBM,每层节点数设置为400。训练DBN后直接在网络末端增加状态输出层,用于输出分类信息。输出层节点数为22,包括15个场景状态、3个事件状态、3个静音状态和1个短停顿状态。目标函数采用基于softmax的加权交叉熵损失函数式:
J(θ)=
(1)
式中:θ为网络到输出层的权重向量;m为训练数据个数;k为输出层节点个数;y(i)为第i个训练数据的标签;x为网络输出;weight(i)为第i个标签的训练权重;1{·}为示性函数,表示当{·}中的条件满足时输出1,反之输出为0。隐含层层数为3,初始学习速率设置为0.001,当开发集损失变化率低于0.1时,对学习速率进行减半操作。当开发集损失连续3次迭代不再下降时则完成训练,采用随机梯度下降算法更新参数。
CNN训练采用5层网络结构,其中前3层为卷积层用于抽象音频特征,后2层为全连接层用于输出状态种类。卷积层的激活函数采用ReLU激活函数,相邻卷积层之间增加池化层,并对卷积层的输出进行dropout处理[16]以抑制网络的过拟合效应,此外,为加速网络的训练,我们还在网络中添加Batch Normalization层[17]。由于采用ReLU作为激活函数,网络训练不会出现梯度消失现象,因此对于CNN的训练,直接采用有监督的训练方式完成。损失函数仍然采用基于softmax的交叉熵损失函数,网络参数的更新方法采用Adam算法[18]。
状态发生概率检测模块计算输入特征帧对应各个状态的生成概率,其过程和状态模型训练模块的前向传导过程一致,这里不再详述。
1.5 后处理模块
后处理模块根据不同的状态模块采取对应的处理策略,对于DNN,采用解码模块以状态发生概率作为输入,利用状态跳转模型解码输出事件发生的时间段和事件标注内容。
对于CNN状态模型,由于CNN本身具有一定的短时域特征学习能力,因此直接对状态输出分数进行处理。后处理参数见表1。首先,根据最大的状态概率输出是否为事件状态,决定是否将该帧作为候选帧。计算连续候选帧之间的距离Df判断是否属于同一事件片段,计算同一事件片段中最大状态发生概率的平均值作为该段的分数输出,对于候选帧中帧数少于最小帧数Nf的孤立帧片段进行滤除。滤除后的候选帧中最大的分数输出段作为最终的事件候选位置。将候选事件位置的分数与门限值Tf进行比较,输出大于判决门限的事件片段。
表1 后处理参数Table 1 The parameters of post-processing model
2 系统改进
2.1 多状态跳转模型设计
音频事件多由发声单元特征和时域变化规律共同决定,特别地,大部分单个音频事件的持续时间较长,在持续时间段内的变化差异较大。同时由于音频事件本身的类内差异较大,例如不同小孩哭的发声器官不同,其哭声的变化规律也会由于情绪和外界刺激发生较大的变化。因此,无法对每一种事件进行精细化的状态划分,只能依据事件整体的变化规律,通过状态约束对音频事件的时域特性进行建模,如图2所示。
图2 多状态跳转模型Fig.2 Multi-state transition model
首先通过观察音频事件状态的变化规律,将其归纳为3种情况,即递进型、对称型和复杂型。并依此设计3种状态跳转模型,如图2(a)所示。
第1种拓扑结构对应线性跳转模型(left-to-right, LTR),状态只能从左往右进行传递,对应状态变化呈渐进性规律的音频事件,每个状态均可实现自跳,以延长状态持续时间。从s2状态直接跳转结束的设计是为了增加模型的鲁棒性,同时也可以包含事件被中途打断的情况。从s3到s1的跳转则考虑到周期型事件的情况。第2种为对称型跳转模型(symmetric transition model, STM),对应状态变化呈对称性的音频事件,通过设置事件结束必须回归初始状态,强制实现状态变化对称型。第3种为全连接型跳转模型(full connection states, FCS),该结构中所有状态之间可以互相跳转,用于描述状态变化规律较为复杂的音频事件。
在CNN的实验部分采用如图2(b)中的状态跳转模型,放弃使用FCS跳转,保留STM跳转,并将原LTR模型转化成LTR I型和LTR Ⅱ型。其中LTR I型针对突发性事件,状态严格限制为从左往右进行传递,防止对齐过程中出现s3到s1的回跳现象。对于突发性事件,主要检测s1状态来判断事件是否发生。LTR Ⅱ型则仍然保留从s3状态到s1状态的回跳以满足持续性事件的变化需求。
实际应用中,可以根据待检测音频的变化规律,选择相应的状态跳转拓扑结构以搭建更为合理的HMM对齐系统。
2.2 迁移学习和多任务学习设计
迁移学习在解决神经网络训练的过拟合问题上具有良好的效果[19]。因此我们采用迁移学习策略(如图3所示)。先使用所有音频数据训练一个通用网络,通用网络的输出为所有事件的类别,通过增加训练数据可以使通用网络学习到多类事件之间更合理的区分性特征,而多类音频事件区分性特征的提取知识最终由通用网络的隐含层(base hidden layer, BHL) 参数保存。使用BHL作为通用区分性特征提取模型,初始化各个事件的网络模型参数,以将分类知识迁移到各类事件的网络模型中。在此基础上,使用各类事件的数据对网络进行更新,针对各自任务对模型进行不同程度的偏移训练,实现更强的区分性能。神经网络对于简单二分类任务可以实现很好学习效果,而通用网络训练承担对所有事件的分类任务,学习较为困难。为了引导网络向着期望的方向学习,我们在输出端添加一个简单的二分类任务来启发网络的训练。该任务将多类事件统一归为事件类,将其他各种场景噪声统一归为非事件类。任务相对简单且易学习。设计目的是让网络先学习到事件类和非事件类的概念,再对事件类中的各类事件进行细分。
图3 迁移学习策略Fig.3 Transfer learning strategy
通用网络的输出节点为30个,前28个节点表示各个事件、场景和静音模型的状态,后2个节点分别代表事件类和非事件类。
3 实验验证
3.1 实验数据
以下实验均在DCASE2017评测任务2的数据集[13]上进行。该数据集包括3类待检测事件,分别为枪击声 (gunshot, GS)、婴儿哭声 (baby cry, BC) 和打碎玻璃声 (glass break, GB),共计160条音频;并提供15类场景音频,包括市中心、海滩、公园、火车站等共计10 h。实验过程中,按照-5、0、5、10和15 dB合成45 000条训练数据和8 936条验证集。测试集采用任务2提供的开发集以便于进行系统对比,共计1 496条。
若数列由积分形式给出,而定积分又难以计算时,常用两种方法处理:一是利用积分中值定理去掉积分符号,再求极限;另一种是适当地放大与缩小被积函数,使得放大与缩小后的积分容易计算,再用夹逼定理求极限。
3.2 评价准则
参考DCASE2017评测任务2的评价准则,使用基于事件的F值(F-score) 和错误率(error rate, ER)作为评价指标[20]。
3.3 基线系统
基线系统为传统DNN-HMM系统。通过调整系统参数观察对训练数据不均衡问题的处理效果。系统调整的参数主要针对状态模型训练模块,包括训练数据中填充的背景音频长度、训练权重和网络深度。实验结果如表2所示,W表示训练负样例权重(默认正样例权重为1),L表示DNN层数。
表2 数据均衡方法效果Table 2 Results of the baseline with different parameters
实验结果表明背景音频长度和训练数据权重对系统性能的影响较大,反映出数据增强方法对解决数据不均衡问题起到调节作用。网络层数对结果影响不明显说明简单的网络结构就可以满足多状态分类任务,因此更容易出现网络训练过拟合现象。DNN-HMM基线系统可以实现的最好性能为F值75.7和ER 0.49。
3.4 多状态跳转模型对系统性能的影响
根据基线系统的表现,我们选用填充数据长度为5 s,DNN层数为3的系统配置,用于验证3种多状态跳转模型的效果见表3。
表3 多状态跳转模型结果Table 3 Results of DNN-HMM system with multi-state transition models
观察开发集的结果,STM结构对于具有对称性状态跳转事件如婴儿哭声的检测效果更好,LTR结构对于具有线性状态变化的事件,如碎玻璃声和枪击声的检测效果更优,FCS结构由于针对性不强,所以对于简单变化规律的事件性能反而不如前二者。观察测试集也可以发现类似的规律,相比开发集有两点差异:1)枪击声的检测中,使用FCS结构的结果优于LTR结构;2)枪击声和碎玻璃声在测试集的检测性能不同程度地低于开发集的检测性能。反映出测试集和开发集的差异较大的情况下,模型训练容易出现过拟合现象。对于过拟合现象更为严重的枪击声检测,FCS通用结构由于更灵活的跳转方式表现出微弱优势。
3.5 状态数量对多状态模型的影响
基于以上分析,根据开发集结果,选择STM和LTR两种跳转拓扑结构进行混合建模,使用STM拓扑为婴儿哭声建模,LTR拓扑为碎玻璃声和枪击声建模。结果表明,混合系统集成了以上两种结构的优点,使系统性能比单独使用一种拓扑结构的最好结果提升1个百分点,说明合理设计多状态跳转模型可以有效提升系统性能。在确定状态跳转结构之后,增加状态数量对系统性能影响的实验见图4。
图4 状态数量对多状态模型的影响Fig.4 Effect of state quantity on multi-state mode
3.6 迁移学习和多任务学习对系统性能的影响
从表3和图4的结果中不难发现,开发集和测试集中存在较大的性能差异,其中枪击声的过拟合显现最为严重。针对DNN-HMM系统在开发集和测试集上表现出的过拟合现象,我们选择采用迁移学习和多任务学习技术进行缓解。将混合多状态跳转模型系统作为对照见表4。结果表明,迁移学习训练对于测试集性能的影响较大。其中对于碎玻璃声的检测和枪击声的检测性能有较大的提升,有效地缩小了开发集和测试集的差异,但是对于婴儿哭声的检测反而有所下降。对比开发集和测试集,可以发现婴儿哭声的检测结果差异不大,因此不需要进行防止过拟合的迁移学习训练,这也反映出迁移学习对于过拟合现象的纠正作用较为突出,而对于非过拟合现象由于迁移学习的对象之间差异较大,反而会影响检测性能。
在迁移学习的基础上增加多任务学习训练,用于辅助网络往指定的方向收敛。多任务学习的次要任务为简单二分类任务,该任务从单帧的角度出发,重点在于区分事件和非事件。因此,对于注重单帧描述能力的事件,如枪击声和碎玻璃声,该方法有效地提升了检测性能。但同时,由于该任务忽视时序性特征,因此导致对于更加注重时序特征的事件如婴儿哭声的检测性能反而下降。对于枪击声的检测由于增加了状态数,增强了对时序性特征的描述,因此多任务学习的提升效果得到削弱。由此可得出结论,多任务学习可以有效引导网络训练方向,同时次要任务需要根据事件的特性进行合理的设计。
表4 迁移学习和多任务学习模型结果Table 4 Results of DNN-HMM system with transfer learning and multitask training
3.7 系统占用资源和运行效率
考虑到实际应用的需求,还应对系统资源占用情况进行分析。系统资源占用主要考量模型参数大小和计算速度两个因素。目前国际上相关领域的参考文献中对于模型参数和运行效率的分析对比较少,因此这里只介绍本系统的模型参数大小及计算速度情况作为参考。
系统改进部分对模型参数大小和计算速度不会有较大的影响。本系统DNN训练模块采用3层隐含层的全连接神经网络结构,约500 K个网络参数。CNN训练模块采用5层网络结构,平均750 K个网络参数。计算速度采用实时率(real time factor, RTF) 进行衡量,本系统使用1块K20 GPU, 测试部分的RTF为0.16。说明本系统可以实时执行音频事件检测任务。
3.8 SC-CNN系统性能及国际水平比较
SC-CNN系统采用CNN为事件状态建模,并采用基于状态概率分数的后处理手段获取事件检测结果。表5中将基线DNN-HMM系统,改进DNN-HMM系统,SC-CNN系统和国际比赛中的较好系统进行比对。
表5 SED系统框架比较Table 5 System comparison
文献[13]中直接采用DNN分类器对帧进行分类,该系统没有对音频事件进行状态级的细分,其性能较DNN-HMM的基线系统更弱,表明多状态对齐可以有效地提升系统性能。文献[21]中提出使用NMF进行音频事件检测的方法,并结合在线噪声学习(online noise learning, ONL) 辅助系统检测。由于NMF训练困难,因此性能低于SC-CNN系统。改进DNN-HMM系统相对于DNN系统和DNN-HMM基线系统有较为明显的性能提升,表明针对类内差异最小化的改进,如多状态跳转模型设计、迁移学习和多任务学习发挥了重要作用。文献[22]基于CNN和递归神经网络(recurrent neural network, RNN)取得本开发集的先进水平。文献[22]使用CNN提取短时音频特征,使用RNN提取长时音频特性,最后通过Sigmoid进行判决。基于CRNN的音频事件检测系统虽然可以利用更多的长短时特征,然而在有限训练数据的情况下,CRNN的训练难度会增大,因此系统的稳定性在低资源条件下得不到保障。相比较而言,SC-CNN系统可以获得更稳定的系统输出。
4 总结与展望
本文从多个基本问题出发,针对音频事件检测的特点和难点,提出构建音频事件检测的几点建议,包括训练数据对系统性能的影响,多种HMM状态跳转模型的讨论,以及迁移学习和多任务学习应对解决DNN训练过拟合问题的讨论和多状态跳转模型与CNN相结合的研究思路。结果表明,改进的DNN-HMM系统相比于基线系统分别有F-score值8.9%的相对提升和ER 19%的绝对下降。迁移学习在一定程度上可以缓解过拟合现象,但仍不能完全消除。多任务学习技术可以起到对网络训练的引导作用,合理利用多任务学习可以辅助网络提升性能。采用多状态跳转模型和卷积神经网络相结合可以使音频事件检测性能达到国际先进水平。
目前我们采取参与国际相关评测的方法对音频事件检测领域进行研究。该方法可以分析借鉴现有技术路线,便于与国际水平进行比较。但同时也受制于数据集大小的限制。今后我们将根据应用需求收集相关的数据集,进一步验证方法的有效性和普适性。从评测结果观察,深度学习技术取得了较好的成绩,并有成为音频事件检测技术主流的趋势。下一步我们将继续探索在有限资源下多状态跳转模型与深度学习技术的结合方法,以及较多资源条件下对深度学习的应用。