Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

ICASSP 2022 | 89.46%检出率,网易云信音频实验室提出全球首个AI啸叫检测方案

网易云信音频实验室持续在实时通信音频领域进行创新,基于 AI 的啸叫检测方法的研究方案被 ICASSP 2022 接收,并受邀于会议面向学术界和工业界进行研究报告。

ICASSP (International Conference on Acoustics, Speech and Signal Processing) 即国际声学、语音与信号处理会议,是 IEEE 主办的全世界最大的,也是最全面的信号处理及其应用方面的顶级会议,在国际上享有盛誉并具有广泛的学术影响力。2022 年线上会议于 5 月 7-13 日举行,线下会议于 5 月 22-27 日在新加披举行。

图片

本次论文的接收是网易云信音频实验室继 AI 音频降噪、AI 音乐检测 2 篇论文被 INTER-NOISE 2021 收录之后,在音频信号处理领域又一新的里程碑。AI 啸叫检测也是国际上首次将 AI 和啸叫问题进行深度结合的实践,该研究结果包括 89.46% 的检出率,以及 0.40% 的误检率,在实际应用中有着广泛意义。

图片

图片

论文地址:https://ieeexplore.ieee.org/document/9747719

啸叫产生的场景、原因及特征

啸叫产生的场景

啸叫现象在现实生活中常有发生,在传统的场景中,例如会议室、KTV 等公放拾音系统,助听器,带有降噪透传或者耳返功能的耳机等。

图片

随着实时通信(RTC)领域的发展,啸叫的产生也有了新的场景,尤其当多个设备在同一物理空间同时入会时,极易出现啸叫现象。

图片

啸叫产生的原因及特征

首先分析一下传统的场景中,当声学传输路径存在反馈闭环通路 (麦克风 -> 扬声器 ->麦克风),就有可能产生啸叫。

图片

在反馈控制理论中,可以通过奈奎斯特稳定性判据进行判断,如果反馈系统处于非稳定状态,则会导致啸叫的产生。从系统传递函数的奈奎斯特图或者 Bode 图中可以直观的分析出系统的稳定性,声学系统产生啸叫的必要条件是:

1) 反馈信号和输入信号同相;
2) 反馈环路为正反馈,即对应的开环增益大于 1。
图片

图片

这里 R(s)代表系统的输入,可以理解为外界的激励信号;G(s)代表前向传递函数,可以理解为麦克风拾音到扬声器播放这条路径;H(s)代表反向传递函数,可以理解为扬声器播放到麦克风再次拾取声音这条路径。

同时需要强调的是,啸叫产生的原因是系统的稳定性出了问题,和外界的激励信号没有关系。

在传统的场景中,由于系统相对稳定,所产生的啸叫具有明显的时频域特征,例如具有稳定的啸叫频点,啸叫的能量逐渐增大,并且会长时间持续产生。下面给出了两个示例。

图片

针对这一类啸叫场景,往往有两种解决方案,第一类是根据系统的分析,预先针对系统进行更加合理的声学设计(如剧院声学设计、耳机声学设计、指向性麦克风等),第二类是在线进行啸叫检测,根据啸叫的特征,从信号处理的角度检测是否产生啸叫、啸叫频点等,然后利用检测的结果进行啸叫抑制。

RTC 场景中,当多设备位于同一个物理空间时,同时进入线上会议,此时便会存在多条声学反馈环路,极易导致啸叫的产生。最简单的情况是 2 个移动设备与会,会存在如下的反馈环路。

图片

和传统场景不同的是,RTC 场景中啸叫具有复杂性、多样性、非线性等特征,主要是由于 RTC 系统的复杂性带来的,整个系统音频的框图如下。

图片

由于链路中存在音频算法的处理(典型的如 3A 处理),网络传输的稳定性,环境的多样性,设备的多样性,设备位置的变化等等非线性和多样性因素的存在,整个系统呈现出非线性、时变的特征,从而导致最终啸叫表现出间断性、多频点、频点扩散、频点移动、点叫等等的特征。

图片

也正是因为场景的复杂性以及啸叫特征的多样性,基于传统的信号处理的检测方案很难准确的捕捉到 RTC 场景下的啸叫特征。而网易云信正是基于场景的深入分析,将 RTC 场景下的啸叫检测问题和 AI 技术相结合,进行创新实践。

