声学理论基础---梳状滤波效应(三)

梳状滤波器和临界带宽

人耳的临界带宽是一种用来评价梳状滤波作用可闻度的方法。临界带宽所对应的频率,见表10-1。临界带宽是随着频率变化而变化的。例如,人耳在 1kHz 处的临界带宽约为 128HZ。而一个峰值频率间隔为128Hz的梳状滤波器,所对应的延时约为8ms,1/0.008=125HZ,它所对应直达声与反射声之间的路程差约为9英尺(1130英尺/X0.008s=9.0英尺)]。如图10-7B 所示为一个延时为8ms梳状滤波的例子。图10-7A展示了一个有着更短延时0.5ms 的例子。图10-7展示了一个有着更长延时40ms的例子。

image/png

image/png


图10-7 为了评价梳状滤波作用对感知的影响,我们将其与1000Hz处的可闻临界带宽进行比较。(A)延时为0.5ms 所产生的梳状滤波峰值,与可闻临界带宽的比较。(B)延时为 8ms,其中有两个梳状滤波峰值落在临界带宽内。(C)当延时为40ms 时,临界带宽相对梳状滤波峰值的宽度变得很大,以至于我们不能觉察到这种梳状滤波作用。这似乎验证了在大空间(有着较长延时)当中,所产生的梳状滤波不会被人耳觉察到的事实,而梳状滤波对小空间(有着较短的延时)的影响是很大的。同时,在较低频率的临界带宽会更加窄,这意味着在低频处的梳状滤波会更加明显。图中所使用的是线性频率刻度

相对粗糙的临界带宽,让我们的耳朵对有着40ms 延时梳状滤波器(如图10-7C所示)的峰值和结点相对不敏感。因此,或许人耳不能够感知 40ms 及更长延时所产生的梳状滤波效应。换句话说,0.5ms 延时所产生的梳状滤波峰值(如 10-7A 所示宽度大于人耳在1000Hz处的临界带宽,从而产生了可感受到它的变化。图 10-7B 展示了一个中间的例子,在这个例子当中人耳或许能够少量地感受到8ms延时所产生的梳状滤波信号。听觉系统的临界带宽会随频率的增加而迅速增加。我们很难想象得到临界带宽与不断变化音乐信号之间的相互作用,以及和大量反射声所产生的梳状滤波作用有多么复杂。只有利用心理声学实验进行仔细验证,才能确定这种结果是否能够被听到。

多通道重放当中的梳状滤波作用

在类似于立体声的多声道重放当中,到达每个耳朵的输入信号是来自两只扬声器的。由于两只扬声器之间的间隔,这些信号到达耳朵处会有一定的时间差。其结果将会产生梳状滤波作用。Blauert 指出梳状滤波失真通常是听不到的。随着音色感知的形成,听觉系统会忽略这种失真。然而,我们还没有一种普遍被接受的理论,可以解释人耳的听觉系统是如何实现这种功能的。我们可以通过塞住一只耳朵的方法来听到这种失真。但是,这样破坏了立体声的效果。通过把两只扬声器(产生梳状滤波失真 )与一只扬声器(没有失真)的音色进行对比,我们会发现立体声的梳状滤波失真对音色的影响很小。以上这两种声音的音色,基本上是相同的。此外随着头部的转动,音色也会有非常小的改变。

话筒摆放当中的梳状滤波作用

当两只话筒分开一定的距离来拾取同一个声源时,将会有少许的时间差,我们把这两个信号叠加在一起,类似于话筒同时拾取了直达声和反射声的情况。因此,有一定间隔的话筒摆放很有可能会产生梳状滤波问题。在某些情况下,这种梳状滤波作用是可以被听到的,在整个声音重放当中它增加了相位信息,有些人认为这就是房间的周围环境。实际上这不是环境声,而是在话筒位置处由时间和强度所引起的失真。显然有人喜欢这样的失真,因此录音师喜欢使用一定间隔的话筒对声源进行拾音。

反射声和空间感

到达听音者耳部的直达声与反射声会有些不同。反射墙面的特征会随着频率而变化。穿过空气的直达声和反射声成分都会有点轻微的改变,这是由于空气的吸声特性随频率变化而引起的。直达声和反射声的幅度及时间是不同的。人耳对前方直达声的感受与侧向反射声也不相同。幅度与时间之间是有关联的,但是它们与两耳之间的相关性小于最大值。

到达双耳信号的较弱相关性让我们产生了空间感。例如在户外这种没有反射声的环境是没有空间感可言的。如果房间提供“合适的”声音信号到达耳朵,听音者将会完全感受到被包围和沉浸在声音当中。较弱相关性是产生空间感的先决条件。

梳状滤波是一种在信号处理中常用的滤波方法,它主要用于频域中的频率选择性滤波。在MATLAB中,可以使用fft函数和ifft函数来实现梳状滤波梳状滤波的基本原理是在频域中通过选择性地去除或增强频率分量来实现滤波效果。具体步骤如下: 1. 对输入信号进行傅里叶变换,得到频域表示。 2. 在频域中选择一个或多个频率分量进行增强或抑制。可以通过设置一个梳状滤波器的频率响应来实现,其中频率响应为1表示增强该频率分量,为0表示抑制该频率分量。 3. 对修改后的频域信号进行反傅里叶变换,得到时域滤波后的信号。 在MATLAB中,可以按照以下步骤实现梳状滤波: 1. 使用fft函数对输入信号进行傅里叶变换,得到频域表示。 2. 创建一个与输入信号频谱大小相同的梳状滤波器,设置频率响应。 3. 将梳状滤波器与输入信号频谱相乘,得到修改后的频域信号。 4. 使用ifft函数对修改后的频域信号进行反傅里叶变换,得到时域滤波后的信号。 下面是一个MATLAB示例代码,演示了如何实现梳状滤波: ```matlab % 输入信号 x = [1, 2, 3, 4, 5]; % 傅里叶变换 X = fft(x); % 创建梳状滤波器 N = length(x); filter = ones(1, N); filter(2) = 0; % 抑制第二个频率分量 % 修改频域信号 X_filtered = X .* filter; % 反傅里叶变换 x_filtered = ifft(X_filtered); % 输出滤波后的信号 disp(x_filtered); ``` 这是一个简单的示例,你可以根据具体需求调整梳状滤波器的频率响应,以实现不同的滤波效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值