基于FFT算法的音频信号分析仪
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
邓晓平,张贤,谭书伟,尹朝亮
武汉大学电子信息学院,武汉(430079)
E-mail:dxp190000@
摘要:系统基于快速傅立叶变换(FFT)算法,以单片机和FPGA为控制与数据处理核心,实现对频率范围在20Hz~10KHz音频信号频率成分的分析。
系统由控制与运算核心、程控放大器、滤波和采样等模块组成。
通过对程控放大器增益的调整将系统可测电压(峰-峰值)的动态范围扩展到10mV~8V;通过改变模数转换器的采样频率,系统能实现频率分辨力100Hz、20Hz 两挡可调;频谱分析结果可按序存储,并使用点阵式液晶屏实时显示;通过对频谱数据特征的提取判断信号的周期性,并实现对信号的失真度分析。
另外,可通过点阵式液晶屏以图形方式显示信号各频率分量及其相对大小。
关键词:频域分析 FFT PGA 失真度
1.引言
音频信号的分析是语音通信、语音识别、语音合成、语音增强等技术的前提与基础。
只有将语音信号分析成表示其特性的参数,才可能利用这些参数进行高效的语音通信,才可能建立用于语音合成的语音库和用于语音识别的模版或知识库[5]。
而且,语音合成音质的好坏、语音识别率的高低,都取决于对语音信号分析的正确性与准确性。
音频信号分析可分为时域、频域、倒谱域等方法。
时域分析方法简单、运算量小、物理意义明确;但为有效的方法是在频域的分析。
傅立叶变换在信号处理中具有十分重要的作用,它可使信号的某些特性变得很明显,而在原始信号中这些特性可能不明显。
本文利用了频域分析方法的优点,实现对一般语音信号幅度、基音频率等特征信息的实时提取。
2.方案设计与论证
2.1 控制与运算核心的选择
方案一:单片机作为控制与运算核心。
方案二:FPGA作为控制与运算核心。
方案三:单片机与FPGA联合作为运算与控制核心。
单片机具有控制灵活简单的优点,但逻辑资源少,运行速度不能做得很高;FPGA相对于单片机在逻辑资源和速度上有绝对的优势,但不便于调试。
若将两者联合起来,可以充分发挥各自的优势,有可补充对方的缺点。
故选择方案三。
2.2 程控放大器
方案一:使用集成可变增益放大器AD603。
只要改变控制端电压就可以控制AD603的增益,但要实现增益的精密控制还必须与位数较高的D/A配合使用。
方案二:使用模拟开关或继电器选择则不同的电阻值,作为放大器的反馈电阻,实现不同量程的放大倍数。
这种方案控制简单,只要运放的增益带宽积和噪声抑制能力足够大,每级的增益是恒定的。
但继电器分布参数较大;而模拟开关存在一定的导通电阻。
1.3 滤波器设计放方案
本系统在采样之前要分别通过一级高通滤波和一级低通滤波。
高通滤波器用于滤除信号中的直流成分,以适于设定为双极性输入的模数转换器进行有效采样;低通滤波是一级反混叠失真滤波器。
其实现一般有如下方案:
方案一:使用运算放大器设计RC有源滤波器。
方案二:使用集成滤波芯片,如MAX297。
对于一般的滤波器设计,方案一灵活简单,而且有专门的辅助设计软件可快速进行设计;但对滤波器的设计参数有特殊要求时,方案一将变得不现实。
结合设计要求,高通滤波器的设计采用方案一,低通滤波器(要求具有很窄的过渡带)的设计采用方案二。
1.4 系统实现框图
系统总体实现框图如图1-1所示。
系统以AT89S52单片机和Cyclone 系列的FPGA为控制与运算核心;输入端由一级JFET运放实现50Ω的输入阻抗;待测信号经过由模拟开关和继电器控制的两级程控放大器,被放大到适合A/D采样的范围以内,再经一级截至频率为20KHz的反混叠低通滤波器,由FPGA内的采样控制模块控制MAX197实现预定速率的采样;采样所得结果经FFT模块转换为此信号的频域表示,经单片机转换为对应频率的功率值,按功率从大到小排序,并将数据存储于外部RAM 62256。
周期性判断及频率测量与失真度分析也由单片机完成。
相应的测量结果通过对键盘的操作由点阵式液晶屏显示[2]。
图1-1 系统实现框图
3.理论分析与计算
3.1程控放大器设计
若输入电压范围(峰-峰值)为100mV~5V;为扩大输入信号动态范围,提高灵敏度的要求,可将输入信号电压范围(峰值)定为1mV~5V。
如果A/D的有效输入范围(峰值)为2.5V~5V,则所需最大放大倍数应不小于2500倍,最小放大倍数应不大于0.5倍。
可见最大增益与最小
增益之间相差12~13个两倍程,故采用两级程控放大器。
第一级分三挡,实现粗调;第二级分八挡,实现细调。
各级增益(倍数)的具体分配见下表。
第一级 第二级
1 28 180 0.5 1
2 4 8 16 24 32
由上表可得,放大器总的增益调节范围是0.5~5760倍。
满足设计要求。
3.2 功率谱测量方法
本设计采用直接的经典功率谱估计法:它是把抽样序列的个观测数据视为一能
量有限的序列,直接计算的离散傅立叶变换,得,然后再取其幅值的平方,并除以,作为序列真实功率谱的估计。
)(n x N )(n x )(k X N )(n x 有限长序列的傅立叶变换定义为:
正变换:
∑−=−−==1
21
,...,1,0,)()(N n N
j
N k e
n x k X π
(1)
反变换:∑−=−==1
21
,...,1,0,)(1)(N n nk N j N k e k X N n x π
(2)
根据Parseval 定理:一个序列在时域计算的能量与在频域计算的能量是相等的。
即:
∑∑−=−==1
021
02
|)(|1|)(|N k N n k X N n x ,可得到各个频谱对应的功率与在时域测量功率之间的关系。
这里采用为512的FFT 算法实现离散傅立叶变换。
由频率分辨力N f Δ、采样率和分
析点数之间的关系:
,可得满足100Hz、20Hz 对应的采样率分别为51.2KHz、
10.24KHz。
如果以51.2KHz 的采样率采集信号,若被测信号是100Hz 的单频信号,则刚好可采满一个周期,可测频率下限为100Hz;由Nyquist 定理可知,可测信号频率的上限为25.6KHz。
同理,如果以20.48KHz 的采样率采集被测信号,对应的采样范围是40Hz~10.24KHz,频率分辨力为40Hz。
Nyquist 定理要求采样频率fs 要大于或等于信号最高频率的2倍,但一般取3~4倍.否则,将会出现严重的“泄漏”,使频谱失真。
若要达到20Hz 的频率分辨力,可以采用两种办法:第一,降低采样率,但可测的频率上限同步减小;第二,增加FFT 分析的点数,这样对可测的频率的上限没有影响,但实现它所需的运算量与数据存储量将明显增加。
s f N N f f s /=Δ3.2 周期性判断方法
信号周期性的判断可利用周期信号所具有的自相关特征。
假设采样所得的时间序列
N i T i x i x s "2,1),()(=⋅=,其中为采样周期,利用一长为的滑窗来计算该采样序列的结构函数
,即
s T n
)
(n F
∑=−=
M
i n i x i x M
n F 1
)]
()([1
)(
式中,
,,一般取max 1n n ≤≤n N M −=5/max N n ≈,以保证上式中即使在时,
也有较多的数据差值求平均。
可以用来表征时间间隔为的两个时间点处信号的相
似性max n n =)(n F s nT [6]。
假设时间序列是周期性的,其周期
s
p T n T ⋅=。
当
p
n n =或
的整数倍时,;
即使信号被噪声污染,,但在一定的信噪比范围内,在p
n 0)(=n F 0)(≠n F p
n n =处,仍然会取
得最小值,从而也可识别信号的周期性并测量其周期。
)(n F 4. 主要功能电路的设计与实现
4.1程控放大器的实现
结合第二部分的分析,程控放大器由两级实现:第一级分为三挡,由继电器实现挡间切换,其中一挡不做放大,另外两挡都由两级精密运放级联放大;第二级分八挡,由模拟开关AD7501实现挡间切换。
考虑到模拟开关存在170Ω的导通电阻,使用电位器确定增益时要将
这一电阻考虑在内[4]。
图 4.1 程控放大器后级电路
图 4.2 程控放大器前级电路
4.2 滤波器的设计与实现
本系统在采样之前要分别通过一级高通滤波和一级低通滤波。
高通滤波器用于滤除信
图4.3 滤波器电路
4.3 FPGA部分
本系统FPGA部分的设计采用Altera公司Cyclone系列的FPGA和开发软件QUARTUS II,使用硬件描述语言Verilog HDL 编写程序代码[3]。
在本设计中主要用其逻辑单元多、存储容量大、时钟速率高的优势,实现512点的FFT算法,对时间采样序列进行频谱分析。
键盘和LCD 显示的控制也用FPGA的逻辑资源实现,缓解了单片机可用I/O资源短缺的状态。
5. 系统软件设计
本系统的软件控制部分在Keil C51编译Array环境下,使用C语言实现[1]。
其主要完成的功
能有控制MAX197的采样,对FFT结果进行处
理、分析,判断信号的周期性并测量信号的
失真度。
总的软件流程图如图4-1所示。
系统通过按键事件进入不同的功能。
数
据存储将当前频率与相应的功率数据存放
在外部数据RAM;数据回放调出RAM中的数
据,并在点阵式液晶屏上显示;频率分辨力
设定后,系统以该分辨力对应的频率采样、
转换并实时显示分析结果;周期性的判断采
用自相关法,如果信号具有周期性,可由频
谱直接得到信号的频率;频谱显示将FFT分图 5-1 系统流程图
析结果作归一化处理后,以图形的方式在点阵式液晶屏上显示。
6. 结论
FFT分析直接采用A/D的采样值,相当于给原始的时间序列加一矩形窗,为了减小波形的截短误差,即矩形窗函数引起的Sinc函数造成的频谱失真,对此我们选用合适的窗函数如Hanning窗来加以改善;A/D量化时引起的有限字长效应也会对测量的精度产生一定的影响。
系统整体性能良好, 分析带宽比较宽且频率分辨力达到了20Hz,用较高的分辨力,实用性
参考文献
[1] 马忠梅.单片机的C语言应用程序设计.北京:北京航空航天大学出版社, 2005
[2] 李朝青.单片机原理及接口技术.北京:北京航空航天大学出版社, 1999
[3] 夏宇闻.Verilog 数字系统设计教程.北京:北京航空航天大学出版社, 2003
[4] 谢自美等.电子线路设计·实验·测试(第二版).武汉:华中科技大学出版社, 2000
[5] 胡肮.语音信号处理.哈尔滨:哈尔滨工业大学出版社,2000
[6] 刘文波,张弓.混沌信号中隐含周期信号的一种识别方法.雷达与对抗.2001年第一期,46-49.
FFT-based audio signal analyzer
DENG Xiaoping, ZHANG Xian, TAN Shuwei, YIN Chaoliang (School of Electronic Information,Wuhan University,Wuhan 430079)
Abstract
This system is based on Fast Fourier Transform (FFT) algorithm which uses FPGA and microcontroller for control and data processing, the analysis range is 20Hz to 10 KHz of audio signal. The system is consisted of computing core, programmable amplifier, filtering and sampling module. The programmable gain amplifier system adjustments will be measured voltage to expand the dynamic range of 10mV ~8V; By changing the ADC sampling frequency ,system can reach 100 Hz or 20 Hz frequency resolution; Spectrum analysis results can be orderly storage, and can be displayed on the LCD; It can judge the cyclical and analysis the distortion of the signal. In addition, through the LCD display graphics signals to the various frequency components and their relative size.
Keywords: Analysis in frequency, FFT, PGA, Distortion。