啸叫检测和抑制的传统解决方案

首先介绍一下啸叫检测和抑制的传统解决方案,这些方案在传统场景中有着高效的应用。

基于信号处理的啸叫检测方案

传统场景下的啸叫具有明显的时频域特征,故可以使用一些信号特征进行检测:

  • 频域上,啸叫频点功率很高,是一个峰值,远超其他语音或噪声频率的功率;

  • 时域上,啸叫频点的功率有一个迅速增大的过程,达到饱和幅度后一直保持。


典型的,会考虑如下 6 个基本特征:

1)  峰值阈值功率比(Peak-to-Threshold Power Raio, PTPR)

啸叫的功率远大于正常播放的音频。故设定一个阈值,只有功率超过阈值的频点,才会进行啸叫检测,减少无意义的检测判决。

图片                   

2)峰值均值功率比(Peak-to-Average Power Raio, PAPR)

产生啸叫的频点功率远大于其他频点的功率,故可以先计算出整个频谱的平均功率,然后计算每个频点功率与平均功率之比。比值大于预设阈值的频点,记为候选啸叫频率。 

图片

3)峰值邻近功率比(Peak-to-Neighboring Power Raio, PNPR)

PNPR 寻找功率谱的峰值点,加入候选啸叫频率。可以选取左右各 M 个相邻频点进行比较,当前频点功率比邻值都高时,记为候选啸叫频率,M 选取 5 点左右。

图片

4)峰值谐波功率比(Peak-to-Harmonics Power Raio, PHPR)

语音谱有谐波峰,而啸叫频率是不含谐波峰的,故可以根据一个峰值点的谐波频率功率是不是也很大,来判断该峰值是否为啸叫点。

图片

5)帧间峰值保持度(Interframe Peak Magnitude Persistence, IPMP)

IPMP 是时域特征,如果一个频点,连续几帧都是检测出来的候选啸叫峰值,那就认为这个点确实发生了啸叫。实现时可以选定 5 帧,超过 3 帧是候选啸叫频点的位置,判定为啸叫点。

图片

6)帧间幅度斜率偏差度(Interframe Magnitude Slope Deviation, IMSD)

IMSD 也是时域特征,是从啸叫开始发生时判断,此时啸叫频点幅度线性增长,帧间斜率将会保持不变。取多帧进行区间观察,计算多帧平均斜率与区间内更短区间的斜率之间的差值,如果差值在设定阈值以下,就认为该区间斜率保持不变,可能是发生了啸叫。

图片

频域特征 PTPR、PAPR、PNPR、PHPR 都是对一帧内频点进行分析,而时域特征是对多帧间的特征进行分析。所以在进行判决时,一般先对每帧频谱进行频域特征分析,然后对累计的时域特许证进行分析。

当然,其中的一些特性在某些场景中不一定明显,比如 PHPR,有些啸叫的系统是多频点的,并且高频确实是基频的谐波成分;比如 IMSD,在有外界干扰的情况下,这个特征也会被弱化。

更多优化的方法包括利用谱平坦度、基于时频谱统计分析、结合 VAD 等等,大多也都是基于以上几个特征,进行更细精度的优化,但均存在相对明显的误检,尤其对音乐信号不太友好。在后续的实验中,该研究也选取了一种信号处理方案进行对比。

基于信号处理的啸叫抑制方案

啸叫抑制方案大体分为三种:

  • 一种是试图破坏系统的传递函数,使得啸叫点附近获得更多的裕度,从而提升系统的稳定性;

  • 一种是基于检测出的啸叫频点,进行针对性抑制;

  • 一种是基于自适应滤波的动态抑制。


1) 破坏系统特性 – 移频移相方案

啸叫产生的原因是系统的幅度响应和相位响应对应的啸叫点的裕度不够,可以试图通过移频或者移相的方法,改变这一特性,使得候选的啸叫点具有足够的裕度,从而改善系统的稳定性。

图片

  • 移频方法包括 Hilbert 变换、变调算法(如 phase vocoder、PSOLA 等);

  • 移相方法包括全通滤波器等。


但这类方法的最大问题是,移频移相会对信号带来失真。

2) 基于啸叫检测的频点压制方案

此方案严重依赖于啸叫频点的检测,根据啸叫频点进行针对性的压制。      

