今天就介绍下啸叫相关的算法。啸叫(也称为音频反馈或回声反馈)通常是指在音频系统中,麦克风拾取到从扬声器发出的声音并将其再次放大和播放,形成一个闭环反馈系统,从而导致高频、尖锐、持续的噪音。这种现象通常出现在音响系统、会议系统、耳机、助听器,KTV等场合。
在【有问有答】如何生成丰富的啸叫样本?介绍了啸叫产生的原理以及如何根据rir生成啸叫信号。啸叫抑制可以通过硬件固化信号处理流程实现,也可以在软件层面使用对应的算法进行处理。其中有一种比较直观的方法是通过检测和定位啸叫的频率,并对这些频率进行抑制或滤除,来实现啸叫抑制。这种方法依赖于啸叫检测检测到产生啸叫的频率,然后设计陷波器进行抑制。
啸叫检测算法在啸叫抑制过程中需要频繁的触发,因此一般其计算开销不会很大,常用的方法是计算一组时域或者频域的特征。在频域上,啸叫频点功率很高,是一个峰值,远超其他语音或噪声频率的功率;在时域上,啸叫频点的功率有一个迅速增大的过程,达到饱和幅度后一直保持。可以根据这些特点提取对应特征,然后通过阈值进行判别。常用的特征有以下几种:
峰值阈值功率比(Peak-to-Threshold Power Ratio, PTPR)啸叫的功率通常远大于正常播放的音频。因此,设定一个功率阈值是非常必要的,只有当某个频点的功率超过该阈值时,认为该频点发生了啸叫。PTPR的计算公式为:
峰值均值功率比(Peak-to-Average Power Ratio, PAPR)产生啸叫的频点功率通常远大于其他频点的功率,因此,可以先计算整个频谱的平均功率。接着,计算每个频点的功率与平均功率之比。对于比值大于预设阈值的频点,将其标记为候选啸叫频率。PAPR的计算公式为:
峰值邻近功率比(Peak-to-Neighboring Power Ratio, PNPR)啸叫信号通常是窄带信号,可以通过寻找功率谱中的峰值及其相邻点来帮助识别啸叫频率。具体做法是,对于每个频点,比较它与左右各M个相邻频点的功率。如果当前频点的功率比邻近的频点都要高,则将其标记为候选啸叫频率。通常,M的选取范围为5个点左右。PNPR的计算公式为:
峰值谐波功率比(Peak-to-Harmonics Power Raio, PHPR)语音谱中通常会出现谐波峰,而啸叫频率则不包含这些谐波峰。因此,可以通过检查一个峰值点的谐波频率的功率来判断该峰值是否为啸叫点。PHPR的计算公式为:
帧间峰值保持度(Interframe Peak Magnitude Persistence, IPMP)通常认为啸叫比语音或音调成分持续的时间更长,如果一个频点在连续几帧中都被检测为候选啸叫频点,则可以认为这个点确实发生了啸叫。为了实现这一方法,可以设定一个时间窗口(例如5帧),如果一个频点在这个窗口内超过3帧被判定为候选啸叫频点,则可以确定该频点为啸叫点。
帧间幅度斜率偏差(Interframe Magnitude Slope Deviation, IMSD)啸叫频点的幅度通常会呈现线性增长,因此在这一过程中,帧间斜率保持相对稳定。实现方法是通过观察多帧的变化区间,计算这些帧的平均斜率,并与区间内较短时间段的斜率进行比较。如果短时间段内的斜率差值低于设定的阈值,就认为该区间内的斜率保持不变,可能发生了啸叫。
对上面的的啸叫信号逐帧计算其PHPR,得到的结果如下视频所示,可以发现在啸叫的频点附近出现了比较明显的峰值,然而也容易看出仅仅通过PHPR单一特征,很容易发生误检,在实际使用中一般组合上述特征以提高啸叫检测准确性。为了获得更好的检测性能,可以将多个准则通过逻辑运算符进行组合,这种组合方式能显著提升性能。以 PHPR 和 IMSD 准则的与组合为例,当然,这种方法也适用于任何其他准则的组合。比如我们定义幅度的特征为
[1]. https://phaidra.kug.ac.at/open/o:11450
[2]. https://israelcohen.com/wp-content/uploads/2024/02/Howling_Detection_and_Gain_Control_for_Speech_Reinforcement_in_a_Noisy_Car_Cabin_Environment-1.pdf
[3]. https://vocal.com/voice-quality-enhancement/howling-detection-based-on-lms-algorithm/
[4]. https://uol.de/f/6/dept/mediphysik/ag/sigproc/download/papers/phd/Schepker_PhD_Thesis.pdf
[5]. https://zhuanlan.zhihu.com/p/664428852
[6]. https://theses.eurasip.org/media/theses/documents/van-waterschoot-toon-design-and-evaluation-of-digital-signal-processing-algorithms-for-acoustic-feedback-and-echo-cancellation.pdf