温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
基于
matlab
语音
信号
滤波
处理
数字信号
课程设计
数字信号处理课程设计
题目: 基于matlab的语音信号滤波处理
学院: 物理与电子信息学院
专业: 电子信息工程
班级:
学号:
姓名:
指导教师:
:
语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前开展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息手段,所以对其的研究更显得尤为重要。
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。这为我们的本次设计提供了强大并良好的环境!
本设计要求自己录制一段自己的语音后,在MATLAB软件中采集语音信号、回放语音信号并画出语音信号的时域波形和频谱图。再在Matlab中分别设计不同形式的FIR数字滤波器。之后对采集的语音信号经过不同的滤波器〔低通、高通、带通〕后,观察不同的波形,并进行时域和频谱的分析。比照处理前后的时域图和频谱图,分析各种滤波器对于语音信号的影响。最后分别收听进行滤波后的语音信号效果,做到了解在怎么样的情况下该用怎么样的滤波器。
目录
1.设计内容……………………………………………………………4
2.设计原理……………………………………………………………4
2.1语音信号的时域分析…………………………………………4
2.2语音信号的频域分析…………………………………………5
3.设计过程……………………………………………………………5
3.1实验程序源代码………………………………………………6
3.1.1原语音信号时域、频域图………………………………6
3.1.2低通滤波器的设计………………………………………6
3.1.3高通滤波器的设计………………………………………7
3.1.4带通滤波器的设计………………………………………8
3.1.5语音信号的回放………………………………………9
3.2调试结果描述…………………………………………………10
3.3所遇问题及结果分析…………………………………………15
3.3.1所遇主要问题…………………………………………16
3.3.2结果分析………………………………………………16
4.体会与收获…………………………………………………………17
5.参考文献……………………………………………………………17
1.设计内容:
1.首先录制好一段自己的语音。
2.用Matlab分别设计好3种类型的滤波器〔指标自己确定〕:低通型、高通型、带通型。
3.用Matlab将语音信号进行采样,并分别将其通过所设计的3种滤波器。
4.用Matlab自带的语音返回函数收听滤波后的语音信号,分析并比拟其与原语音信号的差异。
2.设计原理:
语音信号时一种非平稳的时变信号,它带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在于方便有效的提取并表示语音信号所携带的信息。语音信号处理可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,崎岖的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。
2.1语音信号的时域分析
信号提取:通过图形用户界面上的菜单功能按键采集上的一段音频信号,完成音频信号的频率,幅度等信息的提取,并得到该语音信号的波形图。
信号调整:在设计的用户图形界面下对输入的音频信号进行各种变化,如变化幅度、改变频率等操作,以实现对语音信号的调整。
2.2语音信号的频域分析
信号的傅里叶表示在信号的分析和处理中起着重要的作用。因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅里叶分析方法能完善地解决许多信号分析和处理问题。另外,傅里叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项红物理现象。
由于语音信号时随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源鼓励的线性系统的输出。输出频谱是声道系统频率响应与鼓励源频谱的乘积。身份到系统的频率响应及鼓励源都是随时间变化的,因此一般标准的傅里叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。
1.信号变换:在用户图形界面西啊对采集的语音信号进行Fourier等变换,并画出变换前后的频谱图和倒谱图。
2.信号滤波:滤除语音信号中的噪音局部,可以采用抵用滤波、高通滤波、带通滤波,并比拟各种滤波后的效果。
3.设计过程:
3.1实验程序源代码〔原语音信号存放在e:\下〕:
3.1.1.原语音信号的时域、频域图
[x1,fs,bits]=wavread('e:\txwz.wav');
%sound(x1,fs,bits);
figure(1);
plot(x1);%做原始语音信号的时域图形
title('原始语音信号');
xlabel('时间 t');
ylabel('音量 n');
figure(2);
y1=fft(x1);%做length(x1)点的FFT
y1=fftshift(y1); %平移,是频率中心为0
derta_fs = fs/length(x1); %设置频谱的间隔,分辨率
plot([-fs/2:derta_fs: fs/2-derta_fs],abs(y1));%画出原始语音信号的频谱图
title('原始语音信号的频谱');
grid on;
3.1.2低通滤波器的设计
%低通滤波:截止频率4000,阻带衰减20dB,过渡带宽0.1π
fc1=4000;
N1=2xpix0.9/(0.1xpi)
wc1=2xpixfc1/fs;
if rem(N1,2)==0
N1=N1+1;
end
Window= boxcar (N1+1); %长度为N1的矩形窗Window
b1=fir1(N1,wc1/pi,Window);
figure(3);
freqz(b1,1,512);
title('低通滤波器的频率响应');
x1_low = filter(b1,1,x1);%对信号进行低通滤波
figure(4);
plot(x1_low);
title('信号经过低通滤波器(时域)');
figure(5);
plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_low))));
title('信号经过低通滤波器〔频域〕');
3.1.3高通滤波器的设计
%高通滤波:截止频率4000,阻带衰减40dB,过渡带宽0.1π
fc2=4000;
N2=2xpix3.1/(0.1xpi)
wc2=2xpixfc1/fs;
N2=N2+mod(N2,2);
Window=hanning(N2+1);
b2=fir1(N2,wc2/pi,'high',Window);
figure(6);
freqz(b2,1,512);%数字滤波器频率响应
title('高通滤波器的频率响应');
x1_high = filter(b2,1,x1);%对信号进行高通滤波
figure(7);
plot(x1_high);
title('信号经过高通滤波器(时域)');
figure(8);
plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_high))));
title('信号经过高通滤波器〔频域〕')
3.1.4带通滤波器的设计
%带通滤波:下截止频率4000,上截止频率8000,阻带衰减20dB,过渡带宽度0.1π
f1=4000;f2=8000; %带通滤波器的通带范围
w1=2xpixf1/fs;
w3=w1+0.1xpi;
w2=2xpixf2/fs;
w4=w2-0.1xpi;
w=[(w1+w3)/2,(w2+w4)/2];
B=0.1xpi;
N3=ceil(2x0.9xpi/B);
N3=N3+mod(N3,2);
Window=boxcar(N3+1);
b3=fir1(N3,w/pi,'stop',Window);%带通滤波器
figure(9);
freqz(b3,1,512);%数字滤波器频率响应
title('带通滤波器的频率响应');
x1_daitong = filter(b3,1,x1);%对信号进行带通滤波
figure(10);
plot(x1_daitong);
title('信号经过带通滤波器(时域)');
figure(11);
plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_daitong))));
title('信号经过带通滤波器〔频域〕');
3.1.5语音信号的回放〔分别执行〕
sound(x1,fs,bits);%原始信号
sound(x1_low,fs,bits);%经过低通滤
sound(x1_high,fs,bits); %经过高通滤波
sound(x1_daitong,fs,bits);%经过带通滤波
3.2调试结果描述
原始语音信号的时域图形:
原始语音信号频谱:
低通滤波器的频率响应:
信号经过低通滤波后的时域波形:
信号经过低通滤波后的频域波形
高通滤波器的频率响应:
信号经过高通滤波后的时域波形:
信号经过高通滤波后的频域波形:
带通滤波器的频率响应:
信号经过带通滤波后的时域波形:
信号经过带通滤波后的频域波形:
3.3所遇问题及结果分析
3.3.1所遇主要问题
1.在高通与带通滤波器的设计时老是报错,但同样的用法在低通滤波器中就可以实现
b2=fir1(N2,wc2/pi,'high',Window);
Error using ==> fir1
The window length must be the same as the filter length.
其要求在fir函数中所选用的窗长要和滤波器长度一致。但在参考书上指出,滤波器阶数必须为窗长加1。经上网查询后,原来高通、带阻滤波器的阶数应该控制为奇数,因为如果阶数为偶数,那么在π点必有一零点,这对于高通带阻来说是不允许的,故取阶数为奇数,而你FIR1滤波器阶数为M+1阶,所以你的M必须为偶数,所以可以将程序中去窗长算法由原程序的:
N2=2xpix0.9/(0.1xpi);
if rem(N2,2)==0
N2=N2+1;
End
和:
N3=2xpix0.9/(0.1xpi);
if rem(N3,2)==0
N3=N3+1;
End
改为了:
N2=N2+mod(N2,2);
和:
B=0.1xpi;〔B为过渡带宽〕
N3=ceil(2x0.9xpi/B);
N3=N3+mod(N3,2);
2.在设计高通滤波器时先是使用的矩形窗,用矩形窗验证出来的结果中低频语音分量依旧很强,不能将其全部抑制在0,之后换窗,选着了最小衰减可以到达53dB的海明窗,再次试验,非常成功!
3.3.2结果分析
经过回放三个不同类型滤波器输出的语音信号,并与原语音信号比照得到了如下结论。
语音高频成分音质非常锋利,齿音中,声音有些暗