语音信号的数字滤波处理十.docx
- 文档编号:16345029
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:25
- 大小:346.63KB
语音信号的数字滤波处理十.docx
《语音信号的数字滤波处理十.docx》由会员分享,可在线阅读,更多相关《语音信号的数字滤波处理十.docx(25页珍藏版)》请在冰点文库上搜索。
语音信号的数字滤波处理十
语音信号的数字滤波处理(十)
LT
1绪论
1.1课程设计背景
随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向。
虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。
基于计算机软硬件平台的虚拟仪器可代替传统的测量仪器,如示波器、逻辑分析仪、信号发生器、频谱分析仪等。
从发展史看,电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器,由于计算机性能的飞速发展,已把传统仪器远远抛到后面,并给虚拟仪器生产厂家不断带来连锅端的技术更新速率。
目前已经有许多较成熟的频谱分析软件,如SpectraLAB、RSAVu、dBFA等。
声卡是多媒体计算机最基本的配置硬件之一,价格便宜,使用方便。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令。
MATLAB是MathWorks公司于1982年推出的一款功能强大、易于使用的高效数值计算和可视化软件,它为进行算法开发、数据计算、信号分析与可视化提供了交互式应用开发环境,主要包括基本数学计算、编程环境(M语言)、数据可视化、GUIDE等。
并附加了大量支持建模、分析、计算应用的工具箱来扩展MATLAB基本环境,用于解决特定领域的工程问题,如今MATLAB已广泛应用于通信、信号处理、生物医学、自动控制等领域。
数字滤波器(DigitalFilter,DF)在信号的过滤、检测和参数估计等方面起着重要的作用。
信号往往夹杂着噪声及无用信号成分,必须将这些干扰成分滤除。
数字滤波器对信号进行筛选,可通过特定频段的信号。
一般来说,噪声信号往往是高频信号,而经典滤波器正是假定有用信号与噪声信号具有不同的频段,所以利用经典滤波器可以去除噪声。
但如果有用信号和无用信号,或有用信号和噪声的频谱相互重叠,那么经典滤波器则不能实现理想的滤波性能。
现代滤波器的作用是从含有噪声的信号中估计出信号的某些特征或信号本身,一旦信号被估计出,那么估计出来的信号与原信号相比会有更高的信噪比。
这类滤波器主要有维纳滤波器、卡尔曼滤波器、线性预测滤波器以及自适应滤波器等。
1.2课程设计目的
综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
(1)掌握数字信号处理的基本概念,基本理论和基本方法。
(2)熟悉离散信号和系统的时域特性。
(3)掌握序列快速傅里叶变换方法。
(4)学会MATLAB的使用,掌握MATLAB的程序设计方法。
(5)掌握利用MATLAB对语音信号进行频谱分析。
(6)掌握滤波器的网络结构。
(7)掌握MATLAB设计IIR、FIR数字滤波器的方法和对信号进行滤波的方法。
2课程设计原理
2.1频谱分析原理
时域分析只能反映信号的幅值随时间的变化情况,除单频率分量的简单波形外,很难明确提示信号的频率组成和各频率分量大小,而频谱分析能很好的解决此问题。
(1)DFT与FFT
对于给定的时域信号y,可以通过Fourier变换得到频域信息Y。
Y可按下式计算
(2-1)
式中,N为样本容量,
为采样间隔。
采样信号的频谱是一个连续的频谱,不可能计算出所有的点的值,故采用离散Fourier变换(DFT),即
(2-2)
式中,
。
但上式的计算效率很低,因为有大量的指数(等价于三角函数)运算,故实际中多采用快速Fourier变换(FFT)。
其原理即是将重复的三角函数算计的中间结果保存起来,以减少重复三角函数计算带来的时间浪费。
由于三角函数计算的重复量相当大,故FFT能极大地提高运算效率。
(2)频谱图
为了直观地表示信号的频率特性,工程上常常将Fourier变换的结果用图形的方式表示,即频谱图。
以频率f为横坐标,
为纵坐标,可以得到幅值谱;
以频率f为横坐标,
为纵坐标,可以得到相位谱;
以频率f为横坐标,
为纵坐标,可以得到实频谱;
以频率f为横坐标,
为纵坐标,可以得到虚频谱。
根据采样定理,只有频率不超过
的信号才能被正确采集,即Fourier变换的结果中频率大于
的部分是不正确的部分,故不在频谱图中显示。
即横坐标
。
2.2IIR设计原理
语音信号的频谱范围主要为800HZ左右,并且在5000HZ左右有一个小信号,因
此,在设计低通滤波器时,应把噪声频谱设定在5000HZ以上,这样,通过低通
滤波器,即可滤除噪声信号从而还原语音信号;在设计高通滤波器时,应把噪声
设定在800HZ以内,以通过高通滤波器滤除低频的噪声信号,从而还原相对频较
高的语音信号;在设计带通滤波器时,可把噪声设计在低于800HZ或高于5000HZ
的频谱上,已通过带通滤波器还原带通范围内的语音信号。
(1)切比雪夫滤波器原理
切比雪夫滤波器的幅频特性具有等波纹特性。
它有两种形式:
振幅特性在通带内是等波纹的,在阻带内是单调下降的切比雪夫I型;振幅特性在阻带内是等波纹的,在通带内是单调下降的切比雪夫II型。
(2)双线性变换法工作原理
双线性变换中数字域频率和模拟频率之间的非线性关系限制了它的应用范围,只有当非线性失真是允许的或能被忽略时,才能采用双线性变换法,通常低通、高通、带通和带阻等滤波器等具有分段恒定的频率特性,可以采用预畸变的方法来补偿频率畸变,因此可以采用双线性变换设计方法。
(3)脉冲响应不变法工作原理
冲激响应不变法遵循的准则是使数字滤波器的单位取样响应与参照的模拟滤波器的脉冲响应的取样值完全一样,即h(n)=ha(nT),其中T为取样周期。
实际是由模拟滤波器转换成为数字滤波器,就是要建立模拟系统函数Ha(S)与数字系统函数H(z)之间的关系。
脉冲响应不变法是从S平面映射到z平面,这种映射不是简单的代数映射,而是S平面的每一条宽为2π/T的横带重复地映射到整个z平面。
2.3FIR设计原理
有限脉冲响应数字滤波器具有一般FIR系统的一切特征,与IIR系统的特征相比在单位脉冲响应h(n)、差分方程形式、系统函数H(z)以及系统结构方面有明显的区别。
另外,可以设定条件来保证FIR滤波器具有线性相位特征,但IIR滤波器很难实现线性相位。
设一个因果有限脉冲响应数字滤波器的单位脉冲响应为h(n),n=0~N-1,则其相位的系统函数H(z)如下:
(1)
上式两边求Z反变换可以得到滤波器系统的差分方程描述形式:
(2)
显然,上式右边也就是单位脉冲响应h(n)与输入信号x(n)的线性卷积h(n)*x(n)。
上式说明,FIR数字滤波器额当前输出信号值仅仅与当前输入信号值和N-1个以前的输入信号值有关。
由于IIR数字滤波器能够保留一些模拟滤波器的优良特性,因此应用很广。
但是这些特性是以牺牲线性相位频率特性为代价的,即用Butterworth、切比雪夫和椭圆法设计的数字滤波器逼近理想的滤波器的幅度频率特性,得到的滤波器往往是非线性的。
在许多电子系统中,对幅度频率特性和线性相位特性都有较高的要求,所以IIR滤波器在这些系统中往往难以胜任。
有限长单位冲激响应(FIR)数字滤波器具有以下优良的特点:
(1)可在设计任意幅度频率特性滤波器的同时,保证精确、严格的线性相位特性。
(2)FIR数字滤波器的单位冲激响应h(n)是有限长的,可以用一个固定的系统来实现,因而FIR数字滤波器可以做成因果稳定系统。
(3)允许设计多通带(多阻带)系统。
窗函数法就是设计FIR数字滤波器的最简单的方法。
它在设计FIR数字滤波器中有很重要的作用,正确地选择窗函数可以提高设计数字滤波器的性能,或者在满足设计要求的情况下,减小FIR数字滤波器的阶次。
常用的窗函数[4]有以下几种:
矩形窗(Rectangularwindow)、三角窗(Triangularwindow)、汉宁窗(Hanningwindow)、海明窗(Hammingwindow)、布拉克曼窗(Blackmanwindow)、切比雪夫窗(Chebyshevwindow)、巴特里特窗(Bartlettwindow)及凯塞窗(Kaiserwindow)。
在MATLAB中,实现凯塞窗的函数为kaiser,调用格式为:
w=kaiser(N,beta)
其中beta为窗函数的参数β。
各种窗函数的性能比较可见表1,在设计FIR滤波器的过程中可以根据要求选择合适的窗函数:
表1 各种窗函数的性能比较
窗 函 数
第一旁瓣相对于主瓣衰减/dB
主 瓣 宽
阻带最小衰减/dB
矩形窗
–13
4π/N
21
三角窗
–25
8π/N
25
汉宁窗
–31
8π/N
44
海明窗
–41
8π/N
53
布拉克曼窗
–57
12π/N
74
凯塞窗
可调
可调
可调
切比雪夫窗
可调
可调
可调
3课程设计步骤
(1)语音信号的采集
要求利用windows下的录音机(开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8000Hz,8位,单声道)录制一段自己的话音,时间控制在1秒左右。
然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
通过wavread函数的使用,要求理解采样频率、采样位数等概念。
wavread函数调用格式:
y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。
[y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率(Hz),nbits表示采样位数。
y=wavread(file,N),读取前N点的采样值放在向量y中。
y=wavread(file,[N1,N2]),读取从N1点到N2点的采样值放在向量y中。
(2)语音信号的频谱分析
要求首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性;从而加深对频谱特性的理解。
(3)设计数字滤波器和画出频率响应
根据语音信号的特点给出有关滤波器的性能指标。
(4)回放语音信号
在MATLAB中,函数sound可以对声音进行回放。
其调用格式:
sound(x,fs,bits);可以感觉滤波前后的声音有变化。
这里可以通过两种方式进行信号采集,一是在自己电脑C:
\Windows\Media中有很多系统声音,我选择了自己电脑里的“Windows7叮”这个声音文件(.wav)。
二用电脑自带录音软件(开始\所有程序\附件\娱乐\录音机),或者使用其它专业的录音软件,录制时需要配备录音硬件(如麦克风),为便于比较,需要在安静、干扰小的环境下录音。
4设计程序的调试和运行结果
4.1切比雪夫低通滤波器的设计
将语音信号和噪音信号叠加可以得到含噪声信号,分析其频谱特性之后用切比雪夫低通滤波器进行滤波。
MATLAB程序如下,仿真处理如图1所示。
Fs=22050;
[x,FS,bits]=wavread('C:
\Windows\Media\ding.wav');
x=x(:
1);
figure
(1);
subplot(2,1,1);
plot(x);
%sound(x,FS,bits);%回放语音
title('语音信号时域波形图')
y=fft(x,3260);
f=(FS/1630)*[1:
1630];
subplot(2,1,2);
plot(f(1:
1630),abs(y(1:
1630)));
title('语音信号频谱图');
%产生噪声信号并加到语音信号
t=0:
length(x)-1;
zs=0.05*cos(2*pi*10000*t/22050);
zs0=0.05*cos(2*pi*10000*t/22050000);
figure
(2);
subplot(2,1,1)
plot(zs0)
title('噪声信号波形');
zs1=fft(zs,1200);
%sound(zs,FS,bits);%回放噪音
subplot(2,1,2)
plot(f(1:
600),abs(zs1(1:
600)));
title('噪声信号频谱');
x1=x+zs';
%sound(x1,FS,bits);%回放加入噪声后的语音
y1=fft(x1,1200);
figure(3);
subplot(2,1,1);plot(x1);
title('加入噪声后的信号波形');
subplot(2,1,2);
plot(f(1:
600),abs(y1(1:
600)));
title('加入噪声后的信号频谱');
%低通滤波
fp=3000;fs=3500;
Rp=1;As=10;
wp=2*pi*3000;
ws=2*pi*3500;
[N,w1]=cheb1ord(wp,ws,Rp,As,'s');
[B,A]=cheby1(N,Rp,w1,'s');
fk=0:
3500/512:
3500;wk=2*pi*fk;
Hk=freqs(B,A,wk);
plot(fk/1000,20*log10(abs(Hk)));
gridon;
xlabel('频率(kHZ)');ylabel('幅度(dB)');
axis([0,12,-70,5])
figure(4);
title('切比雪夫低通滤波器');
gridon;
yd=filter(Bz,Az,x1);
figure(5);
subplot(2,1,1);plot(yd);title('滤波后信号波形');
ydd=fft(yd,1200);
subplot(2,1,2);plot(f(1:
600),abs(ydd(1:
600)));
title('滤波后信号频谱');
sound(yd,FS,bits)
图1切比雪夫低通滤波器处理噪声图
4.2切比雪夫高通滤波器的设计
将语音信号和噪音信号叠加可以得到含噪声信号,分析其频谱特性之后用切比雪夫高通滤波器进行语音信号的滤波。
MATLAB程序如下,仿真处理如图2所示。
Fs=22050;
[x,FS,bits]=wavread('C:
\Windows\Media\ding.wav');
x=x(:
1);
figure
(1);
subplot(2,1,1);
plot(x);
%sound(x,FS,bits);%回放语音
title('语音信号时域波形图')
y=fft(x,3260);
f=(FS/1630)*[1:
1630];
subplot(2,1,2);
plot(f(1:
1630),abs(y(1:
1630)));
title('语音信号频谱图');
%产生噪声信号并加到语音信号
t=0:
length(x)-1;
zs0=0.05*cos(2*pi*100*t/22050);
figure
(2);
subplot(2,1,1)
plot(zs0)
title('噪声信号波形');
zs1=fft(zs0,1200);
%sound(zs,FS,bits);%回放噪音
subplot(2,1,2)
plot(f(1:
600),abs(zs1(1:
600)));
title('噪声信号频谱');
x1=x+zs0';
%sound(x1,FS,bits);%回放加入噪声后的语音
y1=fft(x1,1200);
figure(3);
subplot(2,1,1);plot(x1);
title('加入噪声后的信号波形');
subplot(2,1,2);
plot(f(1:
600),abs(y1(1:
600)));
title('加入噪声后的信号频谱');
%高通滤波
fp=600;fs=400;Fs=22050;
rp=1;as=10;
wp=2*pi*fp/Fs;
ws=2*pi*fs/Fs;
T=1;Fs1=1;
wap=2*tan(wp/2);
was=2*tan(ws/2);
[N,wso]=cheb2ord(wap,was,rp,as,'s');
[B,A]=cheby2(N,as,wso,'high','s');
[Bz,Az]=bilinear(B,A,Fs1);
figure(4);
[h,w]=freqz(Bz,Az,512,Fs1*22050);
plot(w,abs(h));
title('切比雪夫高通滤波器');
xlabel('频率(HZ)');ylabel('幅度(dB)');
gridon;
yd=filter(Bz,Az,x1);
figure(5);
subplot(2,1,1);plot(yd);title('滤波后信号波形');
ydd=fft(yd,1200);
subplot(2,1,2);plot(f(1:
600),abs(ydd(1:
600)));
title('滤波后信号频谱');
sound(yd,FS,bits)
图2切比雪夫高通滤波器处理噪声图
4.3切比雪夫带通滤波器的设计
将语音信号和噪音信号叠加可以得到含噪声信号,分析其频谱特性之后用切比雪夫带通滤波器进行语音信号的滤波。
MATLAB程序如下,仿真处理如图3所示。
Fs=22050;
[x,FS,bits]=wavread('C:
\Windows\Media\ding.wav');
x=x(:
1);
figure
(1);
subplot(2,1,1);
plot(x);
%sound(x,FS,bits);%回放语音
title('语音信号时域波形图')
y=fft(x,3260);
f=(FS/1630)*[1:
1630];
subplot(2,1,2);
plot(f(1:
1630),abs(y(1:
1630)));
title('语音信号频谱图');
%产生噪声信号并加到语音信号
t=0:
length(x)-1;
zs0=0.05*cos(2*pi*100*t/22050);
figure
(2);
subplot(2,1,1)
plot(zs0)
title('噪声信号波形');
zs1=fft(zs0,1200);
%sound(zs,FS,bits);%回放噪音
subplot(2,1,2)
plot(f(1:
600),abs(zs1(1:
600)));
title('噪声信号频谱');
x1=x+zs0';
%sound(x1,FS,bits);%回放加入噪声后的语音
y1=fft(x1,1200);
figure(3);
subplot(2,1,1);plot(x1);
title('加入噪声后的信号波形');
subplot(2,1,2);
plot(f(1:
600),abs(y1(1:
600)));
title('加入噪声后的信号频谱');
%带通滤波
fp1=600;fp2=6000;
fs1=400;fs2=7000;
Fs=22050;
Rp=1;As=10;
Wp1=fp1/(Fs/2);
Wp2=fp2/(Fs/2);
Ws1=fs1/(Fs/2);
Ws2=fs2/(Fs/2);
Wp=[Wp1,Wp2];
Ws=[Ws1,Ws2];
[N,Wn]=cheb1ord(Wp,Ws,Rp,As);
[B,A]=cheby1(N,Rp,Wn);
figure;
[h,f]=freqz(B,A,256,Fs);
plot(f,abs(h));
title('切比雪夫带通滤波器');
xlabel('频率(HZ)');ylabel('幅度(dB)');
gridon;
yd=filter(Bz,Az,x1);
figure(5);
subplot(2,1,1);plot(yd);
ydd=fft(yd,1200);
subplot(2,1,2);plot(f(1:
600),abs(ydd(1:
600)));
sound(yd,FS,bits)
图3切比雪夫带通滤波器处理噪声图
4.4kaiser窗低通滤波器的设计
技术指标:
fr=1000。
源程序如下。
仿真波形见图4。
[y,fs,bit]=wavread('1');
fr=1000;
wr=2*pi*fr;
Window=kaiser(8,beta);
b=fir1(7,fr/(fs/2),Window);
[h,w]=freqz(b,1);
subplot(221);plot(w*fs/(2*pi),abs(h));title('低通滤波');
y1=filter(b,1,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
图4凯塞窗低通滤波器仿真图
4.5kaiser窗带通滤波器的设计
指标:
fr=3000。
源程序如下。
仿真波形见图5。
[y,fs,bit]=wavread('1');
fr=3000;
wr=2*pi*fr;
Window=kaiser(8,beta);
b=fir1(7,fr/(fs/2),'high');
[h,w]=freqz(b,1);
subplot(221);plot(w*fs/(2*pi),abs(h));title('带通滤波');
y1=filter(b,1,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
图5凯塞窗带通滤波器仿真波形
4.6kaiser窗高通滤波器的设计
技术指标:
fr=1000,fp=3000。
源程序如下。
仿真波形见图6。
[y,fs,bit]=wavread('1');
fr=1000;
fp=3000
wr=2*pi*fr;
Window=kaiser(16,beta);
b=fir1(15,[fr/(fs/2),fp/(fs/2)],Window);
[h,w]=freqz(b,1);
subplot(221);plot(w*fs/(2*pi),abs(h));title('高通滤波');
y1=filter(b,1,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
图6凯塞窗高通滤波器仿真
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 数字 滤波 处理