基于MATLAB的有噪声的语音信号处理的课程设计要点.docx
- 文档编号:4794278
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:22
- 大小:226.05KB
基于MATLAB的有噪声的语音信号处理的课程设计要点.docx
《基于MATLAB的有噪声的语音信号处理的课程设计要点.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的有噪声的语音信号处理的课程设计要点.docx(22页珍藏版)》请在冰豆网上搜索。
基于MATLAB的有噪声的语音信号处理的课程设计要点
DSP实验课程设计实验报告
DSP实验课程设计实验报告
姓名:
学号:
班级:
1.课程设计题目:
基于MATLAB的有噪声的语音信号处理的课程设计。
2.课程设计的目的:
综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,再利用MATLAB做为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
3.课程设计的要求:
(1)熟悉离散信号和系统的时域特性。
(2)掌握序列快速傅里叶变换FFT方法。
(3)学会MATLAB的使用,掌握MATLAB的程序设计方法。
(4)利用MATLAB对语音信号进行频谱分析。
(5)掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法。
4.课程设计的内容:
录制一段语音信号,对语音信号进行频谱分析,利用MATLAB中的随机函数产生噪声加入到语音信号中,使语音信号被污染,然后进行频谱分析,设计FIR和IIR数字滤波器,并对噪声污染的语音信号进行滤波,分析滤波后的信号的时域和频域特征,回放语音信号。
5.课程设计的步骤:
(1)语音信号的获取
通过录音软件录制一段语音“数字信号处理”,命名为“OriSound”,时长大约1到2秒,在MATLAB中,通过使用wavread函数,对语音进行采样:
[y,fs,nbits]=wavread('OriSound');%语音信号的采集
。
nbits,采样位数为fs中,采样频率为y采样值放在向量
DSP实验课程设计实验报告
(2)语音信号的频谱分析
画出语音信号的时域波形,然后对语音信号进行频谱分析,在MATLAB中,通过使用fft函数对信号进行快速傅里叶变换,得到信号的频谱特性。
因此采集语音并绘出波形和频谱的模块程序如下:
[y,fs,nbits]=wavread('OriSound');%语音信号的采集
%语音信号的播放sound(y,fs,nbits);
计算语音信号的长度n=length(y);%快速傅里叶变换%Y=fft(y,n);
figure;
绘出时域波形%subplot(2,1,1);
plot(y);
','fontweight','bold');title('原始信号波形%通过尝试确定合适的坐标参数axis([0000080000-11]);
grid;
绘出频域频谱subplot(2,1,2);%plot(abs(Y));
','fontweight','bold');title('原始信号频谱通过尝试确定合适的坐标参数axis([015000004000]);%grid;
结果如下:
DSP实验课程设计实验报告
可以看到,语音信号的频率集中在低频部分。
(3)产生噪声信号
在MATLAB中,通过使用randn函数产生随机噪声信号,并加到语音信号中得到被污染的语音信号,回放语音信号。
产生随机噪声:
Noise=0.2*randn(n,1);
其中用0.2倍乘噪声用来适当削减噪声的作用,便于对语音信号进行处理并比较效果。
(4)污染信号频谱分析
对被污染的加噪信号进行时域和频域分析。
加噪声并分析信号波形频谱的模块程序及说明如下:
DSP实验课程设计实验报告
[y,fs,nbits]=wavread('OriSound.wav');%语音信号采集
%回放语音信号便于比较效果sound(y,fs,nbits);
%计算语音信号长度n=length(y);
%产生随机噪声信号Noise
Noise=0.2*randn(n,1);
%将Noises=y+Noise;添加到原始信号,得到污染信号s
%回放污染信号ssound(s);
figure;
%subplot(2,1,1);绘制加噪信号时域波形
plot(s);
','fontweight','bold');加噪语音信号的时域波形title('axis([0000080000-11]);
grid;
%对s进行快速傅里叶变换得到频谱S=fft(s);
%subplot(2,1,2);绘制加噪信号频域频谱
plot(abs(S));
','fontweight','bold');加噪语音信号的时域波形title('axis([015000004000]);
grid;
结果如下:
DSP实验课程设计实验报告
可以看到,随机噪声均匀的分布在整个频谱范围内。
(5)设计FIR和IIR数字滤波器
在MATLAB中,根据频谱特征设计FIR和IIR滤波器。
在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1设计IIR滤波器,利用Matlab中的函数freqz画出各步滤波器的频率响应。
低通滤波器的性能指标:
fp=1000Hz,fc=1200Hz,As=100db,Ap=1dB
高通滤波器的性能指标:
fp=3500Hz,fc=4000Hz,As=100dB,Ap=1dB;
带通滤波器的性能指标:
fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB
在MATLAB中,利用[N,wc]=butter(N,wc,Rp,As,'s')设计并计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc;[B,A]=cheby1(N,Rp,wpo,'ftypr')设计切比雪夫I型滤波器。
在课程设计中,共设计了六种滤波器对信号进行滤波:
FIR低通,高通,带通滤波器,IIR低通,高通,带通滤波器。
通过对原始信号和加噪信号的频谱进行观察,原始语音信号频谱集中在低频段,而随机噪声接近均匀的分布在整个频谱范围内,因此推测选用低通滤波器去噪性能要好于高通和带通滤波器。
(6)对污染信号进行滤波
在MATLAB中用FIR和IIR滤波器对加噪信号进行滤波,其中通过利用函数fftfilt用FIR滤波器滤波,通过利用函数filter用IIR滤波器滤波。
(7)回放语音信号
在MATLAB中,通过用sound函数对语音信号进行回放,用以比较各滤波器的滤波效果。
各滤波器设计模块的程序和说明如下:
(1)IIR低通滤波器设计
DSP实验课程设计实验报告
[y,fs,nbits]=wavread('OriSound.wav');%语音信号采集
%计算语音信号长度n=length(y);
%产生随机噪声信号Noise=0.2*randn(n,1);Noise
%将Noise添加到原始信号,得到污s=y+Noise;
染信号s
%快速傅里叶变换S=fft(s);
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
低通滤波器的阶数和截止频率%[n11,wn11]=buttord(wp,ws,1,50,'s');
[b11,a11]=butter(n11,wn11,'s');%S域频率响应的参数S%[num11,den11]=bilinear(b11,a11,0.5);利用双线性变换实现频率响应域到Z域的变换%滤波z11=filter(num11,den11,s);
%回放滤波后的信号sound(z11,fs,nbits);
m11=fft(z11);滤波后的信号频谱%
figure;
绘出滤波前的信号频谱%subplot(2,2,1);
plot(abs(S),'g');
','fontweight','bold');滤波前信号的频谱title('axis([08000004000]);
grid;
%subplot(2,2,2);绘出滤波后的信号频谱plot(abs(m11),'r');
','fontweight','bold');title('滤波后信号的频谱axis([08000004000]);
grid;
subplot(2,2,3);绘出滤波前的信号波形%plot(s);
','fontweight','bold');title('滤波前信号的波形axis([00000100000-11]);
grid;
绘出滤波后的信号波形subplot(2,2,4);%plot(z11);
','fontweight','bold');滤波后的信号波形title('axis([00000100000-11]);
grid;
结果如下:
DSP实验课程设计实验报告
可以看出,滤波后将非低频部分的噪声频率滤掉,但还有一些高于原始语音信号的频率没有被去除。
(2)IIR高通滤波器设计
[y,fs,nbits]=wavread('OriSound');%语音信号采集
%计算语音信号的长度n=length(y);
%Noise=0.2*randn(n,1);产生随机噪声
%语音信号加入噪声得到加噪信号s=y+Noise;
%快速傅里叶变换S=fft(s);
Fp1=1200;
Fs1=1000;
Ft=8000;
wp1=tan(pi*Fp1/Ft);
ws1=tan(pi*Fs1/Ft);
wp=1;
ws=wp1*wp/ws1;
模拟的低通滤波器阶数和截止频率%[n13,wn13]=cheb1ord(wp,ws,1,50,'s');
DSP实验课程设计实验报告
[b13,a13]=cheby1(n13,1,wn13,'s');%S域的频率响应的参数
[num,den]=lp2hp(b13,a13,wn13);%S域低通参数转为高通的
[num13,den13]=bilinear(num,den,0.5);%利用双线性变换实现频率响应S域到Z域转换
z13=filter(num13,den13,s);%滤波
sound(z13,fs,nbits);%回放滤波后的信号
m13=fft(z13);%滤波后的信号频谱
figure;
subplot(2,2,1);%绘出滤波前的信号频谱
plot(abs(S),'g');
title('滤波前信号的频谱','fontweight','bold');
axis([08000004000]);
grid;
subplot(2,2,2);%绘出滤波后的信号频谱
plot(abs(m13),'r');
title('滤波后信号的频谱','fontweight','bold');
axis([08000004000]);
grid;
subplot(2,2,3);%绘出滤波前的信号波形
plot(s);
title('滤波前信号的波形','fontweight','bold');
axis([00000100000-11]);
grid;
subplot(2,2,4);%绘出滤波后的信号波形
plot(z13);
title('滤波后的信号波形','fontweight','bold');
axis([00000100000-11]);
grid;
结果如下:
DSP实验课程设计实验报告
可以看出,滤波后将原始信号绝大部分频谱滤掉,剩下噪声信号,不能采用。
(3)IIR带通滤波器设计
[y,fs,nbits]=wavread('OriSound');%语音信号采集
%计算语音信号的长度n=length(y);
%Noise=0.2*randn(n,1);产生随机噪声
%语音信号加噪s=y+Noise;
%S=fft(s);快速傅里叶变换
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*Fp/Ft;
ws=2*Fs/Ft;
rp=1;
rs=50;
p=1-10.^(-rp/20);通带阻带波纹%
q=10.^(-rs/20);
fpts=[wpws];
DSP实验课程设计实验报告
mag=[10];
dev=[pq];
[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);%由kaiserord求滤波器的阶数和截止频率
b21=fir1(n21,wn21,kaiser(n21+1,beta));设计滤波器%滤波%z21=fftfilt(b21,s);
sound(z21,fs,nbits);回放滤波后的信号%%滤波后的信号频谱m21=fft(z21);
figure(4);
绘出滤波前的信号频谱%subplot(2,2,1);
plot(abs(S),'g');
','fontweight','bold');滤波前信号的频谱title('4000]);axis([0800000
grid;
绘出滤波后的信号频谱%subplot(2,2,2);
plot(abs(m21),'r');
','fontweight','bold');滤波后信号的频谱title('4000]);axis([0800000
grid;
绘出滤波前的信号波形%subplot(2,2,3);
plot(s);
','fontweight','bold');滤波前信号的波形title('axis([00000100000-11]);
grid;
绘出滤波后的信号波形%subplot(2,2,4);
plot(z21);
','fontweight','bold');title('滤波后的信号波形axis([00000100000-11]);
grid;
结果如下:
DSP实验课程设计实验报告
可以看出,大部分噪声被去除,与低通IIR滤波器的效果差不多,稍好于低通。
(4)FIR低通滤波器
[y,fs,nbits]=wavread('OriSound');%语音信号采集
%计算语音信号的长度n=length(y);
%产生随机噪声Noise=0.2*randn(n,1);
%语音信号加噪s=y+Noise;
%S=fft(s);快速傅里叶变换
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*Fp/Ft;
ws=2*Fs/Ft;
rp=1;
rs=50;
p=1-10.^(-rp/20);通带阻带波纹%
q=10.^(-rs/20);
fpts=[wpws];
DSP实验课程设计实验报告
mag=[10];
dev=[pq];
[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);%由kaiserord求滤波器的阶数和截止频率
fir1设计滤波器%由b21=fir1(n21,wn21,kaiser(n21+1,beta));
滤波%z21=fftfilt(b21,s);
回放滤波后的信号sound(z21,fs,nbits);%%滤波后的信号频谱m21=fft(z21);
figure(4);
%绘出滤波前的信号频谱subplot(2,2,1);
plot(abs(S),'g');
title('滤波前信号的频谱','fontweight','bold');
4000]);axis([0800000
grid;
绘出滤波后的信号频谱%subplot(2,2,2);
plot(abs(m21),'r');
','fontweight','bold');title('滤波后信号的频谱4000]);axis([0800000
grid;
绘出滤波前的信号波形%subplot(2,2,3);
plot(s);
','fontweight','bold');滤波前信号的波形title('axis([00000100000-11]);
grid;
绘出滤波后的信号波形subplot(2,2,4);%plot(z21);
','fontweight','bold');滤波后的信号波形title('axis([00000100000-11]);
grid;
结果如下:
DSP实验课程设计实验报告
可以看出:
大部分的噪声频率被滤除,几乎完整的保留了原始信号的频谱,滤波效果最好,但是由于在低频部分仍然有随机信号的干扰,所以回放信号较原始信号音质稍差。
(5)FIR高通滤波器
[y,fs,nbits]=wavread('OriSound');%语音信号采集
%计算语音信号的长度n=length(y);
%Noise=0.2*randn(n,1);产生随机噪声
%s=y+Noise;语音信号加噪
%S=fft(s);快速傅里叶变换
Ft=8000;
Fp=4000;
Fs=3500;
wp=2*Fp/Ft;
ws=2*Fs/Ft;
rp=1;
rs=50;
通带阻带波纹%p=1-10.^(-rp/20);
DSP实验课程设计实验报告
q=10.^(-rs/20);
fpts=[wswp];
mag=[01];
dev=[pq];
[n23,wn23,beta,ftype]=kaiserord(fpts,mag,dev);
b23=fir1(n23,wn23,'high',kaiser(n23+1,beta));%由fir1设计滤波器
z23=fftfilt(b23,s);%滤波
%回放滤波后的信号sound(z23,fs,nbits);
%滤波后的信号频谱m23=fft(z23);
figure;
%subplot(2,2,1);绘出滤波前的信号频谱
plot(abs(S),'g');
','fontweight','bold');滤波前信号的频谱title('4000]);axis([0800000
grid;
绘出滤波后的信号频谱%subplot(2,2,2);
plot(abs(m23),'r');
','fontweight','bold');title('滤波后信号的频谱4000]);axis([0800000
grid;
subplot(2,2,3);绘出滤波前的信号波形%plot(s);
','fontweight','bold');title('滤波前信号的波形axis([00000100000-11]);
grid;
subplot(2,2,4);绘出滤波后的信号波形%
plot(z23);
','fontweight','bold');title('滤波后的信号波形axis([00000100000-11]);
grid;
结果如下:
DSP实验课程设计实验报告
可以看到,滤波后只剩部分高频噪声频率,原始语音信号频率被滤除,因此无法恢复语音信号。
(6)FIR带通滤波器
[y,fs,nbits]=wavread('OriSound');%语音信号采集
%计算语音信号的长度n=length(y);
%Noise=0.2*randn(n,1);产生随机噪声
%s=y+Noise;语音信号加噪
%S=fft(s);快速傅里叶变换
Fp1=1200;
Fp2=3000;
Fs1=1000;
Fs2=3200;
Ft=2200;
wp1=tan(pi*Fp1/Ft);带通到低通滤波器参数转换%
wp2=tan(pi*Fp2/Ft);
ws1=tan(pi*Fs1/Ft);
ws2=tan(pi*Fs2/Ft);
DSP实验课程设计实验报告
w=wp1*wp2/ws2;
bw=wp2-wp1;
wp=1;
ws=(wp*wp2-w.^2)/(bw*w);
[n22,wn22]=buttord(wp,ws,1,50,'s');%低通滤波器阶数和截止频率
%S域的频率响应的参数[b22,a22]=butter(n22,wn22,'s');
%滤波z22=fftfilt(b22,s);
%回放滤波后的信号sound(z22,fs,nbits);
%m22=fft(z22);滤波后的信号频谱
figure;
%绘出滤波前的信号频谱subplot(2,2,1);
plot(abs(S),'g');
','fontweight','bold');滤波前信号的频谱title('4000]);axis([0800000
grid;
%subplot(2,2,2);绘出滤波后的信号频谱
plot(abs(m22),'r');
','fontweight','bold');title('滤波后信号的频谱4000]);axis([0800000
grid;
%绘出滤波前的信号波形subplot(2,2,3);
plot(s);
','fontweight','bold');title('滤波前信号的波形axis([00000100000-11]);
grid;
绘出滤波后的信号波形%subplot(2,2,4);
plot(z22);
','fontweight','bold');滤波后的信号波形title('axis([00000100000-11]);
grid;
结果如下:
DSP实验课程设计实验报告
可以看到,滤波器将部分低频滤去,也就滤掉了部分原始信号频率,因此无法正常恢复语音信号。
(8)设计GUI界面
创建一个GUI界面,可以方便的管理各个模块。
首先通过File-->New-->GUI创建一个GUI界面,然后对界面进行设计,最后对各个空间编写回调函数。
效果如下:
DSP实验课程设计实验报告
其中,“原始语音频谱分析”可以对原始语音信号进行波形和频谱的显示,“加噪后频谱分析”可以对加噪后语音信号进行波形和频谱的显示,“滤波器对加噪语音信号进行滤波模块”中的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 噪声 语音 信号 处理 课程设计 要点