图片

啸叫频点检出之后,进行 notch 陷波器压制。当然也有一些方法跳过了啸叫频点的检测,使用自适应的 notch filter 进行啸叫抑制。

3) 基于自适应滤波的啸叫抑制方案

通过使用 lms 、nlms 等自适应算法,把麦克风二次采集的反馈信号从麦克风信号中滤掉。这种算法会减小扩音系统的空间感,同时对语音损伤较大,适用于对音质要求不高的场景。          

图片

总体来看,传统的啸叫抑制算法的特点为:

1、移频器:升高或降低输入音频信号的频率,改变频率的输出信号再次进入系统不会和原始信号频率叠加,达到抑制啸叫,这种方法用在对音质要求不高的场景。然而在 RTC 场景下,啸叫频点会出现扩散特征,故移频无法保证能够完全解决啸叫问题。

2、陷波器:通过降低啸叫频率点处的增益,破坏啸叫产生的增益条件。即对信号中出现的较明显的几个或十几个产生啸叫的频率点降低 db,从而达到抑制啸叫的目的。然而本方案依赖于精准的啸叫频率检测,但是如前分析,很难在 RTC 场景下估计出准确的啸叫频率。

3、自适应反馈抑制算法:通过使用 lms、nlms 等自适应算法,把麦克风二次采集的反馈信号从麦克风信号中滤掉。这种算法会减小扩音系统的空间感,同时对语音损伤较大,适用于对音质要求不高的场景。

自适应反馈抑制的方法思路类似于AEC,在自激啸叫的场景可以尝试,但是如果抑制存在残留,实际使用中仍会产生较弱的啸叫;然而在 RTC 场景下,啸叫是由两个手机构成的环路形成,啸叫的时候是没有对端的下行参考信号的,故无法实施。

基于 AI 的啸叫检测方案

对场景以及传统解决方案的分析,并结合 RTC 场景啸叫的特征,该研究选择使用 AI 模型进行啸叫问题的处理,首先需要准确的检测出啸叫是否发生。

基于 AI 的啸叫检测方案,整体流程为:

图片

数据集

由于问题的新颖性,目前业界没有 RTC 场景下的开源啸叫数据集。因此该研究基于真实场景,利用网易云信音频实验室等资源,进行了大量的数据采集,完成云信啸叫数据集的构造,总共包括 52h+,并进行了精细的标注。

采集数据主要涉及信号、设备、环境、场景等几个方面。

  • 信号方面,采集的信号为设备麦克风采集并转换传给 3A 算法的输入信号,播放的信号包括语音、音乐、噪声、环境声以及一些特殊的声音,如铃声、鸟叫声、口哨声等。

  • 设备方面,设备频响的多样性以及适配设备 3A 算法的多样性,包括不同性能、样式、处理程度不同的 3A 算法的机型进行覆盖。

  • 环境方面,覆盖安静、嘈杂等不同信噪比、混响的环境。

  • 场景方面,场景主要为啸叫与不啸叫的场景,包括单设备入会、多设备入会,设备处于不同的物理位置等等。


模型与优化

RTC 场景下,需要关注的 3 个难点:

1)在保证检出率的前提下,误检率要尽可能低;
2)由于啸叫的特征与设备、环境等多因素相关,因此模型需要较好的泛化能力;
3)实时场景下,模型需要尽可能小。

本文针对上述 3 个问题,参考音频事件检测的相关思路和方法,进行了优化。

输入特征

由于啸叫频率往往处于 8kHz 以内,该研究将所有数据重采样到 16kHz,并设定帧移为 40ms,序列长度设置为 1.28s,然后对数据求 60 维的 log 梅尔谱,并对训练集 + 验证集的数据进行了归一化处理。

模型结构

图片

  • input: 模型的输入为 32 帧的 log 梅尔谱,即(1*32*60);同时经过 norm 操作;

  • stem block: 包含 3 层 CNN 结构,每层分别包含 16,32,32 个卷积核,卷积核大小为(3,3)、stride 为(1,1),每个 CNN 之后通过 batchnorm 层,ReLu 激活函数,以及 average pool 池化层,池化层的参数分别为(1,5),(1,4),(1,3),之后再加上一层 dropout 防止过拟合;这样通过 CNN 结构进行特征学习,并且将频率维度融合到 channel 维度;

  • Recurrent blovk: 2 层双向 LSTM,通道数为 32,通过 RNN 结构学习时间上的特征(temporal context information);

  • FC block: 通过一层线性层过渡,通道数为 32,同样添加了 dropout 层;

  • Attention block:通过一层线性层达到分类的目的,通道数为 1,激活函数为 sigmoid;

  • output: 模型的输出为 32 帧,即帧级别的输出。


