#基于matlab的语音信号滤波处理数字信号处理课程设计.docx

上传人:b****8 文档编号:23866569 上传时间:2023-05-21 格式:DOCX 页数:14 大小:229.41KB
下载 相关 举报
#基于matlab的语音信号滤波处理数字信号处理课程设计.docx_第1页
第1页 / 共14页
#基于matlab的语音信号滤波处理数字信号处理课程设计.docx_第2页
第2页 / 共14页
#基于matlab的语音信号滤波处理数字信号处理课程设计.docx_第3页
第3页 / 共14页
#基于matlab的语音信号滤波处理数字信号处理课程设计.docx_第4页
第4页 / 共14页
#基于matlab的语音信号滤波处理数字信号处理课程设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

#基于matlab的语音信号滤波处理数字信号处理课程设计.docx

《#基于matlab的语音信号滤波处理数字信号处理课程设计.docx》由会员分享,可在线阅读,更多相关《#基于matlab的语音信号滤波处理数字信号处理课程设计.docx(14页珍藏版)》请在冰豆网上搜索。

#基于matlab的语音信号滤波处理数字信号处理课程设计.docx

#基于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('原始语音信号的频谱');

gridon;

3.1.2低通滤波器的设计

%低通滤波:

截止频率4000,阻带衰减20dB,过渡带宽0.1π

fc1=4000;

N1=2*pi*0.9/(0.1*pi)

wc1=2*pi*fc1/fs;

ifrem(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=2*pi*3.1/(0.1*pi)

wc2=2*pi*fc1/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=2*pi*f1/fs;

w3=w1+0.1*pi;

w2=2*pi*f2/fs;

w4=w2-0.1*pi;

w=[(w1+w3)/2,(w2+w4)/2];

B=0.1*pi;

N3=ceil(2*0.9*pi/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);

?

?

?

Errorusing==>fir1

Thewindowlengthmustbethesameasthefilterlength.

其要求在fir函数中所选用的窗长要和滤波器长度一致。

但在参考书上指出,滤波器阶数必须为窗长加1。

经上网查询后,原来高通、带阻滤波器的阶数应该控制为奇数,因为如果阶数为偶数,则在π点必有一零点,这对于高通带阻来说是不允许的,故取阶数为奇数,而你FIR1滤波器阶数为M+1阶,所以你的M必须为偶数,所以可以将程序中去窗长算法由原程序的:

N2=2*pi*0.9/(0.1*pi);

ifrem(N2,2)==0

N2=N2+1;

End

和:

N3=2*pi*0.9/(0.1*pi);

ifrem(N3,2)==0

N3=N3+1;

End

改为了:

N2=N2+mod(N2,2);

和:

B=0.1*pi;(B为过渡带宽)

N3=ceil(2*0.9*pi/B);

N3=N3+mod(N3,2);

2.在设计高通滤波器时先是使用的矩形窗,用矩形窗验证出来的结果中低频语音分量依旧很强,不能将其全部抑制在0,之后换窗,选着了最小衰减可以到达53dB的海明窗,再次试验,非常成功!

3.3.2结果分析

经过回放三个不同类型滤波器输出的语音信号,并和原语音信号对比得到了如下结论。

语音高频成分音质非常尖锐,齿音中,声音有些暗淡。

语音低频成分音质沉稳,空间感觉强,语音浑厚。

语音中频成分音质有力度,有通透感。

4.体会和收获

以往都是通过课本来感性的认知语音信号,通过本次的课程设计,让我对语音信号有了一个较为实际的认识。

于此同时,让我再次把数字信号处理及数字滤波器的设计方法重新进行了复习和学习。

而对于Matlab,也再次让我感受到了其功能的强大。

最为重要的是,本次课程设计让我重新审视了学习的过程:

只去做实验是不行的,首先还是要思考,遇到了问题查书籍,XX搜索也只是一种手段,更加重要的是想,再理解,只有这样才能真正的做好实验。

5.参考文献

《数字信号处理》钱同惠、XX文库

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1