基于matlab的声音信号处理课程设计任务书.docx
《基于matlab的声音信号处理课程设计任务书.docx》由会员分享,可在线阅读,更多相关《基于matlab的声音信号处理课程设计任务书.docx(34页珍藏版)》请在冰豆网上搜索。
基于matlab的声音信号处理课程设计任务书
课程设计任务书
学生姓名
学生学号
学生专业
学生班级
指导教师
职称
发题日期
完成日期
设计题目
基于MATLAB的声音信号处理
设计目的:
1、巩固所学的数字信号处理理论知识。
2、理解信号的采集、处理、传输、显示。
加深学习Matlab软件。
3、综合应用专业及基础知识,增强解决实际工程技术问题的能力。
4、学习资料的收集与整理,学会撰写课程设计报告。
具体任务及要求:
1、选择一个语音信号作为分析对象,或自我录制一段语音,对其进行频谱分析;利用Matlab软件产生一个随机噪声进行加噪声后再对其分析;设计FIR或IIR数字滤波器对语音进行滤波,再分析其时域和频域。
利用Matlab软件编写语音信号处理程序,完成对话音信号时域和频域的程序设计和分析。
2、利用课余时间去图书馆或者上网查阅相关课题资料,深入理解课题含义及设计要求,认真整理。
在5月10日前完成预设计,并请指导教师审查、定稿。
3、及时提交设计报告(纸质、电子稿),要求格式规范、内容完整、结论正确,正文数不少于3000字。
课程设计进度安排:
序号
内容安排
时间
1
获得题目后查阅资料并整理,完成预设计
3.25-4.1
2
设计总体方案,绘制流程图,编写代码并调试
4.2-4.16
3
总体测试,完善其功能
4.17-5.1
4
撰写设计报告,后交指导老师初审
5.2-5.16
5
修改、完善设计报告,定稿、提交设计报告
5.17-5.25
课程设计参考文献:
[1]张德丰:
MATLAB通信工程仿真,北京机械工业出版社,2010.1[2]王彬、于丹、汪洋:
MATLAB数字信号处理,北京机械工业出版社,2010.5,
[3]孟志强、陈燕东、王同业、杨钰:
MATLAB辅助现代工程数字信号处理,西安电子科技大学出版社,2010.7
指导教
师签字
院长审核签字
基于MATLAB的声音信号处理的初步实现
内容摘要:
数字滤波器是数字信号处理技术的基础,用来对信号进行过滤、检测、与参数估计等处理。
任何检测的信号都含有噪声,而滤波是去除噪声的基本手段,因此滤波器在数字信号处理中占有极其重要的地位。
FIR数字滤波器和IIR数字滤波器是滤波器设计的重要组成部分。
随着MATLAB软件及信号处理工具箱的不断完善,MATLAB很快成为应用学科等领域不可或缺的基础软件,它可以快速有效地实现数字滤波器的设计、分析和仿真,极大地减轻了工作量,有利于滤波器设计的最优化。
本设计综合运用了数字信号处理的各种基本知识,对不带噪声音信号以及带噪声音信号进行频谱分析,并利用MATLAB信号处理工具箱有效快捷地设计IIR数字滤波器对带噪声音信号进行滤波处理。
关键词:
数字滤波器MATLAB滤波仿真
ThepreliminaryimplementationofvoicesignalprocessingbasedonMATLAB
Abstract:
Digitalfilteristhebasisofdigitalsignalprocessingtechnology,whichusedforsignalfiltering,detecting,andparameterestimation.Anydetectionsignalcontainsnoise,andfilteringisabasicmeanstoremovethenoise,sofilteroccupiesanextremelyimportantpositionindigitalsignalprocessing.FIRdigitalfilterandIIRdigitalfilterisanimportantpartofthefilterdesign.WithMATLABsoftwareandthecontinuousimprovementofthesignalprocessingtoolbox,MATLABapplicationquicklybecameindispensabletoareassuchasbasicsoftware.Itcanquicklyandefficientlyfordigitalfilterdesign,analysisandsimulation,greatlyreducetheworkload,anditisadvantageoustotheoptimizationoffilterdesign.Thisdesignisintegratedusedofallkindsofbasicknowledgeofdigitalsignalprocessingtocompletetheanalysisoffrequencyspectrumaboutspeechnoisysignalandspeechsignal,anditusetheMATLABsignalprocessingtoolboxeffectiveshortcuttodesignIIR
digitalfilterwithnoisespeechsignalfilterprocessing.
Keywords:
DigitalFilterMATLABFilteringSimulation
基于MATLAB的声音信号处理的初步实现
前言
声音信号的采集与分析处理在工程应用中是经常需要解决的问题,如何实时采集声音信号并对其分析处理,找出声音信号的特征在科学研究中是一项非常有意义的工作。
1绪论
语音是语言的声学表现,是人类获取信息的重要来源和利用信息的重要手段。
随着社会的进步和科学技术的发展,人类进入了信息化时代,用现代手段研究语音信号处理技术,是人们更加有效地产生、传输、存储和获取语音信息,者对促进社会发展具有重要意义,因此,语音信号处理越来越受到人们的关注和研究。
1.1研究的目的和意义
语言是人类交换信息最方便、最快捷的一种方式,在高度发达的信息社会中,用数字化的方法进行语音的传送、存储、识别、合成和增强等是整个数字化通信网中最重要、最基本的组成部分之一。
语音信号处理作为一门涉及面很广的交叉学科,在数字电话通信、高音质的窄带语音通信系统、语言学习机、声控打字机、自动翻译机、智能机器人、新一代计算机语音智能终端及军事上都有应用。
随着人类步入信息社会步伐的加快,越来越多的地方需要用到语音信号处理知识。
所以语音信号研究无论是在科学领域上还是日常生活中都有其广泛而重要的意义。
1.2国内外研究的现状
20世纪60年代中期形成的一系列数字信号处理的理论和算法,如数字滤波器、快速傅里叶变换(FFT)等是语言数字信号处理的理论和技术基础。
20世纪70年代初,由于电子计算机和数字信号处理的发展,人们发现:
声音信号,可以通过模数转换器(A/D)采样和量化,它们转换为数字信号后,能够送进计算机。
这样就可以用数字计算方法,对语音信号进行处理和加工。
例如数字滤波器可以用差分方程实现,频谱分析可以用傅里叶变换或快速傅里叶变换(FFT)实现,80年代初矢量量化技术(VQ)和隐马尔可夫模型(HMM)应用于语音处理中,隐马尔可夫模型(HMM)用于描述语音信号产生过程。
近年来语音信号处理这门新学科发展很快,在各项领域都有应用,解决了很多用传统方法难以解决的问题,在信息科学中占有重要地位。
1.3本课题研究的内容和方法
本设计主要介绍的是的语音信号的简单处理。
本设计运用数字信号学基本原理实现语音信号的处理,在matlab7.14环境下综合运用信号提取,幅频变换以及傅里叶变换、滤波等技术来进行语音信号处理。
我所做的工作就是采集一个语音信号作为分析对象,或自我录制一段语音,在matlab7.14软件上编写一个语音信号处理程序,对语音信号进行加噪去噪等处理,完成对语音信号时域和频域的分析和仿真,达到简单语音信号处理的目的。
对语音信号的研究,本设计采用了设计IIR滤波器的基本研究方法来达到研究语音信号去噪的目的,最终结合图像以及对语音信号的回放,通过对比,得出结论。
2MATLAB软件介绍
2.1MATLAB发展历程
MATLAB是由美国Mathwork公司开发的数值计算、符号计算和图形可视化三大基本功能于一体,功能强大、操作简单的语言。
是国际公认的优秀数学应用软件之一。
20世纪80年代初期,CleveMoler与JohnLittle等利用C语言开发了新一代的MATLAB语言,此时的MATLAB语言已同时具备了数值计算功能和简单的图形处理功能。
1984年,CleveMoler与JohnLittle等正式成立了Mathwork公司,把MATLAB语言推向市场,并开始了对MATLAB工具箱等的开发设计。
1993年,Mathwork公司推出了基于个人计算机的MATLAB4.0版本,到了1997年又推出了MATLAB5.X版本,并在2000年推出了MATLAB6.0版本,2004年正式推出了MATLAB7.0版本,现在最新的版本是2012年推出的MATLAB7.14版本。
现在,MATLAB已经发展成为适合多学科的大型软件,在世界各高校,MATLAB已经成为线性代数、数值分析、数理统计、优化方法、自动控制、数字信号处理、动态系统仿真等高级课程的基本教学工具。
特别是最近几年,MATLAB在我国大学生数学建模竞赛中的应用,为参赛者在有限的时间内准确、有效地解决问题提供了有力的保证。
2.2MATLAB组成
MATLAB作为MathWorks产品家族的核心,它主要由5大部分组成,分别为MATLAB语言(theMATLABLanguage)、MATLAB工作环境(theMATLABWorkingEnvironment)、MATLAB数学函数库(theMATLABMathLibrary)、MATLAB应用程序接口(theMATLABApplicationInterface)和图形句柄系统(HandleGraphics)。
下面对它们分别进行介绍。
2.2.1MATLAB语言
MATLAB语言是一种以矩形(Matrix)和阵列(Array)为基本编程单元,拥有完整的控制语句、数据结构、函数编写与调用格式和输出功能,具有面向对象程序设计特征的高级程序语言。
使用MATLAB语言不但可以方便快捷地完成小规模的算法验证、程序开发和调试工作,而且可以进行大规模、高效的复杂应用程序设计。
2.2.2MATLAB的工作环境
简单来说,MATLAB工作环境就是一系列实用工具的集合,它不但包括了各种操作工作空间中变量的工具盒管理数据输入输出的方法,而且包括了开发调试M文件和MATLAB应用程序的集成环境,使用起来极为方便。
2.2.3MATLAB数据函数库
MATLAB数据函数库是大量的各种形式的数学函数和算法的集合,它不仅包括了最基本的初等函数,如sum、sine、cosine和复数运算等,而且包含了大量复杂的高级函数和算法,如贝塞尔(Bassel)函数,快速傅里叶变换和矩阵求逆等。
用户在编写自己的MATLAB程序时,可以轻松地调用这些函数和算法,从而极大地方便了算法的开发。
2.2.4MATLAB应用程序接口
MATLAB的外部接口使得MATLAB可以与外部设备和程序实现数据交互和程序移植,可以扩充MATLAB强大的数值计算和图形显示功能,从而弥补了其执行效率较低的缺点,同时增强了其他应用程序进行软件开发的功能,提高了软件开发效率。
MATLAB接口工具不仅使得MATLAB可以十分方便地与其他应用程序交换数据和信息还实现了与其他程序函数和算法的交互。
所以,通过MATLAB的接口编程,可以充分利用现有资源,能更容易地编写出功能强大、结构简洁的应用程序。
MATLAB主要提供了MEX文件、MAT文件、MATLAB计算引擎、COM和DDE、Web服务、硬件接口和Excel生成器、Java生成器和.NET生成器等形式的接口。
2.2.5图形句柄系统
HandleGraphics为MathWork公司的注册商标,是MATLAB的图形系统。
它在包含了大量高级的2D和3D数据可视化、图形显示、动画生成和图像处理命令的同时,还提供了许多低级的图形命令,允许用户按照自己的需求显示图形和定制应用程序图形用户接口,即方便又灵活。
2.3MATLAB的特点
MATLAB是MathWork公司开发的跨平台的,用于矩阵数值计算的简单高效的数学语言,与其他计算机高级语言如C、C++、Fortran、Basic、Pascal等相比,MATLAB语言编程要简洁得多,编程语句更是其他高级语言望尘莫及的。
与其他高级语言相比较,MATLAB具有以下独特的优势:
a.MATLAB是一种跨平台的数学语言。
采用MATLAB编写的程序可以在目前所有的操作系统上运行(只要这些系统上安装了MATLAB平台)。
MATLAB程序不依赖于计算机类型和操作系统类型。
b.MATLAB是一种超高级语言。
MATLAB平台本身是用C语言写成的,其中汇集了当前最新的数学算法库,是许多专业数学家和工程学者多年的劳动结晶。
使用MATLAB就意味着站在巨人的肩膀上观察和处理问题,所以在编程效率,程序的可读性、可靠性和可移植性上远远超过了常规的高级语言。
c.MATLAB语法简单,编程风格接近数学语言描述,是数学算法开发和验证的最佳工具。
MATLAB以复数矩阵运算为基础,其基本编程单位是矩阵,使得编程简单,而功能极为强大。
而且,MATLAB中的数值算法是经过千锤百炼的,比用户自己编程实现的算法的可信度和可靠性都要高。
d.MATLAB计算精度很高。
MATLAB中的数据是以双精度存储的。
一个实数采用8字节存储,而一个复数则采用16字节存储。
矩阵运算的精度很高,完全能够满足一般工程和科学计算的需要。
与其他语言相比,MATLAB对计算机内存、硬盘空间的要求也是比较高的。
e.MATLAB具有强大的绘图功能。
利用MATLAB的绘图功能,可以轻易地获得高质量的(印刷级)曲线图。
具有多种形式来表达二维、三维图形,并具有强大的动画功能,可以非常直观地表现抽象的数值结果。
f.MATLAB具有串口操作、声音输入/输出等硬件操控能力,随着版本的提高,这种能力还会不断加强,使得人们利用计算机和实际硬件相连接的半实物仿真的梦想得以轻易实现。
g.MATLAB程序可以直接映射为DSP芯片可接受的代码,大大提高了现代电子通信设备的研发效率。
h.MATLAB程序的执行效率比其他语言低。
MATLAB程序通常是解释执行的,在执行效率和速率上低于其他高级语言。
事实上,MATLAB自带的许多内部函数均是用C语言编写并编译的,因此利用MATLAB内部函数程序部分的运行速度并不比其他语言中的相应函数低。
3数字滤波器的设计
3.1数字滤波器概述
数字滤波器是数字信号处理的基础部分,与模拟滤波器相比,数字滤波器具有精度高、可靠性高、灵活性高、便于大规模集成和多维过滤等特点,已广泛应用于现代各类工程领域。
数字滤波器是具有一定传输特性的数字信号处理装置,它的输入和输出都是离散数字信号,它借助于数字器件和一定的数值计算方法,对输入信号进行处理,改变输入信号,进而去掉信号中的无用成分而保留有用成分。
如果在数字处理系统前、后分别加上A/D转换器和D/A转换器,就可以处理模拟信号。
数字滤波器的输入输出是一个时间序列。
设H(n)为数字滤波器的系统函数,h(n)为其相应的脉冲序列,则在时域内有:
y(n)=x(n)*h(n)(3-1)
在z域内有:
Y(z)=H(z)X(z)(3-2)
式中X(z)和Y(z)分别为输入x(n)和输出y(n)的傅里叶变换。
在频域内有:
Y(jw)=H(jw)X(jw)(3-3)
式中,H(jw)为数字滤波器的频率特性,X(jw)和Y(jw)分别为输入x(n)和输出y(n)的频谱。
由此可见,一个合适的滤波器系统函H(z)数可以改变输入x(n)的频率特性,经数字滤波器处理后得到的信号y(n)可保留信号x(n)的有用成分,而去掉其中的无用成分。
3.2数字滤波器设计的基本原理
数字滤波器是指完成信号滤波(根据有用信号和噪声的不同特性,消除或减弱噪声,提取有用信号的过程)功能的、用有限精度算法实现的离散时间线性时不变(LTI)系统。
与模拟滤波器类似,数字滤波器也是一种选频器件,它对有用信号的频率分量的衰减很小,使之比较顺利通过,而对噪声等干扰信号的频率分量给予较大幅度的衰减,尽可能阻止它们通过。
相比于模拟滤波器,数字滤波器稳定性高、精度高、灵活性强。
滤波器总体可以分为经典滤波器和现代滤波器:
经典滤波器即一般的选频滤波器;现代滤波器以随机信号处理的理论为基础,利用随机信号内部的统计特性对信号进行滤波。
按照滤波器的实现方式方式分类,数字滤波器则可以分为无限冲激响应(IIR)和数字滤波器和有限冲激响应(FIR)数字滤波器。
本设计采用的是IIR数字滤波器对加噪语音信号进行滤波。
3.3设计IIR数字滤波器
3.3.1IIR数字滤波器设计方法
本设计在MATLAB平台上,设计了IIR数字滤波器,用于对加噪的语音信号进行滤波,对于IIR滤波器,它的极点可以在单位圆内的任何位置,实现IIR滤波器的阶次可以较低,所用的存储单元较少,效率高,又由于IIR数字滤波器能够保留一些模拟滤波器的优良特性,因此得到广泛应用。
在IIR数字滤波器的设计过程中,通常将数字滤波器的设计指标转化为模拟低通滤波器的设计指标,然后设计满足这些指标的模拟低通滤波器的系统函数,再将它变成所需要的数字滤波器系统函数。
此方法具有如下优点:
模拟逼近技术非常成熟、通常能产生闭式解、模拟滤波器有大量的图标可查,因此充分利用这些已有的资源将会给数字滤波器设计带来很大的方便。
一般,当着眼于滤波器的时域瞬态响应时,采用脉冲不变法较好,而其它情况下,对于IIR数字滤波器设计,大多采用双线性变换法。
3.3.2利用模拟滤波器设计IIR数字滤波器的步骤
a.确定数字低通滤波器的技术指标:
通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。
b.将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。
c.按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。
d.用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。
3.3.3用双线性法设计IIR低通滤波器
MATLAB信号处理工具箱函数cheblap,cheblord和cheeby1是切比雪夫I型滤波器设计函数。
我们用到的是cheeby1函数。
函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。
IIR低通滤波器程序见附录1。
IIR低通滤波器图像如图3-1:
图3-1IIR低通滤波器
4去噪和仿真的研究
4.1语言信号在MATLAB平台上的录入与打开
利用电脑上的声卡和windows操作系统可以进行语音信号的录入,语音信号的录入可以用麦克风直接录制人的语音,也可以通过音频线将收音机、电视机或磁带中的语音信号录入到计算机中,在录音机中可以进行简单的声音处理,如加大或降低音量,加速或减速,声音的反转或添加回音效果等。
加速或减速的改变可以完成变音功能,反转可以达到对声音文件保密功能。
本设计所录入的语音信号是在酷狗上把mp3进行格式转换为wav形式的语音信号。
然后保存到MATLAB文件夹里面,命名为“login”。
利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。
4.2原始语言信号频谱分析及仿真
在MATLAB中,[y,fs,bits]=wavread(‘login’,[N1N2]);用于读取语音信号,采样值放在向量y中,fs表示采用频率(Hz),nbits表示采样位数,[N1N2]表示读取的值从N1点到N2点的值。
sound(y,fs,bits);用于声音的回放。
向量y则代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。
下面是语音信号在MATLAB中的语言程序,它实现了语音的读入与打开,并绘制了语音信号的波形频谱图。
在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。
程序见附录2。
程序运行后得到的的波形如图4-1、图4-2、图4-3、图4-4。
图4-1原始信号波形
图4-2原始语音信号采样后频谱图
图4-3原始信号幅值
图4-4原始信号相位
4.3加噪语音信号频谱分析及仿真
在本次课程设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。
Randn函数有两种基本调用格式:
Randn(n)和Randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。
下面一段程序实现了利用randn函数把一段随机噪音信号加入原始语音信号的信号处理过程,见附录3。
加噪后语音信号的时域波形、频谱图如图4-5:
图4-5加噪语音信号时域波形和频谱图
通过对两张图片的对比,很明显可以看加噪后的语音信号时域波形比原始语音信号浑浊了许多,在时间轴上可以明显看出0—0.5S的幅值增大了;通过对原始语音信号的频谱图与加噪后的语音信号频谱图的对比,也可以看出在频率5000Hz以后的频率幅值发生了明显的增加。
4.4去噪及仿真
在Matlab中,IIR滤波器利用函数filter对信号进行滤波。
函数filter的调用格式:
yn=filter(B,A.xn),它是按照直线型结构实现对xn的滤波。
其中xn是输入信号向量,yn输出信号向量。
设计一个IIR低通滤波器对加噪语音信号进行滤波处理。
程序见附录4。
IIR滤波前和滤波后波形及频谱如图4-6:
图4-6IIR滤波前和滤波后波形及频谱
4.5回放语音信号
经过以上的加噪声处理后,可在Matlab中用函数sound对声音进行回放。
其调用格式:
sound(y,Fs),sound(y)和sound(y,Fs,bits)。
可以察觉滤波前后的声音有明显的变化。
5结束语
本设计采用了MATLAB软件,实现了语音信号的采集,圆满的完成了对加噪声语音信号的读取与打开,与课题的要求十分相符;也较好的完成了对原始语音信号和加噪声后的语音信号的频谱分析,通过fft变换,得出了语音信号的频谱图。
课题的特色在于它将语音信号看作一个向量,于是就把语音数字化了。
那么,就可以完全利用数字信号处理的知识来解决语音及加噪处理问题。
我们可以像给一般信号做频谱分析一样,来对语音信号做频谱分析,也能较容易的用数字滤波器来对语音进行滤波处理。
通过比较加噪前后,语音的频谱和语音回放,能明显的感觉到加入噪声后回放的声音与原始的语音信号有很大的不同,前者随较尖锐的干扰啸叫声。
从含噪语音信号的频谱图中可以看出含噪声的语音信号频谱,在整个频域范围内分是布均匀。
其实,这正是干扰所造成的。
通过滤波前后的对比,可得出结论:
语音信号主要分布在低频段,而噪声主要分布在高频段。
附录
附录1:
IIR低通滤波器程