基于matlab的语音信号处理 下载本文

第三章 课题研究方案及内容

运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。

(3)借助成熟的模拟滤波器的成果:IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,再通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。

(4)需加相位校准网络:IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。 3.4.3 FIR数字滤波器概述

FIR数字滤波器(finite impulse response filter)又名“有限脉冲响应数字滤波器”,这类滤波器对于脉冲输入信号的响应最终趋向于0,因此而得名。有限脉冲响应滤波器(FIR filter)的优点:

(1)脉冲响应(impulse response)为有限长:造成当输入数位讯号为有限长的时候,输出数位讯号也为有限长。

(2)比无限脉冲响应滤波器(IIR filter)较容易最佳化(optimize)。 (3)线性相位(linear phase):造成h(n),是偶对称(even)或奇对称(odd)且有限长。

(4)一定是稳定的(stable):因为Z转换(Z transform)后所有的极点(pole)都在单位圆内

3.4.4FIR数字滤波器和IIR数字滤波器比较

不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤: (1)按照实际任务的要求,确定滤波器的性能指标。

(2)用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。根据不同的要求可以用IIR系统函数,也可以用FIR系统函数去逼近。

(3)利用有限精度算法实现系统函数,包括结构选择、字长选择等。 但IIR滤波器和FIR滤波器的设计方法完全不同。IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计进行的。

其设计步骤是: 先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。FIR滤波器比鞥采用间接法,常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。对于线性相位滤波器,经常采用FIR滤波器。

3.4.5低通高通及带通滤波器

低通滤波器:对于不同滤波器而言,每个频率的信号的减弱程度不同。当使用在音频应用时,它有时被称为高频剪切滤波器, 或高音消除滤波器。低通滤波器概念有许多不同的形式,其中包括电子线路(如音频设备中使用的hiss 滤

7

第三章 课题研究方案及内容

波器、平滑数据的数字算法、音障(acoustic barriers)、图像模糊处理等等,这两个工具都通过剔除短期波动、保留长期发展趋势提供了信号的平滑形式。低通滤波器在信号处理中的作用等同于其它领域如金融领域中移动平均数(moving average)所起的作用;低通滤波器有很多种,其中,最通用的就是巴特沃斯滤波器和切比雪夫滤波器。

高通滤波器:去掉信号中不必要的低频成分,去掉低频干扰的滤波器。在电力系统中,谐波补偿时用高通滤波器滤除某次及其以上的各次谐波。高通滤波器是指车载功放中能够让中、高频信号通过而不让低频信号通过的电路,其作用是滤去音频信号中的低音成分,增强中音和高音成分以驱动扬声器的中音和高音单元。此外高通滤波器常常和低通滤波器成对出现,不论哪一种,都是为了把一定的声音频率送到应该去的单元。

带通滤波器:能通过某一频率范围内的频率分量、但将其他范围的频率分量衰减到极低水平的滤波器,与带阻滤波器的概念相对。一个模拟带通滤波器的例子是电阻-电感-电容电路(RLC circuit)。这些滤波器也可以用低通滤波器同高通滤波器组合来产生。

3.5程序流程图

图3-1程序流程图

8

第四章 软件仿真调试及结果分析

第四章软件仿真调试结果分析

4.1语音信号的时频分析

在MATLAB软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数,Wavread函数调用格式

y=wavread(file)%读取file所规定的wav文件,返回采样值放在向量y中。 [y,fs,bits]=wavread(file) %采样值放在向量y中,fs表示采样频率(hz),bits表示采样位数。

y=wavread(file,N)%读取前N点的采样值放在向量y中。

y=wavread(file,[N1,N2])%读取从N1到N2点的采样值放在向量y中。 对语音信号Orisound.wav进行采样其程序如下:

[y,fs,nbits]= wavread('E:\\yuanyinpin.wav');%把语音信号加载入MATLAB仿真软件平台中

画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:

Xk=fft(xn,N)

参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。程序如下:

[y,fs,nbits]=wavread('E:\\yuanyinpin.wav'); %语音信号的采集 sound(y,fs,nbits); %语音信号的播放 n=length(y);

Y=fft(y,n); %快速傅里叶变换 figure;

subplot(2,1,1); plot(y);

title('原始信号波形','fontweight','bold'); axis([67000 87000 -0.5 0.5]);

grid;

subplot(2,1,2); plot(abs(Y));

title('原始信号频谱','fontweight','bold'); axis([0 15000 0 1000]); grid;

9

第四章 软件仿真调试及结果分析

程序结果如下图:

图4-1原始信号采集波形图

4.2语音信号加噪与频谱分析

在MATLAB中产生高斯白噪声非常方便,我们可以直接应用两个函数:一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。也可直接用randn函数产生高斯分布序列。

在本次设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。randn函数有两种基本调用格式:randn(n)和randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。在这里,我们选用randn(m,n)函数。语音信号添加噪声及其频谱分析的主要程序如下: [y,fs,nbits]= wavread('E:\\yuanyinpin.wav'); sound(y,fs,nbits); n = length (y)

Noise=0.03*randn(n,2);

10

第四章 软件仿真调试及结果分析

s=y+Noise;

sound(s,fs); figure;

subplot(2,1,1); plot(s);

title('加噪语音信号的时域波形','fontweight','bold'); axis([ 67000 87000 -0.5 0.5]); grid;

S=fft(s);

subplot(2,1,2); plot(abs(S));

title('加噪语音信号的频域波形','fontweight','bold'); axis([ 0 15000 0 1000]); grid;

程序结果如下图:

图4-2信号加噪时域波形图与频谱图

11