第一/二次滤波战争记录

syan 发布于 2020-05-19 2695 次阅读


听着《外婆的澎湖湾》记录一下有趣的故事,留给自己作为存档

5.22 有人说要给这篇作个序,好活

REAPER天下第一

事情的起因是天纵奇才zrb老哥在祈求信号与系统祖师爷奥本海姆拯救自己数字信号处理一门课时写的一篇段子。

在时域描述一个信号,通常以时间t和幅值作为坐标来描述,这种描述方式很直观,但是对于周期性的信号,如果要从时域获得周期信息就要遍历部分或者整个时域,这样无疑不利于信号的处理。于是对于周期信号,将变量t换成频率$\omega$来描述就方便很多,这种使用频率$\omega$和幅度来描述信号的方式就是频域模型。
设想这样一个场景:XX是一个苦逼的贫困生,一天他觉得日子过不下去了,去贴吧寻求大师的帮助。大师语重心长地告诉他:“人生太苦逼,需要好耳机”。一番醍醐灌顶的教诲让他感觉人生瞬间有了盼头,于是他打开耳机吧求推荐一款耳机,不巧福利院刚刚装上了宽带,孤儿们纷纷告诉他只有Beats耳机才称得上是真正的音乐,XX信以为真,用省吃俭用攒下的贫困生补助在苹果官网以2888的尊贵价格买下了一个Beats耳机。两天后,心心念念的True Music终于到了,他迫不及待地戴上Beats,播放了一首老烧们经常拿来试音的《外婆的澎湖湾》。可是音乐响起来,他仿佛听到了海峡两岸开战的声音,炮弹航弹的声音回荡在澎湖湾。他摘下耳机,人生更加苦逼了。就在他万念俱灰之时,突然想到了自己可以通过数字滤波的方式消除耳机那过重的低频。于是XX开始着手设计能拯救他生活的数字滤波器。 详见澎湖湾海战——点积、卷积与傅里叶变换

在后续的故事中,这位待命名的贫困生同学,希望对《外婆的澎湖湾》进行傅里叶变换,通过FFT创造《外婆的澎湖湾》一曲的频域波形,并对其进行“高通”处理,从而达到抵消beats过量低频的效果。

但与此同时,作为一名光荣的音乐爱好者,我对滤波的执念燃烧了起来,义正词严地告诉老哥,对于音乐进行全局的FFT后滤波是绝对错误的,对音频的处理只能使用加窗FFT的方法,调整实时的频率响应,那样修改的才是我们真正听到的东西。而对整首歌进行FFT,修改整首歌频谱能量的分布,是十分抽象的作风,并不能起到理想的效果,并且会修改我们所不能直观理解的成分。随即粗暴的断言,此等滤波并不能起到理想的效果。

排比一下对图像的SVD奇异值分解,不同的奇异值表示了图像中不同的成分,由成分特征的堆叠形成了完整的图像。而对应音乐频谱域,说不定含量高的低频蕴含了整首歌的框架信息,而高频则表现出了乐曲细节,而与表面上我们所听到的频率高低带来的声调变化不同。因而我怀抱自傲,表示对乐曲进行全曲FFT,滤除低频后,我们能听到的说不定只剩下噪声。

2 0 2 0 年 5 月 1 5 日 第 一 次 滤 波 之 战 开 始

为了证明自己的观点正确,我们决定设计一组实验(好吧只有实验没有设计),即通过matlab直接进行FFT,并切除所有低频部分,以实验“土法”滤波的功用。好,宁就是代码之王,现学调包开搞。于是经过了一会儿,我们得出了第一个版本的输出音乐。并且发现了FFT那惊人的900+w展开项数。

(期间经历了一点小插曲,比如说我们偷渡出学校取外卖,结果才晚了两分钟就发现外卖被人拿走了,为此甚至召唤了警察,看热闹属实快乐)

第一个版本的乐曲是一堆白噪声,说实话这确实是符合我猜想的结果,并为此高歌庆幸了一会儿。然而属实高兴得太早了,我们很快发现原来是在运算时的一个取绝对值操作使得FFT结果中的相位信息丢失,导致信号无法还原。debug!冲!

