作者:网易云信音频实验室
网易云信音频实验室持续在实时通信音频领域进行创新,基于 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、移频器:升高或降落输入音频旗子暗记的频率,改变频率的输出旗子暗记再次进入系统不会和原始旗子暗记频率叠加,达到抑制啸叫,这种方法用在对音质哀求不高的场景。然而在 TC 场景下,啸叫频点会涌现扩散特色,故移频无法担保能够完备办理啸叫问题。
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 梅尔谱,即(13260);同时经由 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->1TN(true negtive);实际为假,判断为假, 0->0FP(false positive):误检率,实际为假,判断为真, 0→1FN(false negtive): 漏检率,实际为真,判断为假, 1→0P(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 噪声抑制,进一步提升用户的体验。