降噪是声音录制和后期制作中经常会用到的程序。降噪的原理是利用噪声和信号之间的模式差别识别出噪声。信噪比越高,声音之间的差别越大,就越容易分离。现在常用的差别包括响度和频率之间的差异。一些常见的噪声已经被总结出了很多特征,有很多专门的工具来去除。
用频率差异去除电流声
电流声是指交流电频率进入了声音。如果录音设备用的是直流电,通常情况下都不太会出现。但是,如果用的是交流电供电,或者电磁屏蔽没有做好,声音信号里面就有可能混入交流电频率。
用频谱图可以比较容易的看出是否有电流声。比较极端的电流声
图片来源:[维基百科](https://en.wikipedia.org/wiki/Mains_hum)用频谱图有时还可以顺便看出其他类型的噪声,比如下面图中的高频噪声:
图片来源:[Audacity Wiki](http://manual.audacityteam.org/man/notch_filter.html)在 Audacity 里面,可以用 Notch Filter 来去除特定频率的噪声。
用响度差异去除白噪声
白噪声的音量通常不大,但是频率分布广,可以采用 Noise Gate 的方式来去除。Noise Gate 是设定一个音量门槛,所有低于这个门槛的都定义为噪声。因为一旦音量超过这个门槛,声音就不会有任何变动,所以 Noise Gate 一般来说都不会破坏音乐或者谈话质量。
如果噪音太高,与语音的响度差别不明显,用 Noise Gate 的方式就不容易去除。
Audacity 里面的 Noise Gate 是一个第三方插件,Level Reduction 和 Attack/Decay 参数都是为了避免降噪过后缺乏过渡,出现失真。Level Reduction 的默认值是 -12 dB,最大可以到 -100 dB,但是太大之后,降噪部分容易与语音片段分隔太明显。Attack/Decay 也是在降噪和未降噪片段之间留一些缓冲期。Gate threshold 就是重要的分隔线。设定这个值之前可以用 Noise Gate 提供的 Analyse Noise Level 选定一部分噪音片段测量一下噪音的响度。
综合频率和响度差异的降噪方式
Audacity 自带的 Noise Reduction 功能综合了频率和响度差异来区分信号和噪声。它会根据你指定的噪声片段,将其不同频率带的响度归纳出来。如果一个声音片段的某个频率带响度低于这个参考值,就把这个频率带响度降低。因为用了频率特征,如果参数设定不合适,会损害信号质量。
- Noise reduction (dB):这个应该是指把噪声降低多少分贝。取值范围为0-48,默认值为12,应该是指把音量降低到1/4。
- Sensitivity:取值范围0-24,默认6。
- Frequency smoothing (bands):取值0-12,默认3。这个值越大,频率带越多,也越容易降低信号质量。3个 bands 应该差不多代表着高中低频。
广义的降噪
降噪可以看成是特殊的信号分离。广义上说,所有想要从单个音轨上分离去除的声音都是噪声。不同声音之间的模式差别识别越好,声音就分离得越好。现在的声音分离方案还处在比较初步的阶段,适用场景和分离效果都比较有限,这个领域应该是机器学习可以大展拳脚的领域。
ICS-FORTH Audio Group 做出的声源分离就是这种广义降噪的体现。但是这个视频里面的声源分离用到了8个麦克风组成的阵列,对一般的声音后期处理没有多大帮助。
Stanford 的博士 Nicholas J. Bryan 在他的博士论文里开发了一个互动式的音频分离软件 Interactive Source Separation Editor ISSE,可以把不同的声音分离开来。他的 Demo 里面展示了电话铃声与语音的分离,不同乐器的分离,以及人声与背景音乐的分离。(Nick 毕业之后去了苹果。)
如果想做其它的声音分离,例如从音乐中分离伴奏和人声,有专门的工具可以处理。Audacity 里面带有 Vocal Remover 和 Vocal Reduction and Isolation,还列举出了一系列可以用的第三方插件。这些工具的主要原理是双声道音乐中的人声通常都在正中间,而乐器录制的时候则有可能有左右区别。根据这种左右区别,把其中一个声道 invert,然后叠加到另一个声道上,就可以消除很大一部分中置人声。
网友评论