随后,我们得到了一个切除了傅里叶变换前200w项系数的波形。。。但是,结果却出乎了我们两人的意料,无论是切除了前200w项的音乐,抑或是切除了后700w项的音乐,均有着正常的音乐结构,并且听感及其相同。这使得我们百思不得其解,后遂作罢。同时,因为滤波未达到理想的效果,在返回寝室途中我放肆地嘲笑了赵兄一路。而他却坚决的用傅里叶变换的可加性作为数学根据反驳。

image-20200519174248918

然后,妈的,转机

image-20200519175644695

我听到了确实被滤除低频后的true music(?

而之前滤波失败的原因只是因为,matlab的FFT函数结果是双边的,而我们滤掉了前200w项,即半侧频域的主要部分,而另一半,即剩余的700w项中,存在着与其相同的频域信息。

事实证明,低频的意义是相通的,我必是个铁憨憨。

廖某阵亡于第一次滤波战争,而他的后人将继承其遗志。

但与此同时,也留下了一个疑惑,我最初的思路是,音乐作为一个完整的波形,为傅里叶变换所拟合,即低频表示了音乐波形的信息主干,而高频用来修饰与拟合乐曲的细节。这是从结构的角度上对全曲的傅里叶变换进行理解。那么,既然简单粗暴的土法滤波获得了成功,那又要如何以音高信号堆叠组合的角度来理解乐曲的傅里叶变换呢。而那些不存在音高的区段或空洞又是如何被表示的呢(尚且存疑,期待讨论

今天,在想到了新的思路后,我作为自己的精神传承者,扬起了反抗镇压与暴政的旗帜

2 0 2 0 年 5 月 1 9 日 第 二 次 滤 波 之 战 拉 开 帷 幕

让我们考虑一下,一首歌的低频成分,有什么呢?熟悉的人们首先会考虑到bass,这个占据了低频段的乐器。众所周知,人耳能听到的频率,最低不低于20Hz,低于每秒20次的震动,已经难以被人的耳朵所感受到。那么,是否还有更低频段的信息存在于一首歌的频谱中。显然,是存在的,而且必然存在

image-20200519181957341

让我们观察外婆的澎湖湾一曲的时域波形。你是否看到了一种别样的震动呢?是的,首先是歌曲进行的能量包络,还有就是一首歌,每个音符敲响的节奏感,甚至是和声进行的周期。这些推动着音乐发展的元素,无一不呈现出了一种周期性和规律性。而这种固有的特性,便正是一首歌最为基础的低频信息。那么如果在频域上对低频进行完全剔除会发生什么呢?好吧,,,我也不知道。

赵兄在半恼与嘲笑中,边上课边写出来加窗滤波器的代码,并成功滤出了一个新版本的《外婆的澎湖湾》并精心准备了一套双盲测试,以满足我的monkey business。很荣幸,我的木耳测出来了一份50%的测试结果,及其典型,并再次为他所嘲笑。然而,当真正使用频谱仪,和matlab中参数观察FFT级数时,便发觉,两个经历了不同信号处理步骤(即全局FFT和加窗FFT)的信号,已经存在了显著的不同(好吧并不显著。

但是这也充分证明了,傅里叶变换的可加性仅存在于幅值的叠加,而不是时域可加。加窗傅里叶与全局傅里叶虽然有着相似的效果,但是在信号系统的思路上有着天壤之别。其中加窗傅里叶后的信号处理,是对模拟信号滤波器特性的拟合与实时处理。而全局傅里叶则是旨在改变信号的特征特性。而在混音技巧中的equalizer运用,则是作为数字滤波器,运用前者的思路。耳机放大器的频响特性也是同理。

终于,作为战败国与最初错得离谱的人,我在勉强达成了议和后,耻辱地结束了战争。可贵的是,真理永存。

于是还有几个疑问:

  1. 如何以音高信号堆叠组合的角度来理解乐曲的傅里叶变换?
  2. 不存在音高的乐段或暂停是如何被表示的?
  3. 对低频进行滤波没有完全滤除所谓“歌曲特性”,那么他们还在哪些频段被表示呢?
  4. 如果完全剔除了前项的成分,那么歌曲还剩下什么呢?
  5. 在全局上对音乐进行滤波,有什么实际的物理意义呢?

终了