毕业论文——基于matlab的语音信号频谱分析_第1页
毕业论文——基于matlab的语音信号频谱分析_第2页
毕业论文——基于matlab的语音信号频谱分析_第3页
毕业论文——基于matlab的语音信号频谱分析_第4页
毕业论文——基于matlab的语音信号频谱分析_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要随着计算机技术和信息技术的发展,语音交互人机互动已经越来越重要,逐渐开始成为人机交互的一种重要手段,而语音信号的采集与信号的处理识别是语音交互人机互动的前提和重要基础。语音信号的处理属于信号处理领域,信号处理主要有时域分析和频域分析,频域分析相比较于是与分析更高效而方便。对于连续时间信号,其频域分析运用了连续时间傅里叶变化来进行,但是使用这种方法计算出来的结果依然是连续信号,计算机无法立即进行计算处理。为了进行计算和分析,首先需要对信号进行离散化处理,即使用离散傅里叶变化,即DFT进行分析。离散傅里叶变化快速算法的出现,让DFT在图像处理、数字通讯、功率谱估计、系统分析、仿真和雷达信号处理、光学等领域都得到了及其广泛的运用。本论文使用MATLAB一个数据分析和处理功能强大的工程应用软件,运用它来进行语音信号的采集、分析和处理非常便捷。本文主要使用matlab进行语音信号的采集并在语音信号采集后的频谱分析处理,通过实例使用DFT快速算法即快速傅里叶变化实现连续时间信号语音信号频谱分析。AbstractWith the development of computer technology and information technology, voice interactive human-computer interaction has become more and more important and gradually became an important means of human-computer interaction, and recognition of speech signal acquisition and signal processing is the prerequisite and basis of voice interactive human-computer interaction. Speech signal processing belongs to the field of signal processing, signal processing is sometimes the domain analysis and frequency domain analysis. For the continuous time signal, the frequency domain analysis using Fourier transform of continuous time to carry out, but the calculated results using this method is still a continuous signal, the computer cannot immediately calculate processing. In order to carry on the computation and the analysis, first needs to carry on the discrete processing to the signal, namely uses the discrete Fourier transformation, namely DFT carries on the analysis. 离散傅里叶变化快速算法的出现,让DFT在图像处理、数字通讯、功率谱估计、系统分析、仿真和雷达信号处理、光学等领域都得到了及其广泛的运用。本论文使用MATLAB一个数据分析和处理功能强大的工程应用软件,运用它来进行语音信号的采集、分析和处理非常便捷。本文主要使用matlab进行语音信号的采集并在语音信号采集后的频谱分析处理,通过实例使用DFT快速算法即快速傅里叶变化实现连续时间信号语音信号频谱分析。The fast algorithm of discrete Fourier transform has been widely used in the fields of image processing, digital communication, power spectrum estimation, system analysis, simulation and radar signal processing, optics and so on in DFT. In this paper, MATLAB is used to analyze and process a powerful engineering application software. It is very convenient to use it to collect, analyze and process the speech signal. This paper mainly uses MATLAB for voice signal acquisition and analysis processing in speech signal spectrum acquisition, namely fast Fourier transform frequency spectrum of continuous time signal analysis of speech signal using DFT algorithm through examples. 第一章 绪论1.1 课题研究背景自然界存在各种各样的声音,人类的社会化很大程度上是由人类语言的发展进步而获得提升。自然界的运动和变化都有他们的固有规律,其中许多规律表现为周期性。人类社会的发展同样具有周期性,无论是简单的重复还是螺旋式的上升,都是发展周期性的表现。人类研究声音是将声音作为一种波来研究,从此来看其振幅,频率是作为波的重要研究对象。声音作为一种压力波,声源的震动会引起介质的震动,在空气中的表现为空气分子的有节奏振动,在空气分子的有规则震动时,其振动会引起空气产生疏密变化,并随之生成了疏密相交的纵波,并继续延续传播,直至能量传递的消失为止。声音作为波的一种,在人类研究声波时,频率和振幅就成了描述波的重要属性,频率的大小在听觉感官的感知下即为音调的高低相对应,而振幅的大小在听觉器官的感知下即为声音的大小相对应。我们日常生活中所感知到的声音往往都是多个声波的叠加,声音可以分解为不同频率不同强度的正弦波的叠加,将一个声波分解为多个正弦波的叠加,这一变化的过程,成为傅里叶变换。我们日常生活中还对音色有所感知,所谓的音色是一种抽象而难以描绘的概念,通过对波形的研究,我们很容易可以将其分辨出来,不同的音色的产生主要是由于产生振动的声源其物理属性不同而产生。对应在声波上的表现在于其波形不同,常见的有方波,锯齿波等波形。所以对声音的研究主要体现在对声波的研究。人类对变化的频率比对变化本身更要敏感很多,人们对声音的敏感不单单是声波本身。声音是有物体振动产生的声波,通过介质传播并能被人或动物听觉器官所感知的波动现象。声音以波的形式震动传播,人类所能感知的频率在20Hz到20KHz之间。这里可以类比于肉眼对光敏感的不是光波本身而是光波的频率,在这里也意味着光的颜色,红光、紫光和黄光等,因此频率的概念本身十分重要,这也是为什么频域分析与时域分析相提并论。频谱分析在科研工作中涉及信号处理有着广泛应用,无论是机械行业还是电子通讯类。例如,在机械领域中,一个高速转动的轴,其工作运行状态下的谱分析可以分析其设计数据是否合理,加工是否合乎规范等,保证了产品的质量和生产的合理性。在电子通讯领域有着更为深远的影响。船的航行中必不可少的就是声纳系统,声纳系统可以检测水下的鱼群、潜艇、水下礁石等,在分析其传回的信号时需要对噪声信号进行频谱分析,以去除干扰提供有用的信息。所谓的频谱分析也就是周期性分析,频谱估计就是周期性估计。频谱分析和估计不仅是解释信号特征的重要方法,也是处理信号的重要手段。这些方法和手段已经在各个领域广泛应用。语音信号处理是科研和工程项目等众多领域中的一个正在研究的重要环节。其信号处理需要用到信号的检测、变换以及滤波等功能。随着社会的进步,人们对信号处理也提出了更高的要求,传统采用的模拟系统来实现的信号处理已经无法满足科研项目的需求,其存在许多难以攻克的缺点和难题。现如今对信号的血多处理都采用了数字处理的方式进行。信号处理,是众多科研项目中具有高度自主知识产权的一个科研点,是许多先进技术进步的瓶颈,是需要攻克的一个重要问题。1.2频谱分析的发展概述在二十世纪初期,第一批次的频谱分析开始应用于实践中,主要有雷达和电视的开发和制作,另外还有研究信号数据的功率于频率之间的关系问题等。这批频谱分析的应用开启了频谱分析应用的先河,其是通过扫描方式,在阴极射线管上显示被测量的信号的频谱。随着计算机的逐渐普及以及大规模集成电路的流行,频谱分析的应用也转移至频谱仪上进行。现有的频谱仪主要有数字式和模拟式两种。模拟式的频谱分析仪主要使用了滤波器,所以模拟式的频谱分析仪有扫描式频谱分析仪和平行滤波器频谱分析仪。另一种就是数字式频谱分析仪,其将数字信号进行采样量化,继而通过数字信号处理的方式,采用傅里叶变换得到所要求得的频谱。此种数字式频谱分析仪又分为快速傅里叶变换分析仪或者叫做FFT分析仪。1.3 Matlab简介随着社会的进步,科技的发展,计算机技术逐渐蓬勃发展的今天,数学工具已经成为了我们科研工作必不可少的重要工具。计算机推动者社会工程的进步,越来越多的计算工作需要计算机的辅助才可以完成,这大大加快了技术人员的科研速度,也较少了繁琐的计算,将人们从繁琐的计算中解放出来。另一方面也大大提高了正确率,确保了科研工作的快速运行。由此众多计算软件应运而生。MATLAB的诞生和数学密不可分,它是由终端工具箱和主包组合而成,他拥有非常高效的计算能力,和优越的性能。现如今,集成了非常完善的工具箱,可以进行仿真和用户界面编写,不仅仅是一种数学工具,还是一种语言,作为编程语言,M语言的存在,也受到了广大用户的欢迎。其丰富的函数库以及便捷的用户编写界面也顺应了用户的需求。先如今,MATLAB是国内外高校、研究所的研究员,学生必备的数学计算及编程必备软件,也是必须掌握的基本技能。MATLAB面向于科研,工作等领域的编程工具,是一种高级语言,其应用于科学计算,具有可视化高性能的特点。它集成了数值分析、矩阵运算、图形处理和信号处理等为一体的并具有良好的人机交互界面的一个用户平台。信号处理是MATLAB做的非常出色的一个领域,它将许多信号处理使用的函数算法编写成了一个函数库,方便用户通过调用函数库中的信号处理函数,可以非常高效的进行信号处理,降低了信号处理入门的门槛,也提高了人们进行语音信号处理的工作效率。同时另一方面MATLAB还具有许多经典的数字信号处理算法,是一个非常完善的研究算法和进行语音信号处理的软件。1.4本文的主要任务随着现代电子技术的发展,直接的系统设计及其验证难度也越来越大。因此,系统设计必须依靠一定的仿真手段来以降低设计的难度,缩短设计时间。本文使用MATLAB作为工具对语音信号进行采集,凭借其出众的信号处理功能,采用WAV格式的语音文件作为研究分析对象,通过电脑录音功能录制一段语音,在MATLAB中读取。将读取的语音信号采样存储,并进行信号处理得到其波形、幅值和相位图。首先运用MATLAB绘制出来语音信号时域波形,随后进行分析语音信号的频谱,利用fft函数对语音信号进行快速傅里叶变换以此来分析信号的频率特性。再使用MATLAB设计数字滤波器,阐述数字滤波器的设计方法,并根据需要设计滤波器进行滤波,分析使用滤波器前后信号的频谱有何不同。第二章 MATLAB和语音信号处理MATLAB作为科学计算和可视化编程的重要软件,本章主要介绍了在语音信号处理方面MATLAB的使用,以及MATLAB的产生以及发展。2.1什么MATLAB在科研工作以及工程实践的进程中,大量繁琐的数学计算无法避免,使用较为传统的计算器甚至比较原始的纸笔计算方法已经远远无法满足日益增长的计算需求。因此许多技术人员以及需要用到计算的工程人员开始使用C语言C+,以及VB等计算机编程语言来进行编程并计算得到结果,进行辅助。但采用这种方式需要一定的编程基础,并需要较高的数学功底,难以进行推广,这种方式只适用于以少部分精英人员,对大多数科学技术人员并不适用,而且具有很大的难度。为此许多人开始整理常用的算法库,并尝试降低科学计算的入门门槛。由此许多软件公司推出了许多数学类的软件,例如Mathematica、MATLAB以及Maple等开始出现。其中各个软件各有利弊,也各有自己适用的领域。MATLAB在语音信号处理,以及图像处理等方面一直走在所有的数学应用软件的前列,所以本文以他为主要的使用软件。MATLAB起源于矩阵实验室,他提供了对LINPACK以及EISPACK这两个矩阵软件包的接口。其中LINPACK是求解线性方程组的Fortran程序库,EISPACK是解决特征值问题的Fortran程序库。MATLAB简称为M语言,其与常用的C语言以及 VB相比较,MATLAB的语法成为简单,其编程习惯于人的思维方式更为吻合,使得学习者能够较为快速的掌握这门语言,并且用MATLAB编写的代码类似于在便签上写方程式并进行求解,所以MATLAB也被成为科学便签的科学计算语言。MATLAB最早是用于求解线性方程组的,其尤其擅长求解线性方程,其基本的数据结构是矩阵,也因此MATLAB的名字叫做矩阵实验室。现如今其凭借其非常强大并且异常丰富的资源和性能已经成为了全世界应用最广泛的数学计算以及编程工具一直。 2.2 MATLAB的发展历程2.2.1 MATLAB的产生在上个世纪1970年代,美国国家基金会资助了Cleve Moler和他的同事开发了LINPACK和EISPACK的Fortran子程序库。随后Cleve Moler在给同学上线性代数课的时候,让学生不需要再编程上面花费太多的精力和时间,并可以同是使用LINPACK和EISPACK子程序库。因此他专门为学生开发了可以自由使用LINPACK和EISPACK子程序的接口程序,并且命名这个接口程序为MATLAB意味着矩阵实验室。1980年初,Cleve Moler和John Little一起使用C重新编写了MATLAB的核心代码,一起推出了MATLAB的第二个版本。随后他们成立了MathWorks公司,并且推出MATLAB,最终成功将这款软件推向了市场,并取得了重大成功。2.2.2 MATLAB的发展自从1984年MathWorks公司的成立,以及MATLAB的推出以来,经过了后续多年的刻苦研究以及不断完善,MATLAB又增加了新的功能,并且其界面也在不断地完善。并在2001年,MathWorks公司发布了新的版本MATLAB6.0的版本,作为非常经典的一个版本,他不仅继承了以往版本的图形可视化能力以及数值分析计算,同时又新增加了SIMULINK功能。SIMULINK作为一个交互式的可以操作的动态系统建模、仿真和分析一体化集成环境。它的出现,让人们可以在工程计算中不需要简化随意因素和非线性因素,由此提高了分析整个系统性能的能力,也提高了人们对于随机动态系统的感知度。另一方面,其具备了于外部输入设备进行数据交互的组件,可以通过MATLAB对数据进行实时处理分析,开通了软硬件结合的领域,拓展了软件的应用领域。并具备了符号计算工具包,这推进了数值计算和符号计算这两种计算的互补发展的新进程。2.3 MATLAB系统随着MATLAB的不断完善和进步,现如今,其涵盖了五个主要功能:MATLAB语言、MATLAB工作环境、MATLAB图像处理系统、MATLAB数学函数库以及MATLAB应用程序接口。2.3.1 MATLAB语言目前MATLAB语言已经成为了较为流行编程语言,并且随之MATLAB的不断发展和完善,M语言成为了具有独特的数据结构、输入输出、流程控制语言,面向对象的高级语言。它在可视化以及编程方面自成一家,并方面计算可以将问题和解决方案用人们熟悉的方式表现出来。2.3.2 MATLAB图像处理功能现如今图像处理领域必备软件无法避免的必定有MATLAB,其具备非常完善的图形处理函数库,并将图像处理的结果用图形来表达出来,方便进行图像处理方面研究的科研工作者进行分析和处理。目前MATLAB的图像处理主要有以下几种功能:1、 二维图形的绘制;2、 三维模型的绘制;3、 用户界面的设计即GUI。2.3.3 MATLAB应用程序接口作为可以在软件和硬件之间建立桥梁的关键所在,MATLAB的应用程序接口实质是一个可以让MATLAB与C语言和VB语言等其他编程语言进行交互的函数库。它通过连接来读取程序。其可以在MATLAB中调用其他编程语言所编写的程序,并从MATLAB中输出或输入数据。其可以编写上位机,与其他界面进行交互。拓展了其应用领域。2.4 语音信号采集原理2.4.1采样定理在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:fs.max=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的510倍;采样定理又称奈奎斯特定理。1924年奈奎斯特(Nyquist)就推导出在理想低通信道的最高大码元传输速率的公式: 理想低通信道的最高大码元传输速率=2W*log2 N (其中W是理想低通信道的带宽,N是电平强度) 2.4.2采样频率采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确、采样频率与声音频率之间有一定的关系,根据奎斯特理论,只有采样频率高于声 音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。2.4.3采样位数与采样频率采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6dB。采样位数越多则捕捉到的信号越精确。对于采样率来说你可以想象它类似于一个照相机,44.1kHz意味着音频流进入计算机时计算机每秒会对其拍照达441000次。显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。2.5 本章小结作为主流的科学及工程计算软件,MATLAB的优点非常突出。1完善的功能。其不仅可以进行数值计算,在符号计算领域也有着非常强大的功能,并且他在计算结果中通过图形和数据图表等方式可以非常完善的进行结果表达,这是其他数学计算软件所难以相提并论的。另一方面,它将其功能拓展到根伟广阔的领域。例如,用户可以使用文字和数字进行统一处理。同时其根据不同领域的需求,推出了具有针对性的工具集,涵盖了几乎各个领域。2.良好的用户界面,高效的编程。MATLAB程序编写方式,其指令与数学表达非常类似,在用户阅读和编写程序方面带来的非常大的便利。并且降低了编程的门槛,用户不一定需要具备高水平的计算机编程能力,仅仅需要按照格式即语法要求进行编写输入方程表达式,并计算结果即可。3.接口丰富。MATLAB的接口丰富,具有非常高的拓展性,可以根据用户的需求来自己编写软件,如今众多科研工作者依靠其编写了众多各领域的应用程序。MATLAB依靠这些众多优点,在科学和工程应用计算领域始终占有一席之地,并且是先今当代大学生以及众多科研工作者比不可少的计算机辅助计算、分析、仿真以及编程基础软件。并对语音信号的采集也进行阐述。从语音信号的采样原理以及采样频率、采样位数方面进行了说明,为后面的语音信号处理进行铺垫。第三章数字滤波器的简介数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学分析处理以达到频域滤波的效果。本章主要介绍了数字滤波器的种类以及其基本原理。并阐述了数字滤波器的设计方法,方面后续章节对语音信号滤波打下理论基础。4.1数字滤波器的定义及分类数字滤波器是一种可以通过设定其满足系统滤波需求,根据系统的频率响应,来对通过此滤波器的信号进行一些特定频率的成分进行滤波,此为其工作的基本工作原理。若是被滤波的系统是一个连续的系统,那么这个滤波器就是模拟滤波器,若是被滤波的系统是一个离散的系统,那么这个滤波器就是数字滤波器。一个信号作为函数f(t)输入线性系统后,其输出y(t)就是输入的信号f(t)和系统冲激响应h(t)的卷积。在系统冲激响应中出了ht=(t)之外,其他的函数y(t)的波形都将不同于输入的波形f(t)。并且从频域的分析上来说明,信号在经过了线性系统后,其输出的信号的频谱变成为了系统传递函数和输入信号的频谱的乘积。当且紧当Fj为常数的时候,否则输入的信号的频谱会与输入信号的频谱不同。并且一些频谱的H(j)成分会有很大的模,所以Fj中的这些频率成分将会被增强,同时对于其他一些频率的成分在H(j)的模比较小或者是0的情况下,Fj这一成分的频率分量将会被减弱甚至会消失。通过这种方式,对信号进行滤波,也对特定信号的频谱进行加权增强,以方面后续的采集和分析。线性系统对信号频谱的这种加工,可以有意识地用来按照人们的需要改变信号的频谱结构。这就是所谓频率滤波,是信号处理的一种方法。此时,人们也往往称此系统为滤波器。随着时代的不断进步和发展,计算机和大规模集成电路的不断推广和普及,单纯的使用模拟电路实现的电子系统已经无法满足时代发展的需求,数字化技术的发展和进步其重要性已经越来越凸显出来。目前传统的模拟电路所诞生带来的模拟滤波器已经无法满足社会需求,正在逐渐的被数字滤波器所取代。数字滤波器的输入时一个数字序列,其输出是另一个数字序列。所以其实质是一个数字序列的运算,这也正好是MATLAB这款科学计算软件所擅长的。另一方面它也是一个离散的系统,其具有一定的频率响应的特性。我们可以通过调整离散系统的结构让他的频率特性符合特定的要求,这就达到了和模拟式滤波器相同的功能。然后在这里区别于模拟式滤波器,现在的数字滤波器可以达到很高的精度,而且其非常稳定,在实际运用中也非常灵活,无论是高频还是低频都可以适用,并且具备高速运算的特点。并且可以分时多个系统同时工作,还可以同时处理数个不一样的信号,在现在的信号处理领域已经越来越重要,已经是现在信号处理领域必不可少的工具。在实际应用中经常会遇到FIR与IIR的数字滤波器分类方法,那么这两种滤波器各自有什么优劣,怎么去选择他们,将是面临的首要问题。下面对这两种滤波器作一个简单的比较。从性能上来说,IIR滤波器可以用较少的阶数获得很高的选择特性,所用存储单元少,运算次数少,所以经济而效率高。但是这个高效率的代价是相位的非线性。选择性越好则相位非线性越严重。FIR滤波器可以得到严格的线性相位。但是,如果需要获得一定的选择性,则要用较多的存储器和较长的运算,成本比较高,信号延时也较大。FIR滤波器可以得到严格的线性相位,只能通过改变零点位置来改变性能,为了达到高的选择性,必须用较高的阶数,对于同样的滤波器设计指标,FIR滤波器要求的阶数可能比IIR滤波器高5-10倍。IIR滤波器的设计可以利用模拟滤波器许多现成的设计公式、数据和表格,计算的工作量较小。从结构上看,IIR必须采用递归型结构,极点位置必须在单位圆内,否则系统将不稳定。FIR滤波器主要采用非递归结构,但它的传递函数的极点固定在原点,否则系统将不稳定。FIR滤波器可以采用快速博里叶变换算法,在相同阶数的条件下,运算速度可以加快。从设计工作看,IIR滤波器可以借助于模拟滤波器的成果,因此一般都有有效的封闭形式的设计公式可供准确地计算。又有许多数据和表格可查,设计计算的工作量比较小,对计算工其的要求不高。FIR滤波器设计则一般没有封闭形式的设计公式。窗口法虽然仅仅对窗口函数可以给出计算公式,但计算通阻带衰减等仍无显式表达式。一般,FIR滤波器的设计只有计算程序可循,因此对计算工具要求较高,没有电子计算机的程序功能是很困难的。然而这个特点又带来相反的一面,IIR滤波器设计简单,主要用以设计具有片段常数特性的滤波器,如低通、高通、带通及带阻等。而FIR滤波器则要灵活得多,尤其是频率采样设计法更容易适应各种幅度特性和相位特性的要求,可以设计出理想的正交变换、理想微分、线性调频等各种重要网络。基于以上比较,IIR和FIR各有优缺点,本文采取了IIR滤波器和FIR滤波器分别进行比较。4.2数字滤波器的设计方法数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。当然,IIR滤波器也可以采取直接设计的方法。4.3 数字滤波器比较在FIR数字滤波器和IIR数字滤波器上,从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的阶数获得高的选择性,所用的存贮单元少,所以经济而效率高。但是这个高效率是以相位的非线性为代价的。选择性越好,则相位非线性越严重。相反,FIR滤波器却可以得到严格的线性相位,然而由于FIR滤波器传输函数的极点固定在原点,所以只能用较高的阶数达到高的选择性;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高510倍,结果,成本较高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则IIR滤波器就必须加全通网络进行相位较正,同样要大增加滤波器的节数和复杂性。4.4本章小结本章对数字滤波器进行了详细的介绍,并分别针对FIR数字滤波器和IIR数字滤波器进行了比较和其设计方法的论述。总的来说IIR数字滤波器具有相位不线性的特点并且它不容易设计,FIR具有线性相位,并且容易设计,但在设计时却需要更多的参数。这就增加了计算量,需要了更多的计算时间,对语音信号处理的实时性有影响。本文分别使用FIR滤波器和IIR滤波器对语音信号进行处理并比较。第四章 语音信号的频谱分析本章使用MATLAB对语音信号进行采集,并使用MATLAB自带的信号处理函数库,使用信号处理算法,对语音信号进行处理和分析。并通过快速傅里叶变换对数据进行傅里叶变换后,对比变换前后的频谱图。设计合适的数字滤波器,对语音信号进行滤波处理,并进行前后的比较。4.1 语音信号频谱分析4.1.1语音信号的采样语音信号的采集使用手机作为录音设备,并将录音后保存的文件发送保存至电脑。如图4.1所示。图1 语音文件MATLAB可以识别输入的WAV格式音频文件,将许多WAV格式文件放在一个文件夹下。目录为C:UsersAdministratorDesktopmatlab语音信号matlab实践语音信号处理程序和数据Wave,这些语音文件时间设定为1s以内,方便进行语音信号采集与处理。开启MATLAB软件进入程序编写界面。使用wavread函数对语音信号进行采样。经过了对函数wavread的使用,可以让我们对MATLAB对语音信号的采集有了进一步的理解并对其采样频率和采样位数有了进一步的认识。如图4.2所示,使用语句:a1,fs,bits=wavread(C:UsersAdministratorDesktopmatlab语音信号matlab实践语音信号处理程序和数据Wavea.wav)。在这里的wavread函数是一个专门用于读取文件格式名是“.wav”格式的语音文件,在MATLAB中它需要专门的调用语句:y=wavread(文件路径)他可以通过文件的保存路径,访问wave格式的文件,并且将读取的采样数据保存如y中。在这种情况下,如果在保存的文件路径下并没有wav格式的文件那么这条命令会自动的给文件加上wav的格式后缀。Wavread这个函数还有另一种用法,y,fs,bits=wavread(文件保存路径);他的功能是读取得到一个语音文件的采样率和每个采样的比特数,即位数。图4.2 MATLAB语音信号采集此处的语句是使用a1数组进行采集存储采样的数据。其中fs代表的是采样的频率,bits代表的含义是采样的位数。如图4.3所示,这是采样得到的参数及一些数据。图4.3 MATLAB采样的数据如图4.3所示,得到其采样的频率为16000,采样的位数为16位。随后使用sound(a1,fs,bits)语句播放采样的语音信号。图4.4 MATLAB播放采样的语音信号使用了sound(a1,fs,bits)后,电脑播放刚刚采集的语音信号,sound函数可以使用windows的音频播放一段语音,其调用格式为sound(y,fs),其含义是以采样频率fs向音频发送向量信号,在这里标准的采样率为8000、11025、22050和44100HZ。完成了语音信号的采集后,可以进行语音信号的频谱分析。4.1.2语音信号时域分析进行语音信号的频谱分析时,首先需要画出由函数wavread采样后的语音信号的时域波形和他的频域响应波形。并且对语音信号进行FFT变换,并从此得到FFT频谱的特性曲线,以此与原有的语音信号的频谱特性曲线进行比较。首先绘制函数wavread采样得到的语音信号的波形及图像。如图4.5所示,首先显示原始语音信号采样后的是与信号。figure(1)plot(a1);title(原始语音信号采样后的时域信号);xlabel(时间轴n); ylabel(幅值A); 图4.5 MATLAB显示原始语音信号采样后的时域信号代码使用者几条指令可以让MATLAB以44.1K采样原始语音信号都的时域图形,如图4.6所示,设定x轴为时间轴,使用语句xlabel(),并用汉语使用单引号在x轴位置显示时间轴n。其y轴为波形的幅值轴,使用语句ylabel()可以设定y轴的含义,再次定义为幅值A。并定义其标题为原始语音信号采样后的时域信号,使用语句title()。Figure函数可以让MATLAB生成一个空白的图形,plot函数可以生成二维图形,并使用刚刚得到的数组a1,使用语句plot(a1)生成a1数组即采样语音信号的波形图形。图4.6 原始语音信号采样后的时域信号波形图此处的plot函数调用格式主要是plot(X,s)。X为实矩阵时,表示按照列绘制每列元素的数值相对其下标的取消,途中的曲线数等于X矩阵的列数,当X为复数矩阵的时候,则表示分别以元素实部和虚部为横、纵坐标绘制多条曲线。S是用来指定线型、色彩和数据点的选项字符串。随后使用语句,生成语音信号的频率响应图,如图4.7所示。figure(2); freqz(a1); title(原始语音信号的采样后的频率响应图)图4.7 原始语音信号的采样后的频率响应图使用函数figure(2),与之前的时域分析图相互区分,需要在figure中写2。使用freqz函数,生成的图如4.7所示。MATLAB提供了专门用于求离散系统频响特性的函数freqz(),调用freqz()的格式有以下两种:(1)H,w=freqz(B,A,N)(2)H,w=freqz(B,A,N,whole)(1)中B和A分别为离散系统的系统函数分子、分母多项式的系数向量,返回量H则包含了离散系统频响在 0pi范围内N的频率等分点的值(其中N为正整数),w则包含了范围内N的频率等分点。调用默认的N时,其值是512。(2)中调用格式将计算离散系统在0pi范围内的N的频率等分店的频率响应的值。因此,可以先调用freqz()函数计算系统的频率响应,然后利用abs()和angle()函数及plot()函数,即可绘制出系统在或范围内的频响曲线。在MATLAB中频率响应函数是freqz函数,这个函数是用来计算a和b构成的数字滤波器的复频率响应。在MATLAB中freqz函数调用格式为Freqz(b,a,n,fs)在这里直接使用freqz()函数直接生成语音型号的频率响应函数。4.1.3快速傅里叶变化后的频谱对语音信号的频谱分析需要使用快速傅里叶变化即FFT变化,FFT是离散傅里叶变化的快速算法,它可以将一个信号变换为频域,方便人们分析其特征,这些信号在时域中往往并不能容易的观察出其特征。因此许多信号的分析都采用快速傅里叶变化后,观察其频谱特征。同时使用快速傅里叶变换可以将需要分析的信号的频谱提取出来,这在频谱分析中是经常需要用到的。他的调用格式是y=fft(x)和y=fft(x,n)。在这里y=fft(x)利用FFT算法可以计算x的离散傅里叶变换,当x的长度为2的幂次方,fft会使用基-2FFT算法,否则采用混合基算法。Y=fft(x,n)采用n个点FFT。当x的长度小于n时,fft函数在x的尾部补0,以此来形成长度为n的数据,当x的长度大于n时,这是fft函数会在序列x处截取,取得前n点。 y1=fft(a1,1024); f=fs*(0:511)/1024; figure(3) subplot(2,1,1); plot(f,abs(y1(1:512); title(原始语音信号的采样后的频谱); xlabel(频率/Hz); ylabel(幅值);图4.8 原始语音信号的采样后的频谱如图4.8所示,此为原始语音信号采样后得到的频谱图,需要和原始语音信号采样后经过快速傅里叶变换的频谱图进行对比。如下为快速傅里叶变化的程序代码: subplot(2,1,2); plot(abs(y1(1:1024) title(原始语音信号采样后的FFT频谱) xlabel(点数N); ylabel(幅值);图4.9 原始语音和FFT后的频谱对比Subplot()函数是一个可以将多个图画在一个平面图像上的函数工具,其调用标准为subplot(m,n,p)。此处subplot(2,1,1),其中m=2表示的是2行图形显示,n=1表示的是1列图形显示,最后p=1表示的是图所在的位置,在此表示从左到右从上到下的第一个位置。在此处第一个图,原始语音信号的采样后的频谱图用subplot(2,1,1)来表示,第二个图,原始语音信号采样后的FFT频谱使用subplot(2,1,2)来表示。要实现幅度响应需要使用求绝对值或幅值函数。其中的语句plot(abs(y1(1:1024)。Abs是求解数值绝对值和复数的幅值函数。使用的语句为y=abs(x),其可以对数组元素进行绝对值处理。其中函数的定义域包括了复数,对于复数x=a+b*I,有abs(x)=a1+c1。4.2 数字滤波器设计数字滤波器有有限长冲激响应FIR和无限长冲激响应IIR这两种滤波器,本课题分别采用IIR型数字滤波器和FIR滤波器。他们都是离散时间LTI和LSI系统中两个非常重要的系统。设计IIR数字滤波器最通用的方法就是参照传统完善的模拟滤波器的设计方法。模拟滤波器已经非常完善了,其具有完善的设计理论,包括设计公式和设计所需要参考的图表可以查询,说以在设计IIR数字滤波器的时候可以参照这些资料来进行滤波器的设计。其实质就是设计好模拟滤波器,再此之后就是从模拟滤波器到数字滤波器的映射,将已经设计好的模拟滤波器变为数字滤波器。这种方法是比较方便的,而且可以参考的文献资料很多,同时也有许多可以查询的公式和图表。另外一种设计数字滤波器的方法是直接使用设计IIR数字滤波器的函数,直接设计IIR数字滤波器。目前经常被使用的模拟滤波器主要有Butterworth巴特沃斯滤波器、chebyshev切比雪夫I和二滤波器以及椭圆函数滤波器。在设计完模拟滤波器后,需要将其转化为数字滤波器,转换方式主要有两个办法。可以使用冲击响应不变法来实现模拟滤波器到数字滤波器的变化函数impinvar,另一种就是使用双线性的变换来实现模拟滤波器到数字滤波器的变换函数bilinear。采用这种方法对于IIR数字滤波器,他的设计需要以下的步骤:首先需要根据设计所给出的数字滤波器的设计要求以及工作指标等参数,根据其他已有的模拟滤波器将其转化为对应的模拟低通滤波器的技术指标。然后再将转换过的模拟低通滤波器的设计技术指标,设定好其Gs即模拟低通滤波器的传递函数。随后再将设计好的G(s)转化为数字滤波器的传递函数H(z)。最后再根据根据设计的数字滤波器类型,是低通、高通、带通还是带阻再将其数字滤波器的设定指标转为低通模拟滤波器的设计技术指标,进一步设计出来低通滤波器的传递函数G(s),把G(s)转为H(z)。若采用直接设计数字滤波器,需要使用特定的函数,在这里主要有设计Butterworth数字滤波器的设计所用的函数butter,如果设计的是chebyshey I这是一种通用的等波纹的滤波器需要其设计函数cheby1,同样设计chebyshev II阻带等波纹的滤波器需要其设计函数cheby2,同理椭圆滤波器对应的设计函数是ellip。采用设计模拟滤波器再转为数字滤波器的方式复杂,在MATLAB中使用直接设计IIR数字滤波器的方式简单方便。本文在MATLAB中进行数字滤波,分别采用直接设计数字滤波器的方式和采用生成模拟滤波器的形式。4.2.1 IIR数字滤波器(1) chebyshev I型滤波器设计函数根据上面所说的在MATLAB中直接生成chebyshey I型数字滤波器需要用到函数cheby I,这里其调用格式为:b,a=cheby1(n,Rp,Wn);图4.10 cheby函数说明如图4.10所示,此为cheby1的函数书写格式说明。cheby1可以用来设计低通、带通、高通、带阻数字Chebyshev滤波器 。Chebyshev的幅度在阻带滤波器的通带是单调的波纹。I型滤波器下降斜度比II型滤波器快,但在通带产生更大的偏离。然而b,a=cheby1(n,Rp,Wn)是用来设计n阶的低通滤波器,在这个函数中Wn是他的截止频率,同样Rp可以调节器通带的波纹。在此处截止频率是在滤波器下降到Rp时候的频率,当通带波纹Rp越小过度的带宽带越宽。(2)椭圆滤波器设计在之前的章节中也说明了MATLAB中直接生成椭圆滤波器使用的是函数ellip。其调用格式是:b,a=ellip(n,Rp,Rs,Wn);Ellip函数的使用与cheby1相类似。他可以设计具有高通、低通、带阻和带通的椭圆数字滤波器。同样,在这里类比于cheby1函数,使用Ellip函数可以得到幅度在通带和阻带内同时为等波纹的特性并且其下斜程度更大的滤波器。同样ellip的用法还有b,a=ellip(m,Rp,Rs,Wn)函数使用这种格式设计出n阶低通或者带通滤波器。b,a=ellip(n,Rp,Rs,Wn,frype)函数使用这种函数课设计高通和带阻的滤波器。在这里高通时ftype=high,当ftype=stop时,这是设计的是带阻滤波器。(3)Butterworth数字滤波器设计在MATLAB中设计Butterworth数字滤波器使用的是butter函数。他的使用格式是:b,a=butter(n,Wn)Butter这个MATLAB函数设计的数字滤波器包括通带内幅度响应最大的低通、高通、带通以及带阻滤波器。4.2.2 FIR数字滤波器FIR数字滤波器的幅度频率特性精度相对比较于IIR数字滤波器其幅度频率特性精度较低,但是其优点在于线性相位,也就是在不同频率分量的信号,经过了FIR滤波器后,他们的时间差不变,这在一些特定的场所有着非常重要的作用,也是FIR数字滤波器始终没有被取代的主要原因。本文在此语音信号处理方面 4.3 信号通过FIR滤波器比较分析4.3.1 FIR高通滤波器此处设计的FIR高通滤波器的设计参数为:fs=4800Hz,fb=5000Hz,As=100db,Ap=1db。使用窗函数法和双线性变化来设计其数字滤波器。fs=44100;x1=wavread(C:UsersAdministratorDesktopmatlab语音信号matlab实践语音信号处理程序和数据Wavea.wav);wp=2*pi*5000/fs;ws=2*pi*4800/fs;Rp=1;Rs=100;wdelta=wp-ws;N=ceil(8*pi/wdelta);wn=(wp+ws)/2;b,a=fir1(N,wn/pi,high);figure(1);freqz(b,a,512);title(FIR高通滤波器);此处设定FIR高通滤波器,滤波器作为一个离散时间系统最重要的一个指标就是其频率响应。滤波器的频率响应包括了幅频响应和相频响应。这里的幅频响应表现了在信号经过滤波后,其各个频率成分发生的衰减的情况。另一个相频响应反映了信号在经过滤波后,其各个频率成分在时间上产生的位移情况。以此正对应了信号的幅度失真和相位失真。一个完善的离散时间系统,除了达到所期望得到的幅频特性外,同样需要具备线性相位的特性,这对于实现无失真的传输而言具有极其重要的作用。 这里设定采样的频率为44100H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论