数字语音处理课程设计.docx
- 文档编号:9975730
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:23
- 大小:735.49KB
数字语音处理课程设计.docx
《数字语音处理课程设计.docx》由会员分享,可在线阅读,更多相关《数字语音处理课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
数字语音处理课程设计
摘要
语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,是一门新兴的交叉学科,是在多门学科基础上发展起来的综合性技术。
它涉及到数字信号处理、模式识别、语言学、语音学、生理学、心理学及认知科学和人工智能等许多学科领域。
语音信号处理是目前发展最为迅速的信息科学研究领域中的一个,其研究设计一系列前沿课题,切处于发展之中。
其研究成果具有重要的学术及应用价值!
语音信号的采集和分析技术的应用和发展与语音学、声音测量学、电子测量技术等学科紧密联系,其中语音采集和分析仪器的小型化、智能化、数字化以及多功能化的发展越来越快,分析速度较以往也有了大幅度的提高。
本次课程设计主要介绍了语音信号的录制、语音信号的采集与分析、语音信号的采样、语音信号的频谱分析、叠加噪声后的频谱分析、滤波器的设计以及对于语音信号的回放等知识。
通过PC机或COOLEDITPRO录制一段语音信号,运用MATLAB或PRAAT对其进行仿真分析,然后设计滤波器加入噪声的语音信号进行滤波处理,比较滤波前后语音信号时域波形或频谱的变化,最后实现对于语音的回放设计!
关键词:
语音信号,数字滤波器,PARRT,MATLAB
目 录
1.绪论
2.语音信号处理的原理
3.语音信号的录制与采集
4.语音信号的时域及频域分析
5.语音信号的加噪与频谱分析
6.滤波器的设计及分析
7.语音信号的回放
8.小结
9.参考文献
10.附录
1.绪论
1.1课题背景及意义
语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。
通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
同时,语言也是人与机器之间进行通信的重要工具,它是一种理想的人机通信方式,因而可为信息处理系统建立良好的人机交互环境,进一步推动计算机和其他智能机器的应用,提高社会的信息化程度。
语音信号处理是语音学与数字信号处理技术相结合的交叉学科,它和认知科学、心理学、语言学、计算机科学、模式识别和人工智能等学科联系紧密。
语音信号处理技术的发展依赖于这些学科的发展,而语音信号处理技术的进步也会促进这些学科的进步。
1.2国内外研究现状
20世纪60年代中期形成的一系列数字信号处理的理论和算法,如数字滤波器、快速傅立叶变换(FFT)等是语音信号数字处理的理论和技术基础。
随着信息科学技术的飞速发展,语音信号处理取得了重大的进展:
进入70年代之后,提出了用于语音信号的信息压缩和特征提取的线性预测技术(LPC),并已成为语音信号处理最强有力的工具,广泛应用于语音信号的分析、合成及各个应用领域,以及用于输入语音与参考样本之间时间匹配的动态规划方法;80年代初一种新的基于聚类分析的高效数据压缩技术—矢量量化(VQ)应用于语音信号处理中;而用隐马尔可夫模型(HMM)描述语音信号过程的产生是80年代语音信号处理技术的重大发展,目前HMM已构成了现代语音识别研究的重要基石。
近年来人工神经网络(ANN)的研究取得了迅速发展,语音信号处理的各项课题是促进其发展的重要动力之一,同时,它的许多成果也体现在有关语音信号处理的各项技术之中。
1.3课题研究目的
通过本次课程设计,巩固所学的语音信号处理相关的理论知识,使自己掌握语音信号处理的基本概念、基本理论和基本设计方法,掌握语音信号采集过程以及语音信号传输的特点,同时培养自身分析和解决问题的能力!
1.4软件介绍
1.4.1MATLAB
MATLAB的名称源自于MatrixLaboratory,它是一款科学计算软件,专门以矩阵的形式处理数据。
MATALB将高性能的数值计算和强大的数据可视化功能集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域中的分析、仿真和设计工作等环节,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对原有知识的认识同时,还可以不断完善MATALB产品,以提高自身产品的竞争能力!
MATLAB主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
而且由于MATLAB操作比较简单,上手比较快,深受广大设计人员的喜爱。
1.4.2PRAAT
PRAAT语音学软件,原名PRAAT:
doingphoneticsbycomputer,通常简称PRAAT。
它是一款跨平台的多功能语音学专业软件,主要用于对数字化的语音信号进行分析、标注、处理及合成等实验,同时生成各种语图和文字报表。
PRAAT的主要功能是对自然语言的语音信号进行采集、分析和标注,并执行包括变换和滤波等在内的多种处理任务。
作为分析结果的文字报表和语图,不但可以输出到个人计算机的磁碟文件中和终端的显示器上,更能够输出精致的向量图或点阵图,供写作和印刷学术论文专用。
此外,PRAAT还可用于合成语音或声音、统计分析语言学数据、辅助语音教学测试等等。
随着新版本的发布,PRAAT的功能和用途仍在不断扩展,但实际上多数用户只需要用到其中很少部分的功能。
2.语音信号处理的原理
2.1采样、采样频率及采样位数
由于声音为模拟连续信号,而计算机只能处理数字离散信号,因此要想使用计算机来分析和处理声音,就需要经历模数转换过程[AnalogtoDigitalConverter,即ADC],即将模拟的连续信号转换为数字离散信号。
采样就是按照一定的时间间隔从模拟连续信号提取出一定数量的样本来,其样本值用二进制码0和1来表示,这些0和1便构成了数字音频文件,其过程实际上是将模拟音频信号转换成数字离散信号。
采样频率是指计算机每秒钟采集多少个声音样本,采样频率越高,即采样的间隔时间越短,则在单位内计算机得到的声音样本数据就越多,对声音波形的表示也越精确,即数字信号的保真度越高,但同时占用的存储空间也越大。
奈圭斯特采样定理指出只有当采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成原来的声音。
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放文件时所使用数字声音信号的二进制位数。
采样位数和采集率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要指标。
无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。
采样率越高,计算机社区的图片越多,对于原始音频的还原也越加精确!
2.2时域分析与频域分析
语音信号是一种非平稳、事变、离散性大、信息量大的复杂信号,处理难度很大。
它携带着各种信息。
在语音通信、语音合成、语音识别和语音增强等语音处理中无一例外需要提供语音中包含的各种信息。
只有将语音信号分析成表示其本质特性的参数,才有可能利用这些参数进行高效的语音通信,才能用于语音合成的语音库以及语音识别的模版或知识库。
语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时平均能量,短时平均过零率,短时自相关函数等。
信号的傅立叶表在信号的分析与处理中起着极其重要的作用。
因为对于线性系统来说,可以很方便的确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。
另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项变化。
由于语音信号是随着时间变化的,通常认为语音是一个受准周期脉冲或随机噪声源激励的线性系统的输出。
输出频谱是声道系统频率响应与激励源频谱的乘积。
声道系统的频率响应和激励源,它们都是随时间变化的,因此一般标准的傅立叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。
由于语音信号可以认为在短时间内,近似不变,因而可以采样短时分析法。
2.3数字滤波器
数字滤波器由数字乘法器、加法器和延时单元组成的一种算法或装置。
数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。
数字滤波器是一个离散时间系统(按预定的算法,将输入离散时间信号转换为所要求的输出离散时间信号的特定功能装置)。
数字滤波器有低通、高通、带通、带阻和全通等类型。
它可以是时不变的或时变的、因果的或非因果的、线性的或非线性的。
应用最广的是线性、时不变数字滤波器,以及FIR滤波器。
3.语音信号的录制与采集
对于语音信号的录制与采集主要可以使用两种方法:
使用windows自带录音机录制、使用专业录音工具cooleditpro。
3.1使用window自带录音工具
使用windows自带录音机录制语音文件,进行数字信号的采集。
将话筒输入计算机的语音输入查扣上,启动录音机。
录制一段录音,录音停止后,文件存储器的后缀默认为.Wav。
将录制好文件保存,记录保存路径。
图3.1是基于PC机的语音信号采集过程:
图3.1
3.2CoolEditPro录音操作
打开CoolEditPro软件,通过“文件”菜单下的“新建工程”选项,在弹出的对话框中选择采样频率以及声道;连接好麦克风即可开始录音,具体设置可根据个人要求做不同设置!
图3.2为CoolEditPro录制过程截图:
图3.2
由于没有麦克风,我们采用酷我铃音制作软件将现有的.mp3格式直接转换wav格式。
酷我铃音制作软件设置界面如下图3.3所示:
图3.3
该软件用户界面良好,操作及其简单。
3.3语音信号的读取
在MATLAB软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数。
通过使用wavread函数,理解采样、采样频率、采样位数等概念!
wavread函数调用格式:
y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。
(注意file要打引号,否则会报错)。
[y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。
y=wavread(file,N),读取前N点的采样值放在向量y中。
y=wavread(file,[N1,N2]),读取从N1到N2点的采样值放在向量y中。
用法如下所示:
clear
%ReadthedatabackintoMATLAB,andlistentoaudio.
[y,fs,nbits]=wavread('zhajiawen.wav');
sound(y,Fs);
3.4对语音信号进行采样
语音信号名为zhajiawen,内容为一段歌谣,在command框中输入输入以下程序:
[y,Fs,nbits]=wavread('zhajiawen');
图3.4为运行结果:
图3.4
根据结果可知:
该语音信号的采样频率为44100Hz,采样位数为16bit,存储了6269184*2个数据,乘以2是由于左右声道。
4.语音信号的时域及频域分析
4.1语音信号的时域分析
语音信号的时域分析就是分析和提取语音信号的时域参数。
进行语音分析时,最先接触到并且也是最直观的是它的时域波形。
语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。
时域分析通常用于最基本的参数分析及应用,比如语音的分割、预处理、大分类等。
这种分析方法的特点是:
①表示语音信号比较直观、物理意义明确。
②实现起来比较简单、运算且少。
③可以得到语音的一些重要的参数。
④只使用示波器等通用设备,使用较为简单等。
语音信号的时域参数有短时能量、短时过零率、短时自相关函数和短时平均幅度差函数等,这是语音信号的一组最基本的短时参数,在各种语音信号数字处理技术中都要应用在计算这些参数时使用的海明窗。
时域信号的FFT分析:
FFT即为快速傅氏变换,是离散傅氏变换的快速算法,他是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。
在MATLAB的信号处理工具箱中FFT和IFFT用于快速傅里叶变换和反变换。
函数FFT用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的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进行处理。
4.2语音信号的频域分析
语音信号的频域分析就是分析语音信号的频域特征。
从广义上将,语音信号的频域分析包括语音信号的频谱、功率谱、倒频谱、频谱包络等,而常用的频域分析方法有带通滤波器组法、傅立叶变换法、线性预测法等几种。
因为语音信号是非平稳过程,因此适用于周期、瞬变、或平稳随机信号。
标准傅里叶变换不能直接表示语音信号,而应该用短时傅立叶变换对语音信号的频谱进行分析,相应的频谱成为“短时谱”
把语音信号加载入MATLAB仿真软件平台的工作空间中,然后画出信号的时域波形,然后再对语音信号进行频谱分析。
MATLAB提供了快速傅立叶变换算法FFT计算DFT的函数fft。
在时域内,语音信号具有“短时性”的特点,即在总体上,语音信号的特征是随着时间而变化的,但在一段较短的时间间隔内,语音信号保持平稳。
在浊音段表现出周期信号的特征,在清音段表现出随机噪声的特征。
在频域内,语音信号的频谱分量主要集中在300~3400Hz的范围内。
利用这个特点,可以用一个抗混叠带通滤波器将此范围内的语音信号频率分量取出,然后按8kHz的采样率对语音信号进行采样,就可以得到离散的语音信号。
在command框中输入输入以下程序:
[y,fs,nbits]=wavread('luocaizhi.wav');
sound(y,fs,nbits);%回放语音信号
N=length(y);%求出语音信号的长度
Y=fft(y,N);%傅里叶变换
subplot(2,1,1);
plot(y);title('原始信号时域波形');
subplot(2,1,2);
plot(abs(Y));
title('原始信号频谱')
axis([0,2000000,0,1500]);
以下为运行结果,图4.2.1为时域波形和频谱图
图4.2.1
4.3语谱图
语音的时域分析和频域分析是语音分析的两种重要方法。
显然这两种单独分析的方法均有局限性:
时域分析对语音信号的频率特性没有直观的了解;而频域分析出的特征中又没有语音信号随时间的变化关系:
语音信号是时变信号,所以其频谱也是随时间变化的。
但是由于语音信号随时间变化是很缓慢的,因而在一段短时间内(如10~30ms之间,即所谓的一帧之内)可以认为其频谱是固定不变的,这种频谱又称为短时谱。
短时谱只能反映语音信号的静态频率特性,不能反映语音信号的动态频率特性。
因此,人们致力于研究语音的时频分析特性。
语谱图,英文全称是sonogram或者spectrogram,是一种三维频谱,它是表示语音频谱随时间变化的图形,其纵轴为频率,横轴为时间,任一给定频率成分在给定时刻的强弱用相应点的灰度或色调的浓淡来表示。
用语谱图分析语音又称为语谱分析。
语谱图中显示了大量的与语音的语句特性有关的信息,它综合了频谱图和时域波形的特点,明显地显示出语音频谱随时间的变化情况,或者说是一种动态的频谱。
可以用语谱仪来记录这种谱图。
使用PRAAT软件观察语音luocaizhi.wav的语谱图:
图4.2
由图可见4.2为宽带语谱图,其中横轴坐标为时间,纵轴坐标为频率。
由图可知,该语音信号播放时间带改为142s.
5.语音信号的叠加噪声与频谱分析
5.1噪声的构建
利用MATLAB中的随机函数人(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染的过程,并对被污染后的语音信号进行频谱分析。
(1)MATLAB中的rand函数:
均匀分布的随机数或矩阵
Rand函数产生由在(0,1)之间均匀分布的随机数组成的数组
Y=randn(n)
功能说明:
返回一个n×n随机矩阵。
Y=randn(m,n)
功能说明:
返回一个m×n的随即矩阵
Y=randn(m,n,p…)
功能说明:
产生随机数组
Y=randn(size(A))
功能说明:
返回一个和A有相同尺寸的随机矩阵
Randn()函数默认均值为0,标准差为1。
若想生成均值为1,标准差为2,则需要按照以下格式调用该函数:
r=1+2.*randn(100,1);
(2)构建随机噪声的代码如下:
构建的随机噪声结果如下:
图5.1.1为噪声信号的波形,图5.1.2为噪声信号的频谱
图5.1.1
图5.1.2
5.2语音信号叠加噪声后的语音信号分析
程序代码如下:
叠加噪声后的语音信号分析结果如下:
图5.2.1为加噪后的时域波形和加噪后的频谱图
图5.2.1
从图5.2.1可以看出原始信号叠加噪声过后频带被展宽,存在大量噪声。
6.滤波器的设计及分析
6.1数字滤波器的设计原理
数字滤波是语音信号分析中的重要组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成,可实现多维滤波等优点。
在信号的过滤、检测和参数的估计等方面,经典数字滤波器是使用最广泛的一种线性系统
数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。
数字滤波器有很多种类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲击响应(IIR)滤波器和有限长冲击响应(FIR)滤波器。
从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的滤波器阶数,就可获得高的选择性,所用的存储单元少,所以经济而效率高,但是这个高效率是以相位的非线性为代价的。
选择性越好,则相位非线性越严重。
相反,FIR滤波器却可以得到严格的线性相位,然而由于FIR滤波器传输函数的极点固定在原点,所以只能用较高的滤波器阶数,来达到较高的选择性;对于同样的滤波器设计指标,相比于IIR滤波器,FIR滤波器要满足要求所需的滤波器阶数是它的5~10倍。
结果,成本较高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则IIR滤波器就必须加全通网络进行相位矫正,同样增加滤波器的阶数、复杂性。
设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。
IIR滤波器和FIR滤波器的设计方法完全不同。
FIR滤波器通常采用间接法。
常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。
对于线性相位滤波器,经常采用FIR滤波器。
在MATLAB数字信号处理工具箱中提供了一些滤波器的函数,使FIR滤波器的运算更加方便快捷。
在本论文中,我们主要采用fir1()函数,此函数以经典的方法实现加窗线性相位FIR数字滤波器的设计,可以很方便的设计出低通、高通、带通、带阻滤波器。
IIR滤波器设计方法有间接法和直接法。
间接法:
根据滤波器设计要求,设计模拟原型低通滤波器,然后进行频率变换,将其转换为相应的模拟滤波器(高通、带通等),最后利用冲激响应不变法或双线性变换法,将模拟滤波器数字化成相应的数字滤波器。
原理框图如6.1.1所示:
图6.1.1
在本篇论文中,我们主要采用直接法来设计IIR数字滤波器。
以下函数为MATLAB中提供的相关函数,可以用于IIR和FIR滤波器的实现:
(1)卷积函数conv
调用格式:
c=conv(a,b)
功能描述:
该函数主要计算两向量a和b的卷积,可以直接用于对有限长信号采用FIR滤波器和滤波。
(2)函数filter
调用格式:
y=filter(b,a,x)
功能描述:
该函数采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。
其中向量b和a分别表示系统函数的分子、分母多项式的系数。
如a=1,此时则表示FIR滤波器,否则就是IIR滤波器。
该函数是利用所给出的向量b和a,对x中的数据进行滤波,结果放入向量y中。
(3)函数fftfilt
调用格式:
y=fftfilt(b,x)
功能描述:
该函数是利用基于FFT的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR滤波器有效。
该函数是通过向量b描述的滤波器x数据进行滤波。
在本篇论文中,主要采用fftfilt()函数来实现FIR滤波器对语音信号的滤波。
采用filter()函数对IIR滤波器对语音信号的滤波。
6.2数字滤波器的设计步骤
不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:
(1)按照实际任务的要求,确定滤波器的性能指标。
(2)用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。
根据不同的要求可以用IIR系统函数,也可以用FIR系统函数去逼近。
(3)利用有限精度算法实现系统函数,包括结构选择、字长选择等。
6.3有关滤波器的技术指标:
(1)低通滤波器的性能指标:
fp=3400Hz,fs=3500Hz,As=80db,Rp=1dB
(2)高通滤波器的性能指标:
fp=200Hz,fs=300Hz,As=80dB,Rp=1dB;
(3)带通滤波器的性能指标:
fp1=300Hz,fp2=3400hZ,fs1=200Hz,fs2=3500Hz,As=80dB,Rp=1dB
6.4具体设计
(1)IIR低通滤波器的设计
图6.4.1为IIR低通滤波器:
图6.4.1
(2)IIR高通滤波器的设计
图6.4.2为IIR高通滤波器:
图6.4.2
(3)IIR带通滤波器的设计
图6.4.3为IIR带通滤波器:
图6.4.3
(4)FIR低通滤波器的设计
图6.4.4为FIR低通滤波器:
图6.4.4
(5)FIR高通滤波器的设计
图6.4.5为FIR高通滤波器:
图6.4.5
(6)FIR带通滤波器的设计
图6.4.6为FIR带通滤波器:
图6.4.6
6.5使用滤波器对叠加噪声的语音信号进行滤波
(1)IIR低通滤波器:
图6.5.1为使用IIR低通滤波器对叠加噪声的语音信号进行滤波分析结果:
图6.5.1
(2)IIR高通滤波器
图6.5.2为使用IIR高通滤波器对叠加噪声的语音信号进行滤波分析结果:
图6.5.2
(3)FIR低通滤波器
图6.5.3为使用FIR低通滤波器对叠加噪声的语音信号进行滤波分
图6.5.3
从图6.5.3中可以看出大于3400Hz的频率成分几乎被滤除干净
(4)FIR高通滤波器
图6.5.4为使用FIR高通滤波器对叠加噪声的语音信号进行滤波分析结果:
图6.5.4
7.语音信号的回放
以上六种滤波
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 语音 处理 课程设计