DSP语音论文精.docx
《DSP语音论文精.docx》由会员分享,可在线阅读,更多相关《DSP语音论文精.docx(26页珍藏版)》请在冰豆网上搜索。
DSP语音论文精
第一章语音信号处理概述
1.1语音信号处理简介
语音识别技术以语音信号处理为研究对象,涉及语言学、计算机科学、信号处理、生理学、心理学等诸多领域,是模式识别的重要分支。
该技术有非常广阔的应用前景,从60年代至今,世界许多著名公司不惜投入巨资进行开发研究。
我国的北京大学和中科院声学研究所一直紧跟国际水平,进行汉语语音识别技术的研究工作。
50年代,是语音识别研究工作的开始时期,它以贝尔实验室研制成功可识别十个数字的系统为标志。
60年代,计算机广泛应用于语音识别的研究工作中,动态规划和线性预测分析技术是这一时期的重要成果。
70年代,语音识别的研究取得了突破性进展。
基于线性预测倒谱和动态时间规整技术的特定人孤立语音识别系统被研制成功,提出了矢量量化和隐马尔可夫模型理论。
80年代,语音识别的研究工作进一步深入。
其标志是人工神经元网络在语音识别中的成功应用。
90年代,随着计算机技术的飞速发展,语音识别正从研究走向实用,其研究成果已达到相当高的水平。
2000年,正象美国微软公司总裁所说的那样,语音识别技术将使计算机丢掉键盘和鼠标。
这无疑将改变我们许多人的工作和生活方式。
1.2语音信号处理的前景
尽管语音识别的研究工作迄今已近50年,但仍未有突破性进展,主要原因如下:
语音识别系统的适应性差。
全世界有近百种官方语言,每种语言有多达几十种方言,同种语言的不同方言在语音上相差悬殊,这样,随着语言环境的改变,系统性能会变得很差。
在强噪声干扰环境下语音识别困难。
由于语音数据大部分都是在接近理想的条件下采集的,语音识别的编码方案在研制时都要在高保真设备上录制语音,尤其要在无噪环境下录音。
然而,当语音处理由实验室走向实际应用时,环境噪声的存在所带来的问题就变得越来越重要。
特别是线性预测作为语音处理技术中最有效的手段,恰恰是最容易受噪声影响的。
体态语言难以识别。
有人在讲话时习惯用眼神、手势、面部表情等动作协助表达自己的思想。
由于这种体态语言的含义与个人习惯、文化背景、宗教信仰及生存地域等因素有关,其信息提取非常困难。
对于人类由中枢神经控制的记忆机理、听觉理解机理、联想判断机理等,人们目前仍知之甚少。
1.3语音识别系统
根据对说话人说话方式的要求,可分为孤立词语音识别系统,连接词语音识别系统和连续语音识别系统。
根据对说话人的依赖程度,可分为特定人语音识别系统和非特定人语音识别系统。
根据词汇量大小,可分为小词汇量、中等词汇量、大词汇量及无限词汇量语音识别系统。
孤立单词识别系统,孤立单词指单词之间有停顿,这可使识别问题大为简化。
因为单词的端点检测(即检测单词的起点和终点)比较容易,而且单词之间协同发音影响可减至最低。
此外,一般对孤立单词发音比较认真,由于单词之间必须有停顿,读起来就不能太流利。
鉴于以上原因,孤立单词识别系统存在的问题最少,其许多技术可以用于单词挑选和连续语音识别系统。
连续语音识别系统有两个重要问题是孤立单词识别系统所没有的:
切分,即对单词之间边界位置的确定。
因为语言中短语的数量太大,对整个短语进行识别显然是不可能的,必须把输入的语流切分为更小的组成部分。
这就要求系统必须能够识别单词之间的边界。
这一点比较困难,因为确定单词之间的边界位置没有现成的方法。
发音变化,即关联语言的发音比孤立单词发音更随便,受协同发音的影响更为严重。
解决上述问题通常采用扩展动态时间规整技术。
语音理解一词出自美国远景研究计划局资助的一个庞大的连续语音识别研究项目,其目标称为语音理解系统。
众所周知,只有人才能很好地识别语音,因为人对语音有广泛的知识,人对要说的话有预见性和感知分析能力,因此,指望机器对语言的识别能力超过人是不现实的,最好的办法是使机器也能“理解”语言,并且能象人一样运用这种理解力。
由于在人工智能领域对知识的应用和知识的表示问题更加感性趣,这对语音识别来说无疑是有力地鼓舞。
运用这种理解力可以指望系统:
能排除噪声和嘈杂声(即含糊不清或无关的语言);
能理解上下文的意思并能用它来纠正错误,澄清不确定的语义;
能够处理不合语法或不完整的语句。
由此看来,语音理解系统的主要问题是知识的表示和系统的组织问题。
与其它语音处理问题相比,该系统更加依赖于人工智能研究。
1.4语音识别的关键技术
语音识别的关键技术包括特征参数提取技术、模式匹配准则及模型训练技术、语音识别单元选取。
特征参数提取技术:
所谓特征参数提取,就是从语言信号中提取用于语音识别的有用信息。
研究人员已对许多可以表征说话人个人特征的语音特征进行了探讨,大多数特征选取方案不是试图集中在声道构造的个体差异方面,就是试图集中在说话习惯的个人特征方面。
特征参数提取所考虑的参数为:
(1)单词中选定位置上的基音;
(2)鼻辅音的频谱特性;
(3)选定元音的频谱特性;
(4)激励频谱的估计斜率;
(5)擦音的频谱特性;
(6)选定元音的时长;
(7)选定语言环境中提前发声的存在。
采用试验句进行录音时所考虑的特征参数为:
元音的共振峰频率和共振峰带宽以及声门源的极点(由12阶线性预测分析来计算);鼻辅音中极点频率的位置;选定实验句的基音轮廓;时变特性,尤其是在复合?
音的整个发音期间和音位的收尾阶段第二共振峰的变化率。
线性预测分析是应用较广的特征参数提取技术,其核心是由信号的过去值预测其将来值。
线性预测的概念早在本世纪40年代就已被提出,然而将其应用于语音识别,不仅希望利用其预测功能,而且要求它为我们提供一个非常好的声道模型,而这样的声道模型对于理论研究和实际应用都是相当有用的。
此外,声道模型的优良性能不仅意味着线性预测是语音编码的特别合适的编码方法,而且意味着预测参数是语音识别的非常重要的信息来源。
模式匹配及模型训练技术:
模式匹配是指根据一定准则,使未知模式与模型库中某一模型获得最佳匹配。
模型训练是指按照一定准则,从大量已知模式中提取表示该模式特征的模型参数。
语音识别所应用的模式匹配和模型训练技术有:
动态时间规整技术、隐马尔克夫模型、人工神经网络。
ANN在语音识别中的应用是目前研究的热点。
该网络本质上是一个自适应非线性动力学系统,模拟了人类大脑神经元活动的基本原理,具有学习、记忆判断、联想、对比、推理、概括等能力。
与HMM和ANN相比,DTW是较早的一种模式匹配和模型训练技术,它应用动态规划法成功地解决了在语音信号特征参数序列比较时时长不等的难题,在孤立词语音识别中获得了良好的性能。
但由于它不适合连续语音大词汇量语音识别系统,目前已被HMM和ANN所代替。
语音识别单元的选取是语音识别研究工作很重要的第一步,语音识别单元有单词、音节、音素三种,具体选哪种,由研究任务决定。
单词单元适用于中小词汇语音识别系统,不适合于大词汇系统。
因为庞大的模型库意味着繁重的模型训练任务和复杂的模型匹配算法,这难以满足实时性要求。
音节单元多见于汉语识别,主要因为汉语是单音节结构的语言,而英语等语言是多音节。
如果不考虑声调的话,汉语大约有400个音节,这个数量相对较少。
所以,对于大词汇量汉语语音识别系统而言,以音节为识别单元是较为合适的。
音素单元多用于英语语音识别研究,因为英语是多音节语言。
但大、中词汇汉语语音识别系统也在越来越多地采用。
毫无疑问,飞速发展的计算机技术推动了语音识别技术的突破性进展,语音识别技术又反过来作用于计算机。
假如微软公司的语音识别技术真正能使计算机彻底丢掉键盘和鼠标的话,这将不仅是计算机发展史上的又一场革命,而且将改变我们的生活。
第二章系统设计
2.1语音信号的短时分析
实验目的:
在理论学习的基础上,进一步地理解和掌握语音信号短时分析的意义,短时时域分析的基本方法;进一步理解和掌握语音信号短时平均能量函数及短时平均过零数的计算方法和重要意义。
实验原理及方法:
一定时宽的语音信号,其能量的大小随时间有明显的变化。
其中清音段(以清音为主要成份的语音段),其能量比浊音段小得多。
短时过零数也可用于语音信号分析中,发浊音时,其语音能量约集中于3kHz以下,而发清音时,多数能量出现在较高频率上,可认为浊音时具有较低的平均过零数,而清音时具有较高的平均过零数,因而,对一短时语音段计算其短时平均能量及短时平均过零数,就可以较好地区分其中的清音段和浊音段,从而可判别句中清、浊音转变时刻,声母韵母的分界以及无声与有声的分界。
这在语音识别中有重要意义。
2.2分析语音信号的短时谱特性
实验目的:
熟悉语音信号的短时分析特性;画出对一个语音信号的短时频谱;比较窗长、窗口形状对语音短时谱的影响。
周期性声门波可表示为:
u[n]=g[n]*p[n](2-1)
其中,g[n]是声门波的单周期的波形,p[n]是间隔为P的周期采样序列。
当u[n]通过线性非时变声道,且该声道的单位冲击响应为h[n]时,声道输出为:
x[n]=h[n]*(g[n]*p[n])(2-2)
为了观察一段语音,需要将声道输出乘以一个以时刻τ为中心的窗函数w[n,τ],即得到:
x[n,τ]=w[n,τ]{h[n]*(g[n]*p[n])}(2-3)
这段语音信号的频域表达式为:
(2-4)
即语音信号的谱包络为
语谱图就是显示时变频谱幅度特征的图形表达式为
(2-5)
语谱图分析语音又称语谱分析,与谱图中显示了大量的语音的语句特性有关的信息,它综合了频谱图和时域波形的优点,明显地显示出语音频谱随时间的变化情况。
预铺土实际上是一种三维频谱,即同时在实践和频率上显示出语音的特性,或者说是一种动态的频谱。
窄带语谱图可以得到较好的频域分辨率(即以较窄的频域间隔观察频域上的正弦波成分),窗长通常为至少两个基音周期的“长窗”;而宽带语谱图可以给出较好的时域分辨率(即以较窄的时域间隔观察时域波动),窗长为小于一个基音周期的“短窗”。
2.3语音信号倒谱与复倒谱的分析
实验目的:
熟悉语音信号求其倒谱与复倒谱的方法;计算一段语音信号的频谱、倒谱与复倒谱,并进行相应的比较;比较由加窗语音信号求得的对数幅度谱与倒谱域滤波后得到的对数幅度谱的各自特点。
实验内容:
上机前用Matlab语言完成程序编写工作;程序应具有加窗(分帧)、计算、以及绘制曲线等功能;上机实验时先调试程序,通过后进行信号处理;对录入的语音数据进行处理,并显示运行结果;依据曲线对该语音段进行所需要的分析,并作出结论。
2.4运用自相关方法估计语音信号的声道参数
实验目的:
理解线性预测分析方法原理,掌握其经典解法中的自相关法,理解lpc谱的特点。
实验原理及方法:
由均方预测误差最小的得到正则方程
(2-6)
其中,
(2-7)
在最佳解时的误差为
(2-8)
在自相关法中变为
(2-9)
(2-10)
由式4-4可列出方程组式4-6
(2-11)
解方程组式4-6求出线性预测系数,通过误差式4-5可求出增益G
(2-12)
2.5基音周期检测实验
实验目的:
理解基音检测方法原理;掌握其经典检测方法中的自相关法、中心消波法、三电平中心消波法的算法实现过程并对比检测效果。
实验内容:
实验数据为浊音语音信号speech1_10k(10000样点/秒),用25ms的汉明窗对语音信号speech1_10k进行加窗处理,并画出所得到的加窗信号的自相关函数;用根据中心消波法及三电平中心消波法原理改进程序;对比中方法基音检测的效果并分析结果。
2.6语音信号增强实验
实验目的:
语音增强是解决噪声污染的一种有效方法,它的一个主要目标是从带噪语音信号中提取尽可能纯净的原始语音,语音增强目前已发展成为语音信号数字处理的一个重要分支;理解语音增强的原理,掌握滤波器法实现语音增强的方法。
实验原理及方法:
噪声来源于实际的应用环境,因而其特性变化很大。
噪声可以是加性的,也可以是非加性的。
对于非加性噪声,有些可以通过变换转变为加性噪声。
例如,乘积性噪声或卷积性噪声可以通道同态变换而成为加性噪声。
通过直接变换频谱可以消除噪声的周期性成分,这可以用数字信号处理的方法来实现。
变换滤波器如图15-2(a)所示。
信号要经过离散傅里叶变换(DFT),变换到频域,在领域进行处理,然后用反变换IDFT来重建语音信号。
图2—1通过频谱整型消去周期性噪声
图2—1(b)所示为频谱整形器,它可以是简单的一系列选通门。
它可将噪声成分变换到零值,则反变换后的信号周期性干扰将被滤除。
同态滤波法的关键部分具有非线性处理性质,它应用于语音识别中,着眼于将语音信息(基音、频谱)中的乘性噪声或干扰分离,或者将已减少了噪声、干扰的信息重新合成得到降噪时域信号再进行识别。
同态滤波法的原理框图如图2—2所示,在傅里叶变换所得到的复倒谱中基音信息明显地出现,故可将其经适当时窗再作平滑、滤波及博里叶变换得到降噪处理后的共振峰等。
它们可作为识别用的特征。
也可以令其与得到的音调信号合成以还原成降噪的语音信号,然后进入识别系统作其他的特址提取相识别。
图2—2非线性处理中的同态滤波法框图
第三章界面设计及调试
3.1运行后的主界面
本次课程设计为应用MATLAB软件的GUI工具设计DSP语音信号实验工具箱,工具箱功能:
短时分析、短时谱特性、倒谱与复倒谱、估计语音声道参数、基因周期检测、信号增强、端点检测。
运行后的主界面如图3-1所示。
图3—1运行后的主界面
3.2短时分析
实验内容:
上机前用Matlab语言完成程序编写工作;程序应具有加窗(分帧)、计算、以及绘制曲线等功能;上机实验时先调试程序,通过后进行信号处理;对录入的语音数据进行处理,并显示运行结果;依据曲线对该语音段进行所需要的分析,并作出结论;改变窗的宽度(帧长),重复上面的分析内容。
短时分析如图3-2所示
图3-2短时分析
3.3短时谱特性
实验内容:
上机前用Matlab语言完成程序编写工作;程序应具有加窗(分帧)、计算、以及绘制曲线等功能;录入语音数据并进行处理;使用函specgram_ex3p19.显示语谱图和语音波形。
对比调用参数窗长20ms(200点)、帧间隔1ms(10点)和参数窗长5ms(50点)、帧间隔1ms(10点);再对比窗长>20ms或小于5ms,以及帧间隔>1ms时的语谱图说明宽带语谱图、窄带语谱图与时频分辨率的关系及如何得到时频折中。
图3—3短时谱特性
3.4倒谱与复倒谱
实验内容:
上机前用Matlab语言完成程序编写工作;程序应具有加窗(分帧)、计算、以及绘制曲线等功能;上机实验时先调试程序,通过后进行信号处理;对录入的语音数据进行处理,并显示运行结果;依据曲线对该语音段进行所需要的分析,并作出结论。
图3—4倒谱与复倒谱
3.5估计语音声道参数
实验内容:
实验数据为浊音语音信号speech1_10k(10000样点/秒),用25ms的汉明窗对语音信号speech1_10k进行加窗处理,并画出所得到的加窗信号的自相关函数;用4个极点描述声道特性,利用在1处得到的部分结果建立自相关矩阵Rn;通过矩阵求逆解出线性预测系数;画处得到的如下模型的频率相应的对数幅度谱:
(2-13)
将你得到的结果与加窗信号的傅里叶变换的对数幅度谱进行比较,二者有何异同?
改变极点个数(>=6)并得到其对数幅度谱,与上边两频谱进行对比,说明lpc谱估计的特点,即其与极点个数的关系。
图3—5估计语音声道参数
3.6基因周期检测
实验内容:
实验数据为浊音语音信号speech1_10k(10000样点/秒),用25ms的汉明窗对语音信号speech1_10k进行加窗处理,并画出所得到的加窗信号的自相关函数;用根据中心消波法及三电平中心消波法原理改进程序;对比中方法基音检测的效果并分析结果。
图3—6基因周期检测
3.7信号增强
实验内容:
实验数据为浊音语音信号ah01.wav或者ah02.wav(10000样点/秒),用25ms的汉明窗对语音信号ah01.wav或者ah02.wav进行加窗处理;设计产生噪声信号,并对噪声信号做出估计;对原始语音信号和噪声信号处理,产生带噪语音信号;使用滤波器法消除噪声信号,达到语音增强之目的。
图3—7信号增强
3.8端点检测
实验内容:
实验数据为浊音语音信号speech1_10k(10000样点/秒),用25ms的汉明窗对语音信号speech1_10k进行加窗处理,并画出所得到的加窗信号的自相关函数;用根据中心消波法及三电平中心消波法原理改进程序;对比中方法基音检测的效果并分析结果。
图3-8端点检测
第四章总结与心得
课程设计对于我们可不是一件简单的事情啊!
可是当设计做出来了之后,那点累那点苦又算得了什么呢!
看到劳动成果时,真是别有一番滋味在心头啊!
世上无难事,只怕有心人,的确如此。
通过这几周的实践锻炼了我们运用C语言编辑程序的能力,学到了比以前跟多的知识,虽然在实践中遇到一些棘手的问题,但是在老师细心的指导下,我们都顺利地完成了。
这些天我们所取的成绩与老师的细心指导是密不可分的,在此我向老师表示真诚的感谢。
实践锻炼了我们独立思考的能力与独立解决问题的能力,积累了很多的实践经验。
这对我们今后学习与工作都给与莫大的帮助。
这几周的学习,使我能独立完成系统的简单程序设计,并解决在程序调试中发现的问题,培养了我们的自学能力和分析解决问题的能力,也培养了我们的编程技巧,达到了理论和实践相结合的目的。
实践使我对MATLAB软件产成了浓厚的兴趣,它加强了我的动手能力和实际编程能力,具有很强的应用性。
光书本的知识的确不行,还是要理论联系实践才行,只有大脑中有了经验,在碰到问题的时候才有许多解决的方案,然后才能去尝试,因此不断的练习是必要的.完成这个课程设计,我的自信一下子提高了,这次体验为以后的学习语音信号处理的相关知识打下基础,最后设计出自己想要的结果,这过程艰辛,但只要你持之以恒,就会有成功的可能!
附录源代码
functionvarargout=untitled(varargin)
%UNTITLEDM-fileforuntitled.fig
%UNTITLED,byitself,createsanewUNTITLEDorraisestheexisting
%singleton*.
%
%H=UNTITLEDreturnsthehandletoanewUNTITLEDorthehandleto
%theexistingsingleton*.
%
%UNTITLED('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinUNTITLED.Mwiththegiveninputarguments.
%
%UNTITLED('Property','Value',...)createsanewUNTITLEDorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforeuntitled_OpeningFcngetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtountitled_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelpuntitled
%LastModifiedbyGUIDEv2.502-Jul-200509:
59:
16
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@untitled_OpeningFcn,...
'gui_OutputFcn',@untitled_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforeuntitledismadevisible.
functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstountitled(seeVARARGIN)
%Choosedefaultcommandlineoutputforuntitled
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakesuntitledwaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure1);
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=untitled_OutputFcn(hObject,eventdat