数字信号处理在语音信号分析中的应用.docx
- 文档编号:29246646
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:16
- 大小:411.13KB
数字信号处理在语音信号分析中的应用.docx
《数字信号处理在语音信号分析中的应用.docx》由会员分享,可在线阅读,更多相关《数字信号处理在语音信号分析中的应用.docx(16页珍藏版)》请在冰豆网上搜索。
数字信号处理在语音信号分析中的应用
《数字信号处理》
课程设计报告
数字信号处理在语音信号分析中的应用
专业班级:
姓名:
学号:
数字信号处理设计任务书
摘要
语音信号滤波处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前
发展最为迅速的信息科学研究领域的核心技术之一。
通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。
信号处理是Matlab重要应用的领域之一。
本设计通过录制一段语音,对其进行了时域分析,频谱分析,分析语音信号的特性。
并应用matlab平台对语音信号进行加噪然后再除去噪声,进一步设计两种种滤波器即高通滤波器、带通滤波器,基于这两种滤波器设计原理,对含加噪的语音信号进行滤波处理。
最后对比滤波前后的语音信号的时域和频域特性,回放含噪语音信号和去噪语音信号。
论文从理论和实践上比较了不同数字滤波器的滤波效果。
1.绪论
通过语音传递倍息是人类最重要、最有效、最常用和最方便的交换信息的形式。
语言是人类持有的功能,声音是人类常用的工具,是相互传递信息的最主要的手段。
因此,语音信号是人们构成思想疏通和感情交流的最主要的途径。
并且,由于语言和语音与人的智力活动密切相关,与社会文化和进步紧密相连,所以它具有最大的信息容量和最高的智能水平。
现在,人类已开始进入了信息化时代,用现代手段研究语音信号,使人们能更加有效地产生、传输、存储、获取和应用语音信息,这对于促进社会的发展具有十分重要的意义。
让计算机能听懂人类的语言,是人类自计算机诞生以来梦寐以求的想法。
随着计算机越来越向便携化方向发展,随着计算环境的日趋复杂化,人们越来越迫切要求摆脱键盘的束缚而代之以语音输人这样便于使用的、自然的、人性化的输人方式。
作为高科鼓应用领域的研究热点,语音信号采集与分析从理论的研究到产品的开发已经走过了几十个春秋并且取得了长足的进步。
它正在直接与办公、交通、金融、公安、商业、旅游等行业的语音咨询与管理.工业生产部门的语声控制,电话、电信系统的自动拨号、辅助控制与查询以及医疗卫生和福利事业的生活支援系统等各种实际应用领域相接轨,并且有望成为下一代操作系统和应用程序的用户界面。
可见,语音信号采集与分析的研究将是一项极具市场价值和挑战性的工作。
我们今天进行这一领域的研究与开拓就是要让语音信号处理技术走人人们的日常生活当中,并不断朝更高目标而努力。
数字滤波器是数字信号处理的基础,用来对信号进行过滤、检测和参数估计等处理。
IIR数字滤波器最大的优点是给定一组指标时,它的阶数要比相同组的FIR滤波器的低的多。
信号处理中和频谱分析最为密切的理论基础是傅立叶变换(FT)。
离散傅立叶变换(DFT)和数字滤波是数字信号处理的最基本内容通过数字信号处理的课程设计,使学生对信号的采集,处理,传输,显示,存储和分析等有一个系统的掌握和理解。
巩固和运用数字信号处理课程中的理论知识和实验技能,掌握最基本的数字信号处理的理论和方法,培养学生发现问题,分析问题和解决问题的能力。
2、课程设计的具体内容
用MATLAB对语音信号进行分析与处理,采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。
对一段语音信号进行采样;画出采样后语音信号的时域波形和频谱图;用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。
设计内容:
采样一段语音信号;画出语音信号的时域波形和频谱图;给定滤波器的性能指标,设计数字滤波器,并画出滤波器的频率响应;然后用设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱。
关键技术:
频谱图的理解;设计数字滤波器;数字滤波的方法;
解决思路:
对语音号进行快速傅里叶变换,得到信号的频谱特性;在MATLAB环境中可以利用函数fir设计FIR滤波器,可以利用函数butter设计IIR滤波器;利用MATLAB中的函数freqz画出各滤波器的频率响应。
2.1.1、读取语音信号的任务
自制一段语音信号(要求:
我叫***,学号****,是东莞理工学院电子信息工程学院2012级电子卓越班的学生)。
2.1.2、任务分析和解决方案
在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
通过wavread函数的使用,要求理解掌握采样频率、采样位数等概念。
2.1.3、编程得到的MATLAB代码
[z1,Fs]=audioread('F:
\cjl\chenjunlin.wma');
sound(z1,Fs);%播放语音信号 figure
(1) plot(z1);
figure
(1);
plot(z1);
title('时域图');
xlabel('时间(n)');
ylabel('幅值(n)');
频域程序:
[z2,Fs]=audioread('F:
\cjl\chenjunlin.wma');
y1=fft(z2);
y1=fftshift(y1);
sound(z2,Fs);%播放语音信号
figure
(2);
derta_Fs=Fs/length(z2);
plot([-Fs/2:
derta_Fs:
Fs/2-derta_Fs],abs(y1));
title('频谱图');
xlabel('时间(n)');
ylabel('幅值(n)');
2.1.4、运行结果和相应的分析
由图可知人的声音分布在低频。
而声音比较底和深沉。
2.2、IIR滤波器设计和滤波处理
2.2.1、设计任务
要求用自己设计的各种滤波器(高通、低通)分别对采集的信号进行滤波。
2.2.2、任务分析和解决方案
在MATLAB中,利用函数filter对信号进行滤波。
利用MATLAB中的函数freqz画出各滤波器的频率响应。
2.2.3、编程得到的MATLAB代码
IIR数字低通滤波器
fs=22050;
[z3,Fs]=audioread('F:
\cjl\chenjunlin.wma');
Ts=1/fs;R1=10;
wp=2*pi*1000/fs;%通带截止频率?
ws=2*pi*1200/fs;%阻带截止频率
Rp=1;%通带衰减?
Rl=100;%阻带衰减?
wp1=2/Ts*tan(wp/2);%将模拟指标转换成数字指标?
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,R1,'s');%选择滤波器的最小阶数
[Z,P,K]=buttap(N);%创建butterworth模拟低通滤波器?
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);%将模拟原型低通滤波器转换为低通滤波器
[bz,az]=bilinear(b,a,fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换?
[H,W]=freqz(bz,az);%绘制频率响应曲线?
figure
(1)
plot(W*fs/(2*pi),abs(H))
grid
xlabel('频率/Hz')
ylabel('频率响应幅度')
title('IIR低通滤波器')
f1=filter(bz,az,z3);
figure
(2)
subplot(2,1,1)
plot(z3)%画出滤波前的时域图?
title('IIR低通滤波器滤波前的时域波形');
subplot(2,1,2)
plot(f1);%画出滤波后的时域图?
title('IIR低通滤波器滤波后的时域波形');
sound(f1,44100);%播放滤波后的信号?
F0=fft(f1);
f=fs*(0:
511)/1024;
figure(3)
y2=fft(z3);
subplot(2,1,1);
derta_Fs=Fs/length(z3);
plot([-Fs/2:
derta_Fs:
Fs/2-derta_Fs],abs(y2));%画出滤波前的频谱图?
title('IIR低通滤波器滤波前的频谱')
xlabel('频率/Hz');
ylabel('幅值');
subplot(2,1,2)
derta_Fs=Fs/length(z2);
plot([-Fs/2:
derta_Fs:
Fs/2-derta_Fs],abs(F0));%画出滤波后的频谱图?
title('IIR低通滤波器滤波后的频谱')
xlabel('频率/Hz');
ylabel('幅值');
IIR数字高通滤波器
fc1=4000;
[z2,Fs]=audioread('F:
\cjl\chenjunlin.wma');
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);
x1_high=filter(b2,1,x1);%对信号进行高通滤波
figure
(1);
plot(x1_high);
title('信号经过高通滤波器(时域)');
figure
(2);
derta_fs=fs/length(z2);
plot([-fs/2:
derta_fs:
fs/2-derta_fs],abs(fftshift(fft(x1_high))));
title('信号经过高通滤波器(频域)')
2.2.4、运行结果和相应的分析
语音高频成分音质非常尖锐,齿音中,声音有些暗淡。
语音低频成分音质沉稳,空间感觉强,语音浑厚。
IIR的设计理念是这样的:
根据所要设计滤波器的参数去确定一个模拟滤波器的传输函数,然后再根据这个传输函数,通过双线性变换、或脉冲响应不变法来进行数字滤波器的设计。
它的设计比较复杂,复杂在于它的模拟滤波器传输函数H(s)的确定。
这一点我们可以让软件来实现。
然后,我们说一下它的具体实现步骤:
首先你要先确定你需要一个什么样的滤波器,巴特沃斯型,切比雪夫型,还是其它什么型的滤波器。
当你选定一个型号后,你就可以根据设计参数和这个滤波器的计算公式来确定其阶数、传输函数的表达式。
通常这个过程中还存在预扭曲的问题。
IIR数字低通滤波器波形
IIR数字高通滤波器波形
2.3、FIR滤波器设计和滤波处理
2.3.1、设计任务
要求用自己设计的各种滤波器(高通、低通)分别对采集的信号进行滤波
2.3.2、任务分析和解决方案
在MATLAB中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
利用MATLAB中的函数freqz画出各滤波器的频率响应。
2.3.3、编程得到的MATLAB代码
FIR低通滤波器
fs=10000;
[x1,Fs]=audioread('F:
\cjl\chenjunlin.wma');
wp=2*pi*1000/fs;
ws=2*pi*1200/fs;
sound(x1,Fs);
Rp=1;
Rs=100;
wdelta=ws-wp;
N=ceil(8*pi/wdelta);%取整
wn=(wp+ws)/2;
[b,a]=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率
figure
(1)
freqz(b,a,512);
title('FIR低通滤波器');
f2=filter(b,a,x1);
figure
(2)
subplot(2,1,1)
plot(x1)
title('FIR低通滤波器滤波前的时域波形');
subplot(2,1,2)
plot(f2);
title('FIR低通滤波器滤波后的时域波形');
sound(f2,44100);%播放滤波后的语音信号
F0=fft(f2);
f=fs*(0:
511)/1024;
figure(3)
y2=fft(x1);
subplot(2,1,1);
derta_Fs=Fs/length(x1);
plot([-Fs/2:
derta_Fs:
Fs/2-derta_Fs],abs(y2));
title('FIR低通滤波器滤波前的频谱')
xlabel('频率/Hz');
ylabel('幅值');
subplot(2,1,2)
derta_Fs=Fs/length(x1);
plot([-Fs/2:
derta_Fs:
Fs/2-derta_Fs],abs(F0));
title('FIR低通滤波器滤波后的频谱')
xlabel('频率/Hz');
ylabel('幅值');
FIR高通滤波器
[y,Fs]=audioread('F:
\cjl\chenjunlin.wma');
sound(y,Fs);%播放语音信号
y_after_fir=filter(b,1,y);
figure;
plot(y_after_fir);
sound(y_after_fir,44100);%播放滤波后的语音信号?
title('滤波后信号时域');
xlabel('t/s');
ylabel('幅度');
fft_y1=fftshift(fft(y_after_fir));
figure;
derta_Fs=Fs/length(y);
plot([-Fs/2:
derta_Fs:
Fs/2-derta_Fs],abs(fftshift(fft(y_after_fir))));
title('滤波后信号频谱');
xlabel('f/Hz');
ylabel('幅度');
FIR低通滤波器波形
FIR高通滤波器波形
2.3.4、运行结果和相应的分析
FIR滤波的效果不如IIR因为其滤波后还能听到很多噪声。
FIR:
有限脉冲响应滤波器。
有限说明其脉冲响应是有限的。
与IIR相比,它具有线性相位、容易设计的优点。
这也就说明,IIR滤波器具有相位不线性,不容易设计的缺点。
而另一方面,IIR却拥有FIR所不具有的缺点,那就是设计同样参数的滤波器,FIR比IIR需要更多的参数。
这也就说明,要增加DSP的计算量。
DSP需要更多的计算时间,对DSP的实时性有影响。
以下都是低通滤波器的设计。
FIR滤波器的设计比较简单,就是要设计一个数字滤波器去逼近一个理想的低通滤波器。
通常这个理想的低通滤波器在频域上是一个矩形窗。
根据傅里叶变换我们可以知道,此函数在时域上是一个采样函数。
通常此函数的表达式为:
sa(n)=sin(n∩)/n∏,但是这个采样序列是无限的,计算机是无法对它进行计算的。
故我们需要对此采样函数进行截断处理。
也就是加一个窗函数。
就是传说中的加窗。
也就是把这个时域采样序列去乘一个窗函数,就把这个无限的时域采样序列截成了有限个序列值。
但是加窗后对此采样序列的频域也产生了影响:
此时的频域便不在是一个理想的矩形窗,而是成了一个有过渡带,阻带有波动的低通滤波器。
3、实验总结
从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可低的阶数获得高的选择性,所用的存贮单元少,所以经济而效率高。
但是这个高效率是以相位的非线性为代价的。
选择性越好,则相位非线性越严重。
相反,FIR滤波器却可以得到严格的线性相位,然而由于FIR滤波器传输函数的极点固定在原点所以只能用较高的阶数达到高的选择性。
4、存在的不足及建议
IIR的高通滤波器滤波的效果明显比FIR的好这也是由于滤波器本身的性质决定的,声音经过FIR高通滤波器后我们还能明显可以听到有用的声音和噪声。
所以人的声音不适合用FIR滤波器进行滤波。
5、参考文献
高西全,丁玉美.数字信号处理.西安:
西安电子科技大学出版社。
黄文梅,熊桂林,杨勇.信号分析与处理——Matlab语言及其应用.长沙:
国防科技大学出版社。
余成波.数字信号处理及Matlab实现.北京:
清华大学出版社。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 语音 信号 分析 中的 应用