基于matlab的语音信号滤波处理

数字信号处理设计报告

设计课题 : 基于matlab的语音信号滤波处理
姓 名: **
学 号: ***********
专 业: ******
指导老师: ***

****年

摘 要

Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。随着我国科的技学技术水平的进一步提高,诸多领域都应用到了数字信号,通过对MATLAB的应用,能提高对数字信号处理的质量和效率,这也是对现代数字电子技术发展基础。
该论文是基于matlab对语音信号滤波处理来进行的一系列的研究,通过计算机的录音对所录的信号进行处理,采集,绘制波形图等,让我们能更加深入的了解到信号的实质及数字信号处理中的一些基本知识。

关键词: MATLAB处理信号;分析波形图;设计滤波器

目 录

第一章 引言 4
1.1问题及意义 4
1.2设计任务及要求 4
1.3设计思路 4
1.4设计过程 5
第二章 设计原理 6
2.1基本理论知识 6
2.2采用定理、频谱的参数分析 6
2.3滤波器性能指标及分析 7
第三章 设计过程 8
3.1流程图及程序等 8
3.2调试过程中的问题 14
3.3结果分析 15
结 论 17
致 谢 18

第一章 引言
1.1问题及意义
问题:对MATLAB的熟练度底,数字信号的理论知识掌握的不全,MATLAB中所用到的代码未完全了解,并且对设计出的作品不能完全熟练运用,对作品的结果没有准确的认知,不知道是否达到真实的情况。
意义:课程设计的意义在于解决存在的问题,最好达到可以很好的利用MATLAB这个工具来更好的学习数字信号处理的相关知识,达到对数字信号所学内容的有更深刻的掌握。
1.2设计任务及要求

  1. 语音信号的采集
  2. 语音信号的时域和频谱分析
  3. 设计滤波器对原始语音信号进行滤波
  4. 设计滤波器对加噪后语音信号进行滤波
  5. 回放语音信号
  6. 扩展:GUI编程、短时傅里叶变换……
    1.3设计思路
    1.了解设计的要求,并根据设计的要求选择相应类型和参数的滤波器和相应的窗函数。
    2.根据所需要的参数,找到和设计相应的语句。
    3.验证语句的正确性,对比输入,加噪,过滤后波形的图像,找到存在的问题所在。
    4.播放采集,加噪和滤波后的音频,对比其不同性,找到不同的区别。
    5.对比有带宽的噪声和单频噪声,得到相应的结论。
    1.4设计过程
    1.1 语音信号采集
    录制了一段自己的音频。
    1.2 原始信号的时域、频域FFT 分析
    在 MATLAB软件平台下,利用函数audioread设计程序对语音信号进行采样。利用fft快速傅里叶转换对信号进行时域和频域转换,编好程序后单独运行直到得到信号的频谱图。
    1.3 加噪信号的时域、频域FFT分析
    在MATLAB中,给原始语音信号叠加上噪音,绘出叠加噪声后的语音信号时域和频谱图,与原始语音信号图形进行对比,分析频谱和波形的改变。
    1.4 数字滤波器的设计及滤波
    根据设计思路,结合MATLAB显示频谱图等设计合理的滤波器,并用滤波器对含噪语音信号进行滤波处理。并对比两种不同加噪的信号的过滤结果。
    1.5 回放语音信号
    对滤波后信号进行回放,对比滤波前后音频变化。
    1.6 撰写设计报告
    撰写设计报告,完成本次设计。

第二章 设计原理
2.1基本理论知识

利用MATLAB对语音信号进行分析和处理,采集语音信号且可以播放后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。语音信号是非平稳信号且是非周期的,它的频谱随时间连续变化,然后利用傅里叶变换得到的频谱。然后将原来的信号加上噪声判断其波形和原波形的区别。根据语音信号的特点,设计数字滤波器,对加噪后的语音信号进行滤波处理。对滤波后的语音信号进行时域、频域分析,并将滤波前后的时域波形、频谱波形进行相比较,分析信号的变化,从而验证所设计滤波器的滤波效果是否达到了滤除高频噪音、保留低频原始语音信号的目的。
基础的函数:

