当前课程知识点:计算机音乐 > 第三章 频域音频处理 > 3.5 线性滤波器 > 线性滤波器
同学们大家好
接下来我们要进入到
频域处理的应用环节
其中最直接的应用就是
线性滤波器
在时域当中
我们可以通过对振幅的操作
来改变时域的波形
例如前面我们就通过振幅的包络
可以设计出各种各样的
声音的ADSR结构
在频域当中
我们也可以通过改变频谱的幅值
来获得一些特定的频谱结构
其中线性滤波器就是最简单的一种
让我们从几乎可以当做最简单的
滤波器着手
它就是两点均值滤波器
滤波器在时域上
具有很简单的一种形式
就是yn等于2分之xn加上xn减1
在信号处理当中
我们还可以用系统框图
来更加形象的来理解线性变换
比如说我们可以用一个矩形来表示
n的一个延迟
通过一个三角形来表示xn的一个争议
并且我们还可以用
一个小圆圈来表示加法
这样两点均值滤波器
就可以用这张系统框图来表示了
系统框图更加形象地
展示了滤波器的处理过程一个输入的信号
通过一个延迟之后
跟它自己进行相加
并且除以二再进行输出
接下来我们就可以在python
里面来听一下滤波器的效果
下面这段代码展示了
两点均值滤波器的效果
首先我们定义了
一个叫做twopoints的函数
那么它作用就是对输入的信号
求相邻两点的均值并进行输出
然后在主函数里面
我们生成了一段两秒钟的白噪音
通过nprandom点rand这个函数
它生成的随机数范围是从0到1
那么我们减去0.5之后
就可以让它的范围是从负0.5到0.5
这样就是一个标准的白噪音
然后我们对它进行两点均值滤波
那么接下来我们去展示
滤波前跟滤波后的频谱
那么通过np下面的fft点fft
进行频谱的展示
这是一个傅里叶变换
变换完之后
我们只显示他的幅值
通过调用abs求模
然后把输入信号跟输出信号的
频谱的幅值图显示在一起
那么我们运行一下
好 那么因为傅里叶变换
它是一个对称的一个频谱
其实我们只要看左半边就行了
那么我们看到输入的信号
它因为是一个白噪音
所以频谱应该是随机的遍及整个频段
那么 通过两点均值滤波之后
我们看到它有一个非常独特的一个形状
那么也就是在低频的时候它跟白噪音
原来的输入了白噪音的频谱其实是比较相近的
那么越往高频地方
它的幅值就越来越减少
到1/2采样率的这个地方
它的幅值就减到零
那么为了更直观的来看到
究竟两点均值滤波对幅值
作了什么样修改
究竟对什么样的频段是变大了
那么对什么样频段是变小了
我们可以去求一下这两个频谱图的商
来看一下
好 这样的话我们去增加一个子图
增加一个子图
并且我们用这个子图去
显示两个频谱的幅值的商
我们定义两个频谱的幅值的商
然后显示在第三个子图上面
好 运行一下 看一下结果
那么通过这两个频谱的幅值的商
我们可以明显的看到
那么两点的均值滤波器
实际上做了这样的一个处理
在比较低频的时候
它基本维持
整个幅值不变
那么越高频的地方
它有一个比较强的削弱
所以其实这样的一个滤波器
我们可以把它看作是一个
低通滤波器
我们可以来听一下输入前
跟输入后的一个效果
好 这是输入前的一个白噪音
就是标准白噪音两秒
那么接下来
是通过两点均值滤波之后的一个白噪音
可以听到高频的一些比较尖的
一些白噪音是被滤掉一部分的
但是实际上两点均值滤波
它对于作为一个低通滤波器来说
效果并不是特别的明显
从刚才实验当中我们可以看到
想要知道一个滤波器
对频谱具有什么样的效果
最好的方式
就是计算它的频率响应
假设在时域里面一个滤波器
把xn处理成yn
我们假设xn跟yn所对应的傅里叶频谱
是大XK跟大YK
那么我们就可以把频率响应定义成
大Y[k]/X[k]
在数学上我们可以对两点
均值滤波器的频率响应函数再做一下推导
我们有一个单频的
单位复述正弦波作为输入
计算出输入的信号
再经过线性滤波器之后
它应该变成二分之Z的n次方
加上Z的n减一次方
它可以写成2分之1加Z的负1次方
再乘以Z的n次方
再计算频率响应函数的时候
我们只要对这两个式子进行相除
就可以得到它的一个频率响应
2分之1加Z的负1次方
那么求幅值之后
我们就可以得到cos2分之ω
这是它的频率响应函数
那么这个频率响应应该
正好就是一个勇者函数
在零到派之间的部分
它是递减的
而且它只有一个零点
所以我们也把这个滤波器
叫做一零滤波器
One zero滤波器
两两均值滤波器是最简单的一种
如果我们考虑使用更多的延迟项
以及给每一项延迟
增加不同的一些系数
就可以设计出更复杂的滤波器了
甚至我们还可以用一个递归方程
来用有限项去描述无限多项
因此线性滤波器
可以看成是把个接的延迟量
再加上一个系数组合起来的
这样它的系数本身
就构成一个信号
因此我们也称线性滤波器
是两个信号做卷积的结果
其实傅里叶变换本身
也可以看作是一个卷积
它是由输入信号xn跟不同
频率的正弦波做卷积的一个结果
其实可以证明在时域里做卷积等价于
把信号转换到频域之后再直接相乘
我们这样就可以更加直观的
看到滤波器的实际作用了
一般来说如果我们希望
实现某种频率的效果
那么用滤波器去反推时域的方程
是一件非常困难的事情
甚至根本我们就得不到真正的线性解
好 在前人给我们总结了
一些非常有用的滤波器模板
比如说巴特沃斯滤波器
比如说切比雪夫滤波器的两种形式
比如说椭圆滤波器
我们现在看到的
这几个滤波器的频率响应的形状
都是保留低频的频段
然后去截取高频的频段
所以这样的滤波器我们也称之为
低通滤波器
当然我们也可以去修改
这些滤波器的参数
让它变成一个高通滤波器
带通滤波器
或者说带阻滤波器
接下来我们就来使用python的程序
来实践一下低通滤波器的效果
在scipy下面有很多现成的
滤波器的模板
那么为了获得比较好的截止效果
我们选择了椭圆滤波器
Elliptic filter
在S1iPad官方文档下面
有关于椭圆滤波器的说明
我们点击去看一下
那么我们略过一些复杂的参数设置
那么我们直接复制
官方提供的示例代码
我们把这一段都复制下来
然后我们运行一下这段代码
就可以看到滤波器的频率响应函数
我们看到在低频部分它虽然有点波动
但基本上是保持了原来的振幅
高频的部分它会做一个比较大的截止
那么我们可以通过调整参数
来调整它的截止的强度
而且可以调整它的波动
那么用阶数越高的滤波器
它的效果应该会更加好一点
比如说我们把阶数改成10
并且把截止的频率改成负100分贝
那么这样话我们可以看到
这样的截止效果就更加好一点
那么随着阶数的增加
它的形状会更加趋近于
一个理想的低通滤波器
那么你也可以去调整
它的节制的振幅
让它被截止的
片段振幅不会超过负100分贝
为了测试低通滤波器的效果
我们想先来听一下龚琳娜老师的作品
你在哪里的前面的一个小的段落
我们先来一起听一下
哎哎 你在哪里
哎哎 你在哪里
哎哎 我看不到你
哎哎
在这个段落里面我们会听到
有一个非常明显的电贝司在进行伴奏
那么它的频段主要集中在下方
那上方是人声以及其他的乐器
我们看到这下方的频段
大致是在200赫兹以下
所以我们的目的就是保留着200赫兹
然后把上面的高频的部分全部都去掉
这样话我们期待能够把伴奏的
低音部分给过滤出来
接下来就让我们来验证一下
椭圆低通滤波器的一个效果
那么我们的参数设置
是完全按照官网的推荐
因为它是一个数字滤波器所以
在后面需要做相应的一些修改
这些在官网上都有相应的说明
最后通过调用线性滤波器的
模板来进行滤波
并且进行输出
然后我们的输入信号
是刚才我们听到的
你在哪里的一个小的片段
然后我们的截止频率是200赫兹
也就是我们希望
能够保留200赫兹以下的频段
200赫兹以上的
我们希望通过低通滤波器截取
最后输出到一个test low点
为副文件里面
那么运行一下
好 运行结束之后
我们来听一下最后的结果
可以听到我们低通滤波器
还是比较好的完成了任务
基本上只滤剩下低音的部分
人声和其他乐器都被过滤掉了
那么在实际应用当中
往往情况要比刚才
我们看到的例子要复杂
为了获得更好效果
你需要去不断的调整各个参数
到这里我们已经掌握了
使用线性滤波器进行简单的频段截取
来截掉一些高频的频段
或者说低频的频段来保留剩下的一些频段
那么后面章节当中
我们可以看到滤波器的能力绝不仅于此
但是即便只是做一些简单的频率截取
也依然可以完成很多有趣的应用
那么下一章节我们将会来演示怎么
使用简单的频率截取
就可以分析京剧当中的锣鼓经片断
-欢迎辞
-1.1 计算机音乐导言
--计算机音乐导言
-1.2 计算机音乐课程主要内容
-1.3计算机音乐课程资源
-1.4 音乐的基本表达
--音乐的基本表达
-第一章作业
-2.1时域音频处理概述
--时域音频处理概述
-2.2 分窗处理1:OLA叠放
-2.3 分窗处理2:音量计算
-2.4 端点检测
--端点检测
-2.5 振幅包络
--振幅包络
-2.6 音频信号相乘
--音频信号相乘
-2.7 环形调制
--环形调制
-2.8 频率调制
--频率调制
-2.9 频率调制在音乐上的应用
-第二章作业
-3.1 频谱概述
--频谱概述
-3.2 傅里叶变换
--傅里叶变换
-3.3 短时傅里叶变换
--短时傅里叶变换
-3.4 加法合成
--加法合成
-3.5 线性滤波器
--线性滤波器
-3.6 京剧锣鼓经分析
--京剧锣鼓经分析
-第三章作业
-4.1 音色合成概述
--音色合成概述
-4.2 质点弹簧阻尼模型
--质点弹簧阻尼模型
-4.3 双线性滤波器
--双线性滤波器
-4.4 Modal合成
--Modal合成
-第四章测试
-5.1 一维振动模型概述
--一维振动模型概述
-5.2 弦振动模型
--弦振动模型
-5.3 达朗贝尔的行波解
--达朗贝尔的行波解
-5.4 梳状滤波器
--梳状滤波器
-5.5 Karplus Strong算法
-5.6 管状气鸣乐器模型
--管状气鸣乐器模型
-第五章作业
-6.1 音高跟踪概述
--音高跟踪
-6.2 时域音高跟踪
--时域音高跟踪
-6.3 频域音高跟踪
--频域音高跟踪
-6.4 K歌评分
--K歌评分
-第六章作业
-7.1 音频同步概述
--音频同步概述
-7.2 音乐特征提取 CQT
-7.3 音乐特征提取 Chroma
-7.4 动态时间规划概述
--动态时间规划概述
-7.5 动态时间规划实现
--动态时间规划实现
-第七章作业