0、引言
音频在现实生活中应用广泛,对于音频的处理很是重要。目前,在很多语音处理系统中都用到了语音分析模块,采集现场的声音并进行频谱分析。经查询资料得到语音信号频率范围:100——7000Hz;音乐信号频率范围(人的听力范围):20-20k Hz 。 语音信号是基于时间轴上的一维数字信号,在这里主要是对语音信号进行频域上的分析。
在信号分析中,频域往往包含了更多的信息。对于频域来说,大概有8种波形可以让我们分析:矩形方波,锯齿波,梯形波,临界阻尼指数脉冲波形,三角波,余弦波,余弦平方波,高斯波。对于各种波形,我们都可以用一种方法来分析,就是傅立叶变换:将时域的波形转化到频域来分析。于是,本课题就从频域的角度对信号进行分析,并通过分析频谱来设计出合适的滤波器。当然,这些过程的实现都是在MATLAB软件上进行的,MATLAB软件在数字信号处理上发挥了相当大的优势。
1、研究目的
将声音信号在时域中的波形转变为频率域的频谱,进而可以对声音信号的信息作定量解释。从而便于发现信号的频率特征,以此来达到滤除噪音、提取伴奏、变调等在时域难以实现的目的。 **2、研究意义**
在频域分析信号的最常见目的是分析信号属性。工程师通过分析频谱就可以知道输入信号中有那些频率的信号和没有那些频率的信号。另外在时间域内往往要解微分方程,而用傅立叶和拉普拉斯变换到复频域后就变成了代数方程,求解起来减少了很多的计算量,提高了计算机系统对于大量信号的处理效率。 **3、研究内容**
1.对一段完整的音频信号进行时频域分析,随后加入高斯白噪声,再对加入噪声的音频信号进行分析,研究高斯白噪声分别在时域和频域对信号波形的影响,设计一种FIR,尽可能的滤除高斯白噪声还原原始信号。
2.对比分析纯伴奏信号和歌曲信号的频域波形的差距,设计一种陷波器,尽可能的滤除歌曲中的人声以便得到高品质的伴奏。 **4、核心算法**
尽管传统的DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,不利于计算机实时对信号进行处理。因此至DFT被发现以来,在很长的一段时间内都不能被应用到实际的工程项目中,直到一种快速的离散傅立叶计算方法——FFT,被发现,离散傅立叶变换才在实际的工程中得到广泛应用。 FFT(Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换(DFT)的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
一个N点的DFT变换过程可以用两个N/2点的DFT变换过程来表示,其具体公式如下所示DFT快速算法的迭代公式:
式中为偶数项分支的离散傅立叶变换,为奇数项分支的离散傅立叶变换。 我们利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波。对于波形图与频谱图(包括滤波前后的对比图)都可以用MATLAB画出。我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。
5、不同采样率下信号的差异
图1不同采样频率重采样原始信号后得到的时频域波形
如图1所示是在MATLAB软件中对原始信号进行频谱分析,并分别以20KHz,10KHz,5KHz的采样频率对原始信号进行重采样(抽取和插值),画出其信号波形图并且对其进行频谱分析。
原始采样频率为44KHz,信号频率范围覆盖了人耳的听觉范围,此时声音信号完整饱满;降低采样频率到20KHz后,从听觉上会发现高频部分时而有缺失;降低采样频率到10KHz后,原始音乐的高音部分表现大部分有缺失;降低采样频率到5KHz后,信号的高频部分完全听不出;经过试验也发现,降低采样频率对信号重采样和信号通过一个低通滤波器效果等同。 **6、带单一频率噪声信号的分析及滤除**
图2滤除高频噪声信号图像
如图2所示是在MATLAB软件中画出原始信号的波形和频谱图,并且画出加入以及去除高频正弦噪声信号后的波形和频谱图。
在原始信号中以信噪比为5加入12KHz的正弦信号作为干扰信号,播放此信号时会发现伴有十分的刺耳高频声音,频谱分析后发现信号在12KHz频率处有较高幅值,可知此处的信号幅值主要来自于正弦干扰在频域的表现,为滤除高频噪声,设计滤波器时的计算参数为:通带上限频率11.5KHz,阻带下线频率12KHz,据此参数冲激响应不变法设计一种巴特沃兹低通滤波器,进而还原原始信号。
图3滤除中频噪声信号图像
如图3所示是在MATLAB软件中画出原始信号的时域波形和频谱图,并且画出加入以及去除中频正弦噪声信号后的时域波形和频谱图。
在原始信号中以信噪比为2加入1.4KHz的正弦信号作为干扰信号,频谱分析后可以清楚的看到干扰信号在频域的表现,根据干扰信号的特性,设计了一款陷波器(带阻滤波器),通带上下限截止频率为1.45Khz和1.35KHz,阻带上下限截止频率分别为1.3KHz和1.5KHz,边带区的衰减为0.1dB,截止区衰减为30dB,据此参数利用MATLAB生成切比雪夫滤波器,带噪信号通过陷波器后可以较好的滤除掺杂在其中的中频正弦干扰。 **7、带高斯白噪声信号的分析及滤除**
图4滤除高斯白噪声图像
如图4所示是在MATLAB软件中画出原始信号的时域波形和频谱图,并且画出加入以及去除高斯白噪声信号后的时域波形和频谱图。 原始信号中加入高斯白噪声,它的瞬时值服从高斯分布,而它的功率谱密度又是均匀分布的,遂采用小波去噪算法:
** 1.小波分解与重构去噪:**
1)首先对含噪声信号f(x)进行小波分解,得到小波变换之后的逼近部分cj,k 和细节部分dj,k;
2)然后取出第j 层的细节部分dj,k,根据选定的阈值δj,用下列的公式进行处理
3)最后利用逼近部分cj,k 和细节部分dj,k 利用重构算法进行重构,得到滤波后的信号。
** 2.硬阀值的处理:**
1)先把信号做小波变换,得到小波系数;
2)计算出阀值,把小波系数的绝对值与阀值进行比较,小于或等于阀值的点设为零,大于阀值的点保持不变;
3)再把处理过的小波系数进行小波变换来重构信号。
3.软阈值的处理步骤如下:
1)含噪信号进行小波分解,选择合适的小波,确定小波的分解层次M, 并对信号进行二进离散小波分解。可选用Daubichie 4 小波,可通过正确设计的QFM( 正交镜像滤波器)来实现。
2)对信号分解后的各级系数进行适当处理:对第1 到第M层的小波系数,选择一个软阈值,对每一级的小波系数进行阈值量化处理。
3)信号的重构:对量化处理后的各级小波系数进行信号的小波重构。先用db1小波对原始信号进行3层分解并提取小波系数,后分别通过硬阈值和软阈值的方式对原始信号进行处理,得到去噪后的信号。
8、伴奏与歌曲信号的分析
图5伴奏和歌曲的时域波形图以及频谱图
如图5所示,伴奏信号和歌曲信号在时域上的描述千差万别,同时也难以找出差异规律,此时频谱图为分析两者的差异提供了帮助,从图中可以发现两者的主要差异在低频段的表现,是因为人声的的频率范围主要在65-1.1KHz,从频域分析两者可以清晰明了的发现差异。
9、结论
1、本设计圆满的完成了对语音信号的读取与打开。
2、本设计也较好的完成了对语音信号的频谱分析,通过fft变换,得出了语音信号的频谱图。
3、本设计在滤波部分的做法, 先加入高频噪声,可以在频谱上发现信号在高频段上出现了一个极高的峰值,遂使用低通滤波器后,高频噪声被较好地滤掉。后又在原是信号中加入中频噪声,设计一款陷波器(带阻滤波器)滤除中频噪声。加入高斯白噪声后采用了小波去噪的方法得到较为纯净的信号。
4、本设计在最后分析了伴奏信号和歌曲信号在频域的差异性表现。语音信号处理是语音学与数字信号处理技术相结合的交叉学科,我们不讨论语音学,而是将语音当做一种特殊的信号,即一种复杂向量来看待。我们是将数字信号处理技术应用于某一实际领域,这里就是指对语音的处理。作为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需将这些离散的量提取出来,就可以对其进行处理了。在这个过程中我们用到了处理数字信号的强有力工MATLAB,通过MATLAB里几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。我们可以像给一般信号做频谱分析一样,来给语音信号做频谱分析,也可以较容易的用数字滤波器来对语音进行滤波处理。