最终转换为 binary 的结果需要对 sigmoid 的输出进行门限判决,门限默认设为 0.5。

损失函数

针对误检率的问题,该研究使用了 weighted binary cross entropy loss。

图片

模型压缩

为了进一步满足 RTC 实时性要求,该研究使用了模型压缩技术,具体使用了基于L1 filter 的剪枝方法以及基于 QAT 的量化方法,这进一步减小了模型的大小和运算量。

评价指标

针对 RTC 场景,该研究主要使用了检出率 TP 以及误检率 FP 最为评价指标,同时计算了 F1 score 作为参考。

  • TP(true positive):检出率,实际为真,判断为真, 1->1

  • TN(true negtive);实际为假,判断为假, 0->0

  • FP(false positive):误检率,实际为假,判断为真, 0→1

  • FN(false negtive): 漏检率,实际为真,判断为假, 1→0

  • P(precision):精准度,TP / (TP + FP),即判断为真的中,正确的数目

  • R(recall):召回率,TP / (TP + FN),即实际为真的中,检出了多少

  • F1 socre:2 * P * R / (P + R),即 P 和 R 的几何平均值


实验及结果

本文主要进行了 4 个实验对比。

1. 模型对比

该研究对比了 4 个方法,包括基于信号特征的传统信号处理检测方法;基于 CNN 的神经网络方法;基于 RCRNN 的神经网络方法;以及本文提出的基于 CRNN 的神经网络方法。

1) 基于信号特征的传统信号处理检测方法:结合了 PTPR/PAPR/PNPR/IPMP 四个特征,以及使用了 VAD 作为辅助;
2) 基于 CNN 的神经网络方法: 主体结构使用了 3 层 CNN,相比于 CRNN 的方案,去除了 RNN 层;
3) 基于 RCRNN 的神经网络方法:基于 CRNN 结构,增加了残差卷积结构,并且使用了基于时空卷积的 attention 模块,详细内容可以查看论文参考。

在测试集中,本文方法达到 89.46% 帧级别的检出率,以及 0.40% 帧级别的误检率。

图片

从实验结果得出,基于神经网络的方法表现明显优于传统的信号处理方法;RNN 结构的使用可以明显降低模型的误检率;尽管更复杂的模型在声音事件检测任务中提供更好的表现,但是更复杂的模型并没有更多的提升其在啸叫检测任务中的表现。

本文针对误检率的分析发现,多数的误检信号集中在具有和啸叫类似特征和听感的信号,例如鸟叫声、口哨声。

2. 模型优化项对比

该研究对比了数据增强(变速变调、加噪、谱增强等方法)、参数正则化、dropout 层等优化项的表现。

1)使用数据增强时,该研究在 time strectch/pitch shift/frame shift/add gaussian noise/time mask/frequency mask 等 6 种方法中,随机选取若干种进行数据扩充,并重复 4 次,这样可以获得 5 倍的实验数据;
2) 该研究尝试了在训练时不加入参数正则化的操作;
3) 该研究尝试了在模型中各层 (CNN/FC) 不加入 dropout 层。

图片

从实验结果得出,数据增强可以有效地提升检出率和 F1 score,尤其是 F1 score,作为声音时间检测的一项指标,数据增强会有效提升任务表现,但是对于啸叫检测任务而言,由于误检率也明显提升,对于实际应用并没有明显的帮助;去除了参数正则化和 dropout 层并没有导致所谓的过拟合现象,在测试集中仍然有较好的表现,尤其是检出率和 F1 score,但是同样,会进一步提升误检率,对于啸叫检测的特定任务,并没有表现出更好的效果。

总而言之,该研究会更加关注误检率的表现。

3. weighted BCE loss 对比

