基于matlab的语音信号处理与仿真设计毕业论文管理资料.docx
- 文档编号:7623911
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:21
- 大小:203.89KB
基于matlab的语音信号处理与仿真设计毕业论文管理资料.docx
《基于matlab的语音信号处理与仿真设计毕业论文管理资料.docx》由会员分享,可在线阅读,更多相关《基于matlab的语音信号处理与仿真设计毕业论文管理资料.docx(21页珍藏版)》请在冰豆网上搜索。
基于matlab的语音信号处理与仿真设计毕业论文管理资料
兰州商学院
本科生毕业论文(设计)
论文(设计)题目:
基于Matlab的语音信号处理与仿真
学院、系:
信息工程学院
计算机科学与技术系
专业(方向):
电子信息工程
年级、班:
学生姓名:
指导教师:
声明
本人郑重声明:
所呈交的毕业论文(设计)是本人在导师的指导下取得的成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
因本毕业论文(设计)引起的法律结果完全由本人承担。
本毕业论文(设计)成果归兰州商学院所有。
特此声明
毕业论文(设计)作者签名:
年月日
基于Matlab的语音信号处理与仿真
摘要
语音信号处理是研究数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。
,各种函数调用等对语音信号进行采集、提取、变频、变幅,傅里叶变换、滤波等简单处理。
程序界面简练,操作简便,具有一定的实际应用意义。
[关键词]语音信号Matlab信号处理GUI
ABSTRACT
Voicesignalprocessingistostudytheuseofdigitalsignalprocessingtechnologyandknowledgeofthevoiceprocessingoftheemergingdisciplineisthefastestgrowingareasofinformationscienceoneofthecoretechnology.Inthisarticle,usingcomprehensiveuseGUIinterfacedesign,variousfunctioncallstosimpleprocessingofthevoicesignalssuchascollection,extraction,adjustmentoffrequencyandamplitude,Fouriertransformandfiltering.Theprograminterfaceisconcise,simpleandhassomesignificanceinpractice.
[KeyWords]VoiceSignal,Matlab,SignalProcessing,GUI
基于Matlab的语音信号处理与仿真
一、引言
(一)课题的背景及意义
语音是人类获取信息的重要来源和利用信息的重要手段。
通过语言相互传递信息是人类最重要的基本功能之一。
语言是人类特有的功能,它是创造和记载几千年人类文明史的根本手段,没有语言就没有今天的人类文明。
语音是语言的声学表现,是相互传递信息的最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。
随着计算机技术和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的
前提和基础。
尽管在Windows附件的娱乐中带有一个录音机,通过它可以驱动声卡采集语音信号并保存为语音文档,但是要对采集的信号进一步分析处理就必须另外编程或通过其它软件,而且Windows附件中的录音机功能极其有限不能扩展。
而在Matlab环境中,可以通过多种编程方法驱动声卡,实现对语音信号的采集和回放。
同时由于Matlab是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。
语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科。
作为高科技应用领域的研究热点,语音信号处理技术从理论的研究实际应用已经走过了几十个春秋并且取得了长足的进步。
它正在直接与办公、交通、金融、保安、商业、旅游等行业的语音咨询与管理等各种实际应用领域相接轨。
可见,语音信号处理技术的研究将是一项挑战性的工作。
(二)国内外的研究现状
20世纪60年代中期形成的一系列数字信号处理方法和技术,如数字滤波器、快速傅里叶变换(FFT)等成为语音信号数字处理的理论和技术基础。
随着信息科学技术的飞速发展,语音信号处理取得了重大的进展;进入70年代之后,提出了用于语音信号的信息压缩和特征提取的线性预测技术(LPC),并已成为语音信号处理最强有力的工具,广泛应用于语音信号的分析、合成及各个应用领域,以及用于输入语音与参考样本之间时间匹配的动态规划方法;80年代初一种新的基于聚类分析的高效数据压缩技术—矢量量化(VQ)[1]应用于语音信号处理中;而用稳马尔可夫模型[1](HMM)描述语音信号过程的产生是80年代语音信号处理技术的重大发展,目前HMM已构成了现代语音识别研究的重要基石[1,8,10]。
近年来人工神经网络(ANN)的研究取得了迅速发展,语音信号处理的各项课题是促进其发展的重要动力之一,同时,它的许多成果也体现在有关语音信号处理的各项技术之中。
(三)本文主要内容
本文主要介绍的是语音信号的简单处理。
在第一部分引言中简要介绍了语音信号处理的研究发展状况;第二部分主要介绍了语音信号处理所需要的基础知识,如:
采样频率、采样位数的概念、采样定理;时域信号的FFT分析;数字滤波器的设计原理和方法,各种不同类型滤波器的性能比较等等,以及Matlab仿真环境;第三部分对语音信号的处理作了详细介绍,语音信号的处理包括信号的提取、调整、变换和滤波;第四部分是语音信号的实例分析,是对前面所讲知识的应用;第五部分是图形用户界面(GUI)的设计与实现。
二、语音信号处理基本知识和仿真环境
(一)语音信号处理理论依据
1、采样定理
在进行模拟/数字信号的转换过程中,,即:
>=2fmax,则采样之后的数字信号完整地保留了原始信号中的
信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;采样定理又称奈奎斯特定理[1,3,4]。
2、采样频率
采样频率[1,3,4]是指计算机每秒钟采样多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。
采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。
采样频率与声音频率之间有一定的关系,根据奈奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。
这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。
3、采样位数和采样频率
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。
采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高,声音还原就越真实越自然。
采样位数和采样率[1,3,4]对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。
无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度,每增加一个采样位数相当于力度范围增加了6dB,采样位数越多则捕捉到的信号越精确,对于采样率来说你可以想象它类似于一个照相机,。
显然采样率越高,计算机提取的图片越多,对于原始音频的还原也越加精确。
(二)语音信号的分析及处理
1、语音的录入与打开
在Matlab中,[x,fs,bits]=wavread(‘’,[N1N2]);用于读取语音,采样值放在向量x中,fs表示采样频率(Hz),bits表示采样位数。
[N1N2]表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。
Sound(x,fs,bits);用于对声音的回放。
向量x则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。
2、时域信号的FFT分析
FFT即快速傅里叶变换[3,4,9],是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。
在Matlab的信号处理工具箱中函数FFT和IFFT用于快速傅里叶变换和逆变换,函数FFT用于序列快速傅里叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列x的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT且和x相同长度;若x为一矩阵,则y是对矩阵的每一列向量进行FFT。
如果x长度是2的幂次方,函数fft执行高速基—2FFT算法,否则fft执行一种混合基的离散傅里叶变换算法,计算速度较慢,函数FFT的另外一种调用格式为y=fft(x,N),式中,x,y意义同前,N为正整数。
函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x的长度大于N,则函数截短x使之长度为N;若x为矩阵,按相同方法对x进行处理。
3、倒谱的概念
·定义:
倒谱[1,10,11,13]定义为信号短时振幅谱的对数傅里叶反变换。
·特点:
具有可近似地分离并提取出频谱包络信息和细微结构信息的特点
·用途:
①提取声道特征信息:
提取频谱包络特征,以此作为描述音韵的特征参数而应用于语音识别。
②提取音源信息:
提取基音特征,以此作为描述音韵特征的辅助参数而应用于语音识别。
·求法:
如图2-1所示:
倒谱图
样值检测
x(n)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
时间窗F
图2-1倒谱的求法
在图2-1中,A表示短时信号,B表示频谱,C表示对数频谱,D表示倒谱系数,E表示对数频谱包络,F表示基本周期。
4、数字滤波器设计原理
数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。
数字滤波器[1,3,4,9,12]可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器有很多种分类,根据数字滤波器冲击响应的时域特征,可将数字滤波器分为两种,即无限长冲击响应(IIR)滤波器和有限长冲击响应(FIR)滤波器。
从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的阶数获得高的选择性,所用的存贮单元少,所以经济而效率高,但是这个高效率是以相应的非线性为代价的。
选择性越好,则相位非线性越严重。
相反,FIR滤波器却可以得到严格的线性相位,然而由于FIR滤波器传输函数的极点固定在原点,所以只能用较高的阶数获得高的选择性;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍,结果,成本较高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则IIR滤波器就必须加全通网络进行相位校正,同样要大增滤波器的阶数和复杂性。
整体来看,IIR滤波器达到同样效果,阶数较少,延迟小,但是有稳定性问题,非线性相位;FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。
在本文中主要采用IIR滤波器。
(三)仿真环境
语音信号的处理与仿真选用Matlab平台[2,5,7,8,9]。
Matlab是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
下面对Matlab的主要组成部分和图形用户界面(GUI)作简单介绍。
·Matlab的主要组成部分:
1)开发环境:
开发环境是帮助用户使用Matlab函数和文件的工具的集合,这些工具中许多都是图形用户界面。
开发环境包括Matlab桌面及其命令窗口、命令记录、帮助浏览器、工作平台、文件和搜索路径等。
2)Matlab数学函数库:
该库收集了大量的从基本函数(求和、三角运算、复杂算术等)到复杂函数(矩阵求逆、求矩阵特征值、贝塞尔函数和快速傅立叶变换等)的计算算法。
3)Matlab语言:
Matlab语言是一种包括流程控制语句、函数、数据结构、输入/输出和面向对象编程方式的高级矩阵/数组语言,该语言能够通过与其它Matlab系统组成部分之间的交互完成非常复杂的计算任务。
4)图形句柄:
图形句柄即Matlab的图形系统,该系统既包括二维和三维数据的可视化、图像处理、动画和图形描述等高级命令,又包括允许用户完全自定义图形,并在Matlab应用程序中建立自己的图形界面的低级命令。
5)Matlab应用程序接口:
API是允许用户编写C、FORTIULN和Matlab接口程序的系统库,该库中包含一些调用工具,其它应用程序能够通过动态链接、作为计算引擎、读写MAT文件三种形式来使用这些工具以调用Matlab程序。
·图形用户界面(GUI)
1)图形用户界面概念
图形用户界面或图形用户接口(GraphicalUserInterface,GUI)是指采用图形方式显示的计算机操作环境用户接口。
与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简单易用。
GUIDE是Matlab提供的图形界面开发环境,提供了一系列用于创建图形用户界面的工具,从而简单化界面布局和编程工作。
2)图形用户界面设计
①GUI设计模板
在Matlab主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示图形用户界面的设计模板。
Matlab为GUI设计一共准备了4种模板,分别是BlackGUI(默认)、GUIwithUicontrols(带控件对象的GUI模板)、GUIwithAxesandMenu(带坐标轴与菜单的GUI模板)与ModalQuestionDialog(带模式问话对话框的GUI模板)。
当用户选择不同的模板时,在GUI设计模板界面的右边会显示与该模板对应的GUI图形。
②GUI设计窗口
在GUI设计模板中选中一个模板,然后单击OK按钮,就会显示GUI设计窗口。
选择不同的GUI设计模式时,在GUI设计窗口中显示的结果是不一样的。
GUI设计窗口由菜单栏、工具栏、控件工具栏以及图形对象设计区等部分组成。
GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和Help6个菜单项,使用其中的命令可以完成图形用户界面的设计操作。
③GUI设计窗口的基本操作
在GUI设计窗口创建图形对象后,通过双击该对象的属性编辑器。
例如,创建一个PushButton对象,并设计该对象的属性值。
三、语音信号处理的总体方案
语音信号处理是信号处理中的重要分支之一。
它包括的主要方面有:
语音的识别,语言的理解,语音的合成,语音的增强,语音的数据压缩等。
而本文仅仅是对语音信号做一些简单的处理,包括信号的提取、调整、变换和滤波等。
(一)本文基本要求
本文是对语音信号同时在时域和频域进行滤波处理和分析,在Matlab应用软件下设计一个简易图形用户界面(GUI),来解决一般应用条件下的各种语音信号处理。
(二)语音信号的处理
1、语音信号的采集
使用电脑的声卡设备采集一段时间长度约为5~10秒的声音信号,保存为*.wav格式。
2、语音信号的处理
语音信号的处理[1,8,11,12,13]主要包括信号的提取、调整、变换和滤波等。
1)提取:
通过图形用户界面上的菜单功能按键采集电脑设备上的一段音频信号、完成音频信号的频率,幅度等信息的提取,并得到该语音信号的波形图。
2)调整:
在设计的用户图形界面下对输入的音频信号进行各种变化,如变化幅度、改变频率等操作,以实现对语音信号的调整。
3)变换:
在用户图形界面下对采集的语音信号进行Fourier等变换,并画出变换前后的频谱图。
4)滤波:
滤除语音信号中的噪音部分,可采用低通滤波、高通滤波、带通滤波和带阻滤波,并比较各种滤波后的效果。
3、语音信号的效果显示
通过用户图形界面的输出功能,将处理后的语音信号进行播放,试听处理后的效果。
4、语音信号处理方框图
图3-1列出了整个语音信号处理的方框图:
信号采集
信号提取
信号滤波
信号变换
信号调整
效果显示
图3-1语音信号处理方框图
幅度调整
其中信号调整包括信号的幅度和频率的任意倍数变化,如图3-2所示:
信号调整
频率调整
图3-2信号调整
信号的滤波采用了四种滤波方式,如图3-3所示:
信号滤波
低通滤波
带阻滤波
带通滤波
高通滤波
图3-3语音信号滤波的方式
综合图3-1、3-2、3-3可以看到,整个语音信号处理系统的流程分为三步,首先是读入待处理的语音信号,即信号的采集;然后进行语音信号的处理,包括信息的提取、信号幅度和频率调整、语音信号的傅里叶变换以及信号的滤波,而滤波又包括低通滤波、高通滤波、带通滤波、带阻滤波等方式;最后是对处理后的语音信号进行效果显示。
四、语音信号处理实例
(一)信号的采集
本文是以一段简短的语音信号作为分析样本,通过计算机中的录音机将一段语音信号——“尊敬的老师,亲爱的同学们,大家好,我是来自07电信的马芳兰”录入到计算机中。
该段语音时长约为6秒,并保存为“”文件。
(二)语音信号的提取
在Matlab中使用Wavread函数,可以得知语音信号的采样频率fs,采样位数bits。
利用Sound函数可以清晰的听到“尊敬的老师,亲爱的同学们,大家好,我是来自07电信的马芳兰”语音的播放。
语音信号提取的程序如下:
[x,fs,bits]=wavread('');%读入语音信号
fs%提取采样频率
bits%提取采样位数
sound(x,fs,bits);%听取“”语音
ms2=floor(fs*);
ms10=floor(fs*);
ms20=floor(fs*);
ms30=floor(fs*);
t=(0:
length(x)-1)/fs;%计算样本时刻
plot(t,x);%画出语音信号的波形
legend(‘Waveform’);
xlabel(‘Time(s)’);
ylabel(‘Amplitude’);
运行上面程序,得到采样频率fs=22050Hz,采样位数bits=16位,语音信号的波形图如图4-1所示:
高频噪声
图4-1语音信号的波形图
如图4-1所示,整段音频数据中得到的声音高低起伏与录入的声音信号高低起伏基本一致,并且可以观察到其中包含部分高频噪声(如图中标注部分)。
(二)语音信号的调整
在语音信号的研究中,经常会对语音信号进行多倍频率以及多倍幅度变换调整,日常应用中,这种变换调整也经常要用到。
1、语音信号的频率调整
在设计中,可以将语音信号的采样频率提高或降低,来实现语音信号的调整,得到所要求的语音信号。
例如将采样频率提高一倍,即可得到语音信号频率为原频率2倍的新的语音信号。
频率调整程序如下:
[x,fs,bits]=wavread('');
ms2=floor(fs*);
ms10=floor(fs*);
ms20=floor(fs*);
ms30=floor(fs*);
t=(0:
length(x)-1)/(2*fs);%计算样本时刻
sound(x,2*fs,bits);%听取2倍频后的语音
wavwrite(x,2*fs,bits,’调频’);%将倍频后的语音保存为“”
plot(t,x);%画频率调整后的波形图
legend('Waveform');
xlabel('Time(s)');
ylabel('Amplitude');
运行得到如图4-2所示的信号波形图,并试听调整后的效果。
原时长为6s
图4-2频率调整后的波形
与原语音信号相比,经过调整后的信号周期变为原来的1/2(也可以从语音信号的时长上直观的看出,如图4-2中标注所示,原语音信号时长约为6s,而此时变为3s),此时的语速明显变快,即实现了信号的2倍频功能。
2、语音信号的振幅调整
在设计中,可以将语音信号的幅度进行提高或降低操作,来实现语音信号的调整,得到声音音量大小不同的语音信号。
幅度调整程序如下:
[x,fs,bits]=wavread('');
ms2=floor(fs*);
ms10=floor(fs*);
ms20=floor(fs*);
ms30=floor(fs*);
t=(0:
length(x)-1)/(fs);%计算样本时刻
plot(t,x*4);%画调幅波形图
sound(x*4,fs,bits);%听取幅度调整后的语音
wavwrite(4*x,fs,bits,’调幅’);%将调整后的信号保存为“”
legend('Waveform');
xlabel('Time(s)');
ylabel('Amplitude');
运行得到如图4-3所示的信号波形图,并试听调整后的效果。
图4-3幅度调整后的波形
幅度经过四倍的放大,此时听到的声音声调变高,但还不是很明显,如果将幅度的变化值设置的更大些,那么就可以得到效果相当明显的语音信号了。
(三)语音信号的傅里叶变换
傅里叶变换就是把信号由时域转为频域,而傅里叶反变换就是信号由频域转为时域。
倒谱分析是指信号短时振幅谱的对数进行傅里叶反变换。
它具有可近似地分离并提取出频谱包络信息和细微结构信息的特点。
对语音信号进行频谱分析,在Matlab中可以利用函数FFT对信号进行快速傅里叶变换得到信号的频谱图,并进行倒谱分析,得到倒谱图。
傅里叶变换及倒谱分析的部分程序如下:
x=y(44101:
55050,1);%提取原语音信号的一部分
t=(0:
length(x)-1)/fs;%计算样本时刻
subplot(3,1,1);%确定显示位置
plot(t,x);%画波形图
legend('波形图');
xlabel('Time(s)');
ylabel('Amplitude');
Y=fft(x,hamming(length(x)));%做加窗傅里叶变换
fm=5000*length(Y)/fs;%限定频率范围
f=(0:
fm)*fs/length(Y);%确定频率刻度
subplot(3,1,2);
plot(f,20*log10(abs(Y(1:
length(f)))+eps));
legend('频谱图');%画频谱图
ylabel('幅度(db)');
xlabel('频率(Hz)');
c=fft(log(abs(x)+eps));%倒谱计算
ms1=fs/1000;
ms20=fs/50;
q=(ms1:
ms20)/fs;%确定倒谱时刻
subplot(3,1,3);
plot(q,ab
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 matlab 语音 信号 处理 仿真 设计 毕业论文 管理 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)