读取音频文件函数:audioread();(老版本为wavread)
MATLAB播放音乐函数:sound();
加入白噪声:noise=(max(x(:,1))/5)randn(x,2);
y=x+noise;
频谱分析:fft();
fftshift();
2.2采用定理、频谱的参数分析
x=0.5
sin(2pi500*t); %500HZ正弦干扰噪声
s1=temp(1:length(x))+x; 正弦加斯白噪声
采样频率: fs =46000Hz 长度:N=167584
其余滤波器参数在代码中有详细注释
2.3滤波器性能指标及分析
数字滤波器在数字信号处理的各种应用中发挥着十分重要的作用。它是通过对采样数据信号进行数学运算处理来达到滤波的目的。FIR数字滤波器设计的方法有三类,一类是窗口设计法(时间窗口法),第二类是频率采样法,第三类是等波纹优化设计。时间窗口设计法是从单位脉冲响应序列着手,使h(n)逼近理想的单位脉冲响应序列hd(n);频率采样法是使所设计的FIR数字滤波器的频率特性某些离散频率点上的值准确地等于所需滤波。
数字滤波器(Digital Filter,简称为DF)是指用来对输入信号进行滤波的硬件和软件。 所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的器件。数字滤波器和模拟滤波器相比,因为信号的形式和实现滤波的方法不同,数字滤波器具有比模拟滤波器精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配等优点。一般用两种方法来实现数字滤波器:一是采用通用计算机,把滤波器所要完成的运算编成程序通过计算机来执行,也就是采用计算机软件来实现;二是采用实际专用的数字处理硬件。 数字滤波器按照冲激响应的时域特性可分为:无限长单位冲响应滤波器(IIR)和有限长单位冲击响应滤波器(FIR),但与IIR相比,在满足同样阻带衰减的情况下需要的阶数较高,滤波器的阶数越高,占用的运算时间就越多,因此在满足指标要求的情况下应尽量减少滤波器的阶数。 FIR滤波器的基本结构可以理解为一个分节的延时线,把每一节的输出加权累加,可得到滤波器的输出,FIR滤波器的冲激响应h(n)是有限长的,数学M阶FIR滤波器可以表示为:

第三章 设计过程
3.1流程图及程序等
基于matlab的语音信号滤波处理_第1张图片
基于matlab的语音信号滤波处理_第2张图片

代码:
代码链接

3.2调试过程中的问题
1.调试中名字不匹配导致代码出错
2.GUI的按键功能只显示坐标轴不能显示波形
3.函数的选择错误或者运用不当导致程序功能不能实现
4.对滤波器的认识混乱导致几种滤波器的认识错误及无法做清楚对应的滤波器函数等
5.添加正弦噪声时间两个维度不匹配导致程序不能正常运行
6.在主函数中因为ideallp和freqz_m等函数没有定义,所以需要新建脚本实现其函数功能。
7.对于滤波器的了解不足,你能选择合适的滤波器将噪声完全去除。
3.3结果分析

基于matlab的语音信号滤波处理_第3张图片
音频分析结果
基于matlab的语音信号滤波处理_第4张图片

人声分析结果

程序通过GUI可以实现原波形的显示、加噪声的波形,四种滤波器也可以将原信号的波形进行改变。因为加入的噪声比较强,其结果为明显掩盖了原来的波形,并且有噪声的频率特点。后续的低通和高通滤波器明显的将其低频和高频部分滤除,而带通和带阻则将波形删减很多,声音也更加的模糊且短暂。而四种滤波器的分析结果和滤波结果也有显著的差异,低通滤波器的声音比较低沉,高通滤波器的声音有了不清晰的感觉,而带通显然有了部分声音丢失的感觉,最后的带阻滤波器的播放效果是最不理想的,而通过本次的课程设计对四种滤波器有了更加直观的认识和了解,为后面数字信号处理的学习等起到了好的指导作用。
噪声部分分别添加了高斯白噪声(有很明显的吵杂且混乱的声音)和正弦波(类似于汽笛声,尖锐),最后通过带阻滤波器将噪声基本滤除干净,只是和原信号相比,其频域和时域的波形和原来相比有了一定的差异,但是依旧很好的起到了去噪的效果,。
而通过如图的人声分析和音频分析可以看出两种不同的声音其分析结果有显著的差异,人声的频率都比较低,所以其频域分析时都比较单一而且变化几乎没有,而音频的声音在各个频段都有,所以通过各种滤波器对其有影响,但是不会像人声的影响那么大。

结 论
本次课题是应用Matlab对语音信号进行频谱分析及滤波,首先通过网络和书籍查找有关本次综合实验的资料,编写相关程序,并通过Matlab软件运行得到相关波形频谱图:实验中利用双线性变换法设计IIR数字滤波器,利用窗函数设计FIR数字滤波器,可以是低通、高通、带阻和带通滤波器的设计,知道了类似于audioread函数和sound函数这一类比较基本的函数的用法。
通过这次课程设计,让我对MATLAB有了深入的了解。这次设计主要参考的网上的一些前辈们做的设计,看了他们无数的代码,自己才慢慢的懂得了如何去写一些代码,和一些代码的作用。直到现在有些函数都还没有弄懂,这次设计就用了自己会的一些函数,由于是第一次设计,所以还向其他的同学们请教了一些问题。在设计过程中有不懂的,在他们的帮助下也完成了。所以通过这次的课题设计为日后的相关设计及专业知识的积累起到了关键作用。

致 谢
在我的指导老师的悉心指导与无微不至的关怀帮助下,我的论文得以顺利完成。让我对MATLAB和数字信号处理有了更加深刻了解也让我可以把两者的理解可以用更清晰的想法去运用到实践过程中去,虽然过程有一定的困难,但是完成的成就感还是非常的真实,在此再次感谢老师的帮助和任务。

以上为论文全部内容,课程设计的演示结果:老师指示的是四种滤波器的四个频域波形存在问题,而且最后的滤波器去噪应该不能达到两种噪声同时去除,其他内容没有太大问题,仅供参考,请勿完全按照代码,自行查找资料修改。

具体代码看置顶评论

你可能感兴趣的:(C语言,傅立叶分析,matlab)