王彤+林岩+张烽
摘 要
本文介绍了基于FFT的广播信号声音检测的研究,提出了通过Matlab仿真对广播信号的PCM原始音频数据进行FFT变换并进行加权统计分析的解决方案,从而分辨出噪声频道,,最后在嵌入式平台中得到了快速的实现。
【关键词】FFT广播信号 声音检测 MatlabPCM原始音频数据嵌入式平台
快速傅立叶变换(FFT)是对离散傅立叶变换(DFT)的算法进行改进获得的。因FFT具有计算量小的显著优点,在信号处理技术领域获得了广泛应用。本文将FFT应用于广电行业中广播信号的处理,通过对获取的广播PCM原始音频数据进行FFT,将得到的频谱进行分析,分辨出含有噪声的音频,从而达到只存有用信息,降低存储空间的目的。
1 快速傅里叶变换(FFT)
1.1 离散傅里叶变换(DFT)的局限性
离散傅里叶变换对为
一般情况下,信号序列x(n)及其频谱序列X(k)都是用复数来表示的。因此计算N点的DFT需要进行N2次复数乘法和N(N-1)次复数加法。当N很大时,计算量变的极大,要求相当大的内存,限制了DFT的发展与应用。
1.2 快速傅里叶变换(FFT)
快速傅里叶变换(FFT)的提出可以使运算速度提高几百倍,以时间抽选奇偶分解快速离散傅里叶变换为例。设输入序列长度为N = 2M(M为正整数),将x(n)按n的奇偶分为两组,令n=2r和n=2r+1,可以得到x(2r)=x1(r)和x(2r+1)=x2(r),且r = 0,…,N/2-1。于是
将N/2子序列按奇偶可以继续分解,以此类推。所以N=2M的DFT运算可分成M级,M级共有N/2*log2N次复乘和N*log2N次复加,远远小于DFT的N2次和N(N-1)次。
乘法运算量如图1。
从图中可以清晰的看出FFT的运算量,实用性使得它在信号处理,数字通信等方面获得了广泛的应用。
2 FFT应用于广播信号的声音检测
2.1 广播信号音频流
广播模拟信号通过PCM脉冲编码调制(Pulse Code Modulation)方法量化为数字信号,得到PCM原始音频数据。
2.2 广播信号声音检测的仿真设计
2.2.1 PCM音频流的读取
读取PCM音频文件,得到多路音频信息,部分读取结果如图2、3、4所示。
通过人耳辨别与音频流图像可以初步得出每路音频的种类,是噪声还是纯净声音等。由于信息量巨大,光靠人耳是无法完成如此浩大的工程,所以需要通过计算机来完成。
2.2.2 PCM音频数据的FFT处理与统计分析
本文应用Matlab,通过fft函数可以方便快捷的利用快速傅里叶变换,将时域上的信号变换到频域上。
将原始音频数據导入Matlab,并对每一路音频取256个PCM数据作为研究对象,经过FFT可得某两路音频图像如图5、图6所示。
图中可以观察到,噪声的频率图像波动大且范围广,在0到100个点之间的数值也相对较大;而纯净声音有明显的周期性波峰,较大值一般在0到30个点之间。由于图像的周期与对称性,可以只考虑128个点为研究对象,以此降低运算的时间与复杂性。
本文利用前30个点的平均值与剩余点的平均值之商来进行声音检测,把这个商定义为本次研究中的信噪比。为了提高准确率,考虑到对计算时间和存储空间的要求,每录音频取10个信噪比进行研究,取三路音频信号为例,如图7所示。
从图中的信噪比曲线可知,区分噪声和纯净声音相对容易,而夹杂噪声的声音区分起来有些困难,如何在提高准确率的同时,将夹杂噪声的声音更准确的区分出来是接下来要研究的部分。
2.2.3 算法的优化
通过观察多路音频的傅里叶图像,考虑对每个值进行加权的方法来计算信噪比,经过多次尝试,最后决定对前30个点采取加权数逐降,对剩余的点采取每个扩大30倍的方法,以上述的三路音频信号为例,可得图8。
通过对比图7与图8,可以知道信噪比的趋势没有发生太大的改变,然而在经过加权之后得到的信噪比数值发生了明显的变化,纯净声音的信噪比明显增大,这更利于找出一个分界线来区别这几种不同的信号,然而依然存在一些例外的点相互交叉。
2.2.4 结果的分析
统计中信噪比数值的交叉无法定义一个数值,考虑改变统计方式,找出一个相对合适的分界线数值,统计每路音频信号在此数值以上的个数。
以上述三路音频为例,可以选取25到30之间的数值做分界线,统计分界线以上信噪比的个数,由于纯噪声的信噪比值相对较小,所以可以很容易分辨出来。
经过多次试验,最后决定采取30作为分界线。经过统计计算,每路音频含有超过分界线的信噪比数目,如表1所示。
从表格中可以看出,纯净声音数目都在8个以上,夹杂噪声的声音数目是6个,而噪声和无声数目为0个(无声音频可以在最开始通过条件语句来判断),于是可以知道音频的种类。
仿真的结果具有一定的特殊性与局限性,实时广播信号与已录制好的广播信号会有一定差距,数值上也会有一定的偏差。为了使结果具有普遍性,将仿真的结果应用于声音检测的过程中,需要进行慢慢的调整与改进,最后得到普遍适用的算法来进行实时广播信号的声音检测。
在实际工程实践中,在选用的嵌入式处理平台上,对16路广播信号进行采集处理后,得到PCM原始音频数据。利用对上述仿真原理,通过多次试验,在实际应用中得到的分界线数值为20。在除去无声频道后的剩余音频数据中,信噪比大于分界线(20)的数目比例超过60%的为纯净的声音,数目比例在20%~60%之间的为夹杂噪声的声音,数目比例为0%的是噪声。通过工程实践可知,利用FFT进行声音检测的方法得到了快速的实现,并取得了良好的结果。
3 结论
本文提出了一种基于FFT的声音检测算法,创新性地引入了加权统计的方式对经过FFT变换后的PCM原始音源进行了处理和分析,仿真的可行性与实际工程实践的成功表明,这种算法对噪音识别的准确性极高,对不同平台的适用性很好,而且计算量较小并具有很好的灵活性,因而十分适合嵌入式平台的使用。这是可以应用于实际工程实践中声音检测的解决方案,具有很大的实际意义。
参考文献
[1]潘文杰.傅里叶分析及其应用[M],北京:北京大学出版社,2000:245-247.
[2]E.Oran Brigham.The Fast Fourier transform and its applications[M].Englewood Cliffs,N.J.:Prentice Hall,c1988:90-97.
[3]胡丽莹,肖蓬.快速傅里叶变换在频谱分析中的应用[J].福州:福建师范大学学报,2011,27(04):27-30.
[4]胡广书.数字信号处理[M].北京:清华大学出版社,2003:169-173.
[5]I Mathworks.MATLAB Signal Processing ToolboxTM Users Guide[EB/OL],The MathWorks,Inc,R2012a:Ch1 34-36.
[6]桑赫,林岩,张烽.基于DM365的便携监控系统解决方案[J].北京:单片机与嵌入式系统应用,2015(08):43-44.