处理音频 click/pop 声音的算法

Algorithm to deal with Audio click/pop sounds

我正在制作一个可以播放和停止声音的声音引擎。我的问题是,如果用户想要停止声音,我会立即停止它,即我将 0 作为 PCM 值发送。这会产生爆音/咔嗒声,因为 PCM 值从 0.7 下降到 0 立即导致 pop/click 声音,这听起来很烦人。

我正在寻找一种算法或方法来处理这些音频点击/弹出。处理音频点击的最佳做法是什么?有没有通用的方法来解决这个问题?我是音频 DSP 的新手,我找不到好的答案。

当你突然切断声音时,你正在将它乘以阶梯形信号。

当您将两个信号相乘时,您对它们的频率进行了卷积。阶梯形在所有频率下都具有能量,因此乘法会将声音的能量分散到所有频率上,从而发出爆裂声。

相反,您想将声音淡出 30 毫秒左右——这仍然非常快,听起来像是突然停止,但不会有爆音。

你应该使用形状像 1-t2 的曲线来调制音量,或者其他没有明显高频成分的东西。这样,当它在频域中与原始声音进行卷积时,就不会产生任何新的频率。