此实验验证了不同α系数对检出率和误检率的影响。可以看出,α小于 1 的取值,会进一步降低误检率,更适用于本文的应用场景;而α大于 1 的取值,可以有效地提升检出率。对于相关任务,可以针对检出率或者误检率的要求,有借鉴意义。

图片

4. 模型压缩

最后,实验使用了基于 L1 filter 的剪枝方法以及基于 QAT 的量化方法,模型大小从 121kB 压缩到 39kB,检出率从 89.46% 略微降低到 87.84%,误检率从 0.40% 略微增加到 0.49%。

在模型速度上,在华为 X10 手机上进行实验,每 10ms 数据的最大处理时间约 62.5us。

总结

本文中,从啸叫产生的场景、产生的原因及特征进行了详细介绍,并且分析了传统的基于信号特征的解决方案,及其在 RTC 场景中的不足,最后介绍了基于 AI 的啸叫检测方案,论文的主要贡献在于将啸叫问题和神经网络进行了深度的结合,在效果和性能表现上都达到了较为理想的状态。

未来展望

啸叫检测的结果将会为后续的啸叫抑制提供有力的支持,从应用角度来看,可以利用检测的结构通知用户,或者进行静音、降低音量操作,当然,更加理想的方式是能够将啸叫信号进行消除,同时最大程度上保留有用的信号。这一点有一点类似降噪的思路,所以该研究后续也会深度结合 AI 啸叫检测和 AI 噪声抑制,进一步提升用户的体验。
理论音频处理
相关数据
华为机构

华为创立于1987年,是全球领先的ICT(信息与通信)基础设施和智能终端提供商。

https://www.huawei.com/cn/
网易机构

网易成立于1997年6月24日,是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,开设新闻、娱乐、体育等30多个内容频道,及博客、视频、论坛等互动交流,网聚人的力量。

https://www.163.com/
重采样技术

重采样是指根据一类象元的信息内插出另一类象元信息的过程。在遥感中,重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。常用的重采样方法有最邻近内插法(nearest neighbor interpolation)、双线性内插法(bilinear interpolation)和三次卷积法内插(cubic convolution interpolation)。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

结构学习技术

结构化预测是监督学习,分类和回归的标准范式的一种推广。 所有这些可以被认为是找到一个能最大限度减少训练集损失的函数。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

剪枝技术

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

控制理论技术

控制理论是工程学与数学的跨领域分支,主要处理在有输入信号的动力系统的行为。系统的外部输入称为“参考值”,系统中的一个或多个变数需随着参考值变化,控制器处理系统的输入,使系统输出得到预期的效果。 控制理论一般的目的是借由控制器的动作让系统稳定,也就是系统维持在设定值,而且不会在设定值附近晃动。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

助听技术

声音是由物体振动产生,正在发声的物体叫声源。声音只是压力波通过空气的运动。压力波振动内耳的小骨头(听小骨),这些振动被转化为微小的电子脑波,它就是我们觉察到的声音。内耳采用的原理与麦克风捕获声波或扬声器的发音一样,它是移动的机械部分与气压波之间的关系。自然,在声波音调低、移动缓慢并足够大时,我们实际上可以“感觉”到气压波振动身体。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

信号处理技术

信号处理涉及到信号的分析、合成和修改。信号被宽泛地定义为传递“关于某种现象的行为或属性的信息(如声音、图像和生物测量)”的函数。例如,信号处理技术用于提高信号传输的保真度、存储效率和主观质量,并在测量信号中强调或检测感兴趣的组件。我们熟悉的语音、图像都可以看做是一种信号形式。因此,对于语音、图像的增强、降噪、识别等等操作本质上都是信号处理。

模型优化技术

像卷积神经网络(CNN)这样的深度学习模型具有大量的参数;实际上,我们可以调用这些超参数,因为它们原本在模型中并没有被优化。你可以网格搜索这些超参数的最优值,但需要大量硬件计算和时间。改进模型的最佳方法之一是基于在你的领域进行过深入研究的专家的设计和体系结构,他们通常拥有强大的硬件可供使用。常见的简单模型优化技巧包括迁移学习、dropout、学习率调整等

反馈环技术

反馈回路是系统输出的某些部分(或全部)用作将来操作的输入的环结构。

量化技术

深度学习中的量化是指,用低位宽数字的神经网络近似使用了浮点数的神经网络的过程。

暂无评论
暂无评论~