一种基于fft的高分辨率音频频率测量方法

文档序号:9551926阅读:1048来源:国知局
一种基于fft的高分辨率音频频率测量方法
【技术领域】
[0001 ] 本发明涉及音频测试技术领域,具体涉及一种基于FFT的高分辨率音频频率测量 方法。
【背景技术】
[0002] 音频是多媒体中的一种重要媒体,蕴含了丰富的语义,有效地丰富和补充了人们 对信息的感知和获取。声音经过模拟设备记录或再生,成为模拟音频,再经数字化成为数字 音频,音频分析就是以数字音频信号为基础,以数字信号处理为分析手段,提取音频信号在 时域、频域内的一系列特性的过程。音频分析被广泛应用于测量各类音频系统的时域特性、 频域特性及失真特性等。
[0003] 在音频分析过程中,最常用的方法就是傅里叶变换法。快速傅里叶变换FFT是音 频分析中的常用算法,快速傅里叶变换存在栅栏效应和频谱泄露现象,使算出的信号参数 即频率、幅值和相位不够准确。对于传统的利用FFT进行音频分析的方法中,频率误差大小 取决于实际频率值是否刚好落在N点快速傅里叶变换的对应频率通道上,如果实际频率落 在两个相邻频率通道中间,那对应的误差就会比较大,且误差量不可控。同时,频率误差有 大小还取决于FFT点数,FFT点数越小,直接计算出的频率误差也会进一步恶化,无法满足 准确的频率测量要求。
[0004] FFT作为音频分析中的常用算法,是离散傅里叶变换(DFT)的一种快速算法,它通 过将长序列的DFT分解为短序列的DFT进行计算,从而使运算量大大减少,利用快速傅里叶 变换可计算得到有限长信号的离散频谱。

【发明内容】

[0005] 本发明的目的是提供一种基于FFT的高分辨率音频频率测量方法,提高频率及幅 度的计算结果精度。
[0006] 为达上述目的,本发明提供了一种基于FFT的高分辨率音频频率测量方法,包括:
[0007] 获取波形数据;
[0008] 对所述波形数据进行加汉宁窗快速傅里叶变换FFT;
[0009] 选取频谱中目标信号处的峰值;
[0010] 计算峰值左侧点FFT的结果和右侧点FFT的结果,并比较该左侧结果和右侧结果 的大小;
[0011] 计算得到参数k,ypy2;
[0012] 根据该参数k,yi,y2,计算所述波行数据的频率及幅度。
[0013] 进一步的,
[0014] 汉宁窗函数为:
[0015] W(η) = 0· 5-0. 5*cos(2πΦη/Ν)η= 0 ~N-1 ;
[0016] 所述对所述波形数据进行加汉宁窗快速傅里叶变换FFT具体为:
[0017] fftbuf[n] =FFT(wavebuf[n] *W(n))η= 0 ~N_1 ;
[0018] 上式中,FFT(...)代表快速傅里叶变换运算过程,fftbuf为用于存放FFT运算结 果的数组,wavebuf为采集到的原始波形数据,N为采样点数。
[0019] 进一步的,
[0020] 所述计算得到参数k,ypy2,具体包括:
[0021]若fftbuf [maxl_l]>fftbuf [maxl+l],则选取峰值及其左边的点进行计算,此时可 得出以下参数:
[0022] k = maxl-l
[0023]yj=fftbuf[maxl-l]y2=fftbuf[maxi]
[0024]其中,maxi表示所述目标信号处的峰值的位置;k代表峰值左边临近点的位置,yi、 y2分别代表峰值左边临近点处及峰值处的FFT运算结果;
[0025]若fftbuf [maxl-l]彡fftbuf [maxl+l],则选取最大值及其右边的点进行计算,此 时可得出以下参数:
[0026] k = maxi
[0027]yj=fftbuf[maxi]y2=fftbuf[maxl+l]
[0028] 其中,k代表峰值右边临近点的位置,yi、72分别代表峰值处及峰值右边临近点处 的FFT运算结果。
[0029] 进一步的,
[0030] 所述根据该参数k,yi,y2计算所述波行数据的频率及幅度具备包括:
[0031]
[0032]
[0033]
[0034] k〇=a+k+0.5 ;
[0035] 式中,freq、ampl分别为计算得到的频率结果以及幅度结果,fullfreq为采样率, N为采样点数,kpk2、k3、匕为公式推导得出的具体系数。
[0036] 本发明能够达到以下有益效果:
[0037] 本发明在现有FFT运算方法的基础上,提出了一种改进的计算频谱频率及幅度的 方法,通过:获取波形数据;对所述波形数据进行加汉宁窗快速傅里叶变换FFT;选取频谱 中目标信号处的峰值;计算峰值左侧点FFT的结果和右侧点FFT的结果,并比较该左侧结果 和右侧结果的大小;计算得到参数k,yi,y2;根据该参数k,ypy2,计算所述波行数据的频率 及幅度;该方法可以明显提高频率及幅度的计算结果精度,同时可以保证在分辨率精度较 低时准确的识别出相邻频谱的频率及幅度;对于50kHz采样率、1024点FFT,利用该算法,频 率分辨率可由常规算法的48Hz提升到0. 1Hz。
【附图说明】
[0038] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0039] 图1是本发明一种基于FFT的高分辨率音频频率测量方法的流程图。
【具体实施方式】
[0040] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0041] 在实际进行数字信号处理时,都需要把信号的观察时间限制在一定的时间间隔 内,只需要选择一段时间信号对其进行分析。也就是取用有限个数据,将信号截断的过程相 当于将信号进行加窗函数的操作。经过这样的操作后,往往会发生频谱分量从其正常频谱 扩展开来的现象,即称为"频谱泄露"现象。当利用传统的傅里叶变换进行音频分析时,时 域中的截断是必需的,所以泄露效应也是快速傅里叶变换所存在的,这就会大大降低计算 所得信号的频率、幅度等参数,必须对其进行抑制。
[0042] 考虑到传统傅里叶变换存在栅栏效应和频谱泄露现象,使计算得到的频谱结果精 度较低,现有的方案通常是先选择特定的窗函数对傅里叶变换进行加窗处理,设X (η)是一 个长序列,w (η)是长度为Ν的窗函数,用w (η)截断X (η),得到Ν点序列χΝ (η),形式如下:
[0043] xN (n) = x (n) *w (η)
[0044] 在频域上则有,
[0045]
[0046] 然后,对加窗处理后的短序列进行快速傅里叶变换,可以得到离散频谱,即
[0047]
[0048] 式中,X(k)为频域信号,% N为采样点数。 .9
[0049] 最后,在快速傅里叶变换得到的频谱中找到峰值所在位置,进而计算得到我们所 需要的频率。
[0050]
[0051]
[0052] 式中,freq为计算得到的频率,maxi为峰值所在位置,fullfreq为采样率,N为采 样点数,f为频率分辨率。
[0053] 如采样率为50KHz,采样点数为1024的FFT算法中,计算得到峰值所在位置为 100,则计算可得频率值为4882Hz,频率分辨率为48. 82Hz,可以看出频率分辨率较低。
[0054] 当窗函数应用于FFT算法时,可以有效减少频谱泄露所引起的误差,选择不同的 窗函数会得到不同的计算精度,为了尽可能的提高计算精度,首先就要选择一个频谱特性 较好的窗函数,常用的窗函数有矩形窗、三角窗、海明窗、汉宁窗、布莱克曼窗、布莱克曼哈 里斯窗,其中,加汉宁窗截断的正弦信号的频谱泄露主瓣的宽度为4个谱线间隔,要分辨出 相邻的谐波,加汉宁窗差值FFT算法至少需要2个周期的采样点,所需要的采样周期数较 少,可以很好的满足我们对高实时性及高计算精度的要求,所以在本发明中我们选取了汉 宁窗对FFT运算进行加窗处理。
[0055] 此外,当进行傅里叶变换时采样点数如果不够多,会导致计算得到的频谱峰值所 在位置恰好处于两个采样点中间的情况,这会导致快速傅里叶变换得到的结果与实际值存 在较大的偏差,利用传统的傅里叶变换得到的频谱在频率分辨
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1