一种基于加Blackman窗的FIR滤波器的音频采样率转换方法及系统与流程

文档序号:14941774发布日期:2018-07-13 21:04阅读:412来源:国知局
本发明涉及音频处理
技术领域
:,具体的涉及一种基于加blackman窗的fir滤波器的音频采样率转换方法及系统。
背景技术
::采样率转换是在尽量避免信号频谱失真的情况下,增加或者减少单位时间采样点的个数,以适应不同的音频采样率要求,通常采用插值的方法来实现。一般采用加窗的滤波器来用原采样率波形某一范围内的采样点的值来计算输出采样点的值。这些滤波器通常都对精度的要求比较高,精度不够则会引起结果出现较大偏差。但是高精度的浮点运算在定点的dsp系统中实现起来效率是非常低的。另一方面,对于不同的输入和输出采样率对(输入输出采样率比值),同一个滤波器的效果可能会有较大差别,所以,通常的音频采样率转换算法都只支持有限数量的采样率对互转,甚至可能只支持上采样率或者下采样率的单边转换。技术实现要素:针对上述现有技术存在的问题,本发明在现有技术基础之上作进一步改进,本发明涉及一种基于加blackman窗的fir滤波器的音频采样率转换方法及系统,解决滤波器通常都对精度的要求比较高,精度不够则会引起结果出现较大偏差。但是高精度的浮点运算在定点的dsp系统中实现起来效率是非常低的技术问题。本发明通过以下技术方案实现上述发明目的;一种基于加blackman窗的fir滤波器的音频采样率转换方法,包括步骤:步骤1:初始化阶段,由输入输出采样率的比率来计算加blackman窗的fir滤波器的系数矩阵,并存储到指定表格中;步骤2:输入一帧原始采样率数据;步骤3:对第k个输出采样点,根据输入输出采样率的比率,并根据输入时间计数进行调整,通过定位对应的一组加blackman窗的fir滤波器的输入的中心点在输入数据帧中位置,以此中心位置选出一组用于计算此第k个输出采样点的输入采样点(长度为窗口大小);步骤4:根据步骤3确定的中心采样点的偏移位置和输入输出采样率的最大公约数求出对应的滤波器系数在系数表格中的对应行;步骤5:将步骤3得到的样点与步骤4得到的滤波系数进行运算得到一个输出采样点的值;步骤6:重复步骤3,4,5计算完本帧数据;步骤7:调整输入时间计数,保存没有用完的本帧输入数据;步骤8:重复步骤2~7直到码流结束。进一步的,对于步骤1,计算fir滤波器系数的公式是:计算blackman窗函数系数的公式是:两者相乘得到插值算法所需的系数:其中,bpc是输入输出采样率的最大公约数,fcn是输入输出采样率的比率,l是滤波器窗口的大小,且。进一步的,所述步骤3中,计算第k个输出采样点对应的窗的中心输入采样点的位置,是用k乘以输入输出采样率的比率,但是因为处理过程是按照一帧一帧数据处理的,每一帧的数据有可能不会正好用尽,所以这个值还要根据上帧遗留下来的采样点数进行调整。进一步的,所述步骤4中,预先计算出的完整表格是一个2×bpc+1行,l列,上下对称的的表格;为了节省存储空间,只留下bpc+1行;所以当该步计算出的表格行偏移大于表格行数时,需要把它反转一下。进一步的,所述步骤5是一个乘加并累积,部分输入数据需要从上帧保留的未用完的数据中提取。本发明通过以下另一技术方案实现上述发明目的;一种基于加blackman窗的fir滤波器的音频采样率转换系统,由输入输出采样率的比率来计算加blackman窗的fir滤波器的系数矩阵,并存储到指定表格中;输入一帧原始采样率数据;通过输入一帧原始采样率数据得到多个输出采样点的值,将输出的第k个采样点的值,根据输入输出采样率的比率,并根据输入时间计数进行调整,通过定位对应的一组加blackman窗的fir滤波器的输入的中心点在输入数据帧中位置,从而得到的样点;根据步骤3确定的中心采样点的偏移位置和输入输出采样率的最大公约数求出对应的滤波器系数在系数表格中的对应行;得到的样点与得到的滤波系数进行运算得到一个输出采样点的值;计算完本帧数据;调整输入时间计数,保存没有用完的本帧输入数据;直到码流结束。本发明与现有技术相比,至少具有以下益效果:本发明采用了基于加blackman窗的fir滤波器的插值方法来计算新的采样点的值。通过仔细分析各项数据的取值范围,在定点化过程中选取了一种既能最大限度保留精度又可以大大提高运算速度的替代算法,使得此项基于加blackman的fir滤波器的采样率转换算法既具有实用性又具有很好的转换效果同时通过在程序初始化阶段计算滤波器系数表格这种个处理方式,使得系统兼顾了支持多种采样率转换对和耗用较小内存。这个算法先根据输入输出采样率的比率计算出一系列的滤波系数,然后再通过输入输出采样率的比率计算出每一个输出样点对应的窗的位置,套用滤波器系数计算出输出点的值。附图说明此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:图1为本发明一种基于加blackman窗的fir滤波器的音频采样率转换方法的流程示意图;图2为本发明swept信号由96k采样率转换为44.1k采样率之后的频谱示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。实施例1:如图1和图2所示,一种基于加blackman窗的fir滤波器的音频采样率转换方法,步骤1:初始化阶段,由输入输出采样率的比率来计算加blackman窗的fir滤波器的系数矩阵并存储到指定table。此项工作只有在输入输出采样率发生变化时才需要重复。步骤2:输入一帧原始采样率数据。步骤3:就将输出的第k个采样点的值,根据输入输出采样率的比率,并根据输入时间计数进行调整,定位对应的一组加blackman窗的fir滤波器的输入的中心点在输入数据帧中位置。步骤4:根据步骤3确定的中心采样点的偏移位置和输入输出采样率的最大公约数求出对应的滤波器系数在系数表格中的对应行。步骤5:将步骤3得到的那些样点与步骤4得到的滤波系数进行运算得到一个输出采样点的值。步骤6:重复步骤3,4,5计算完本帧数据。步骤7:调整输入时间计数,保存没有用完的本帧输入数据。步骤8:重复步骤2~7直到码流结束。对于步骤1,一个计算fir滤波器系数的公式是:计算blackman窗函数系数的公式是:两者相乘,就可以得到我们的插值算法所需的系数:其中,bpc是输入输出采样率的最大公约数,fcn是输入输出采样率的比率,l是滤波器窗口的大小,且。这种浮点数运算在定点的dsp里支持的不是很好,需要消耗大量的cpucycle数。如果每次改变输入输出采样率时重新计算一遍所有的滤波系数,那么可能需要很长的初始化时间,难于保证实时处理;如果预先存储所有输入输出采样率比率对应的表格,则如果想支持各种常见采样率互转需要的内存就非常庞大。这里我们采取了一种折中的方法,就是通过三角函数公式并利用三角函数的周期性化解上述公式,并存储一些关键值(定点化),这样,计算滤波系数的过程便被简化成了一系列的乘加,计算速度可以大大提高,而且除了对应本输入输出采样率比率的系数矩阵(计算之后存储成表格形式)外,只需要预先存储一些定点化的三角函数值和倒数值(用于除法)就可以了,需要的内存也大大减少。所属步骤3中,计算第k个输出采样点对应的窗的中心输入采样点的位置,是用k乘以输入输出采样率的比率,但是因为处理过程是按照一帧一帧数据处理的,每一帧的数据有可能不会整好用尽,所以这个值还要根据上帧遗留下来的采样点数(同样需要乘以输入输出采样率的比率,我们称之为输入时间计数)进行调整。因为输入时间计数是每一帧都要根据上帧的值和本帧消耗的采样点数调整的,所以误差会积累,对精度非常非常敏感。所以,为了避免通常的定点化除法的方法带来的误差,我们在这里去掉的了除法运算(算比率),把它移动到计算差值的地方进行,避免累积效应。随之,为了保证数据不溢出,这两个参量也选取了64bit数据来表示。所属步骤4中,预先计算出的完整表格是一个2×bpc+1行,l列,上下对称的的表格。我们为了节省存储空间,只留下bpc+1行。所以当该步计算出的表格行偏移大于表格行数(输入输出采样率的最大公约数)时,需要把它反转一下。步骤5就是一个简单的乘加并累积,不过注意可能部分输入数据需要从上帧保留的未用完的数据中提取。本发明采用了基于加blackman窗的fir滤波器的插值方法来计算新的采样点的值。通过仔细分析各项数据的取值范围,在定点化过程中选取了一种既能最大限度保留精度又可以大大提高运算速度的替代算法,使得此项基于加blackman的fir滤波器的采样率转换算法既具有实用性又具有很好的转换效果(如附图2)。同时通过在程序初始化阶段计算滤波器系数表格这种个处理方式,使得系统兼顾了支持多种采样率转换对和耗用较小内存。这个算法先根据输入输出采样率的比率计算出一系列的滤波系数,然后再通过输入输出采样率的比率计算出每一个输出样点对应的窗的位置,套用滤波器系数计算出输出点的值。实施例2:如图1和图2所示,一种基于加blackman窗的fir滤波器的音频采样率转换系统,由输入输出采样率的比率来计算加blackman窗的fir滤波器的系数矩阵,并存储到指定表格中;输入一帧原始采样率数据;通过输入一帧原始采样率数据得到多个输出采样点的值,将输出的第k个采样点的值,根据输入输出采样率的比率,并根据输入时间计数进行调整,通过定位对应的一组加blackman窗的fir滤波器的输入的中心点在输入数据帧中位置,从而得到的样点;根据步骤3确定的中心采样点的偏移位置和输入输出采样率的最大公约数求出对应的滤波器系数在系数表格中的对应行;得到的样点与得到的滤波系数进行运算得到一个输出采样点的值;计算完本帧数据;调整输入时间计数,保存没有用完的本帧输入数据;直到码流结束。本发明采用了基于加blackman窗的fir滤波器的插值方法来计算新的采样点的值。通过仔细分析各项数据的取值范围,在定点化过程中选取了一种既能最大限度保留精度又可以大大提高运算速度的替代算法,使得此项基于加blackman的fir滤波器的采样率转换算法既具有实用性又具有很好的转换效果(如附图2)。同时通过在程序初始化阶段计算滤波器系数表格这种个处理方式,使得系统兼顾了支持多种采样率转换对和耗用较小内存。这个算法先根据输入输出采样率的比率计算出一系列的滤波系数,然后再通过输入输出采样率的比率计算出每一个输出样点对应的窗的位置,套用滤波器系数计算出输出点的值。如上所述,可较好的实施本发明。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1