Gammatone 滤波器的 Python 代码实现

来源:互联网 发布:js调用摄像头录制视频 编辑:程序博客网 时间:2024/06/16 18:33

1、Gammatone简介    

       Gammatone滤波器被广泛用于模拟人类听觉系统对信号的处理方式,作为语音信号的一类听觉分析滤波器(以下简称为GT滤波器)。GT滤波器只需要很少的参数就能很好地模拟听觉实验中的生理数据,能够体现基底膜尖锐的滤波特性,而且 GT滤波器具有简单的冲激响应函数,能够由此推导出GT函数的传递函数,进行各种滤波器性能分析,同时有利于听觉模型的电路实现。

     GT滤波器的冲击响应函数定义如下:

    

     这里n为滤波器阶数,b为滤波器的带宽,f为滤波器的中心频率,a是振幅。其等于

     a=B**n     这里      B=b1ERB(f)

     ERB(f)为GT滤波器的等价矩形带宽(等价矩形带宽:对于同样的白噪声输入,和指定的滤波器通过一样能量的矩形滤波器的宽度,简称ERB),它同GT滤波器中心频率f,的关系是

    ERB(f)=24.7+0.108f

    b1=1.019是为了让GT函数更好地与生理数据相符而引入的参数。

   GT滤波器的幅频特性如下图所示


2、python代码

    以下的python代码分别实现了频域Gammtone滤波和时域Gammtone滤波器,频域滤波时参数USEFFT=1。


其中MakeERBFilters函数产生了GT滤波器系数。输入为:采样频率、滤波器通道数、最小频率。输出为:n通道GT滤波器系数。代码如下



代码中其中ERBSpace获得了中心频率f。输入为:最小频率、最大频率、滤波器通道数。输出为滤波器族的各个中心频率。代码如下:



ERBFilterBank 函数输入分别为:原始数据和GT滤波器系数。输出为滤波后的数据。该函数实现对原始数据的时域GT滤波。代码如下:



fft2gammatonemx为获得了GT滤波器的频率域系数。输入为:滤波器长度、采样频率、滤波器通道数、滤波器带宽、最小频率、最大频率、最大长度。输出为GT滤波器的频率域系数。代码如下:

测试效果图:









    

0 0
原创